Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
37554ef
fix(docs): fix local builds with earthly and Just
stevenj Aug 26, 2025
6bb0cf8
fix(docs): Remove CDDL from checks until we actually have it
stevenj Aug 26, 2025
cd10d41
feat(docs): wip
stevenj Sep 9, 2025
e726684
Merge remote-tracking branch 'origin/main' into feat/voting-formats
stevenj Sep 9, 2025
fe8c093
fix(docs): wip, but should fix cue errors
stevenj Sep 11, 2025
3e10d10
Merge branch 'main' into feat/voting-formats
stevenj Sep 11, 2025
ac1b2a9
fix(docs): spelling
stevenj Sep 11, 2025
51e2732
Merge branch 'feat/voting-formats' of github.com:input-output-hk/cata…
stevenj Sep 11, 2025
e921e2d
fix(docs): format
stevenj Sep 11, 2025
1f5d567
fix(docs): markdown
stevenj Sep 11, 2025
da6f7dc
Merge branch 'main' into feat/voting-formats
stevenj Sep 12, 2025
d69558a
fix(docs): regenerated
stevenj Sep 12, 2025
2ee389a
fix(docs): make the check target work properly after `cue vet` broke
stevenj Sep 12, 2025
b0a95e7
Merge branch 'feat/voting-formats' of github.com:input-output-hk/cata…
stevenj Sep 12, 2025
ad0a98e
Merge branch 'main' into feat/voting-formats
stevenj Sep 12, 2025
4e8ac97
fix(docs): markdown
stevenj Sep 12, 2025
65b90a4
Merge branch 'feat/voting-formats' of github.com:input-output-hk/cata…
stevenj Sep 12, 2025
3d21ca2
fix(docs): fix format
stevenj Sep 12, 2025
62cad47
feat(docs): wip
stevenj Sep 24, 2025
0c89327
Merge branch 'main' into feat/voting-formats
stevenj Oct 30, 2025
2fdc737
fix(docs): key derivation docs render
stevenj Oct 31, 2025
1e154c9
fix(docs): wip contest ballot/register generation
stevenj Oct 31, 2025
ad47d0e
docs(docs): Voter Ballot seems finished
stevenj Nov 3, 2025
ff3ea29
docs(docs): Add the ballot checkpoint design specification to the docs
stevenj Nov 4, 2025
6e9b4b3
Merge branch 'main' into feat/voting-formats
stevenj Nov 4, 2025
0b25974
fix(docs): cue formatting
stevenj Nov 4, 2025
fbdb265
Merge branch 'feat/voting-formats' of github.com:input-output-hk/cata…
stevenj Nov 4, 2025
4b7d3ce
fix(docs): Markdown format now indent changed
stevenj Nov 4, 2025
f0a4a78
docs(docs): Generalize sub-section page creation WIP
stevenj Nov 4, 2025
827a127
docs(docs): Preserve historical jormungandr vote transaction informat…
stevenj Nov 4, 2025
e223c2e
docs(docs): remove obsoleted documentation to provide better clarity
stevenj Nov 4, 2025
82c353b
docs(docs): doc cleanup wip
stevenj Nov 4, 2025
f968d2a
fix(docs): spelling
stevenj Nov 4, 2025
9547a27
fix(docs): markdown and spelling issues
stevenj Nov 4, 2025
839261a
fix(docs): cue format
stevenj Nov 4, 2025
14753cf
fix(docs): Fix markdown
stevenj Nov 4, 2025
8243479
fix(docs): More markdown fixes
stevenj Nov 4, 2025
ea3e952
fix(docs): more markdown fixes
stevenj Nov 4, 2025
a88909d
fix(rust): add bulleting board operator to admin roles
stevenj Nov 5, 2025
1ac4d63
fix(rust): Fix documentation on user and admin role types in rust
stevenj Nov 5, 2025
a68dfaf
docs(docs): WIP Parameters heirarchy and discovery
stevenj Nov 5, 2025
f3cbf89
docs(docs): wip
stevenj Nov 5, 2025
7c98e5f
Merge branch 'main' into feat/voting-formats
stevenj Nov 5, 2025
afeb1f0
fix(docs): WIP
stevenj Nov 5, 2025
47b2019
fix(general): Revert cat-ci bump which breaks the build
stevenj Nov 5, 2025
8181b2c
fix(docs): Further revert cat-ci to last actual working version.
stevenj Nov 5, 2025
0ebb62c
fix(rust): revert deny.toml to match cat-ci
stevenj Nov 5, 2025
b380e33
fix(general): Try patched cat-ci with python on top of debian
stevenj Nov 6, 2025
8f846d3
Merge branch 'revert/earthly' into feat/voting-formats
stevenj Nov 6, 2025
b5a4f6e
Merge branch 'main' into feat/voting-formats
stevenj Nov 6, 2025
6944f43
fix(general): Promote python base2 to just python-base
stevenj Nov 6, 2025
f47ebd4
fix(general): Fix CI branch name
stevenj Nov 6, 2025
8d7caac
Merge branch 'main' into feat/voting-formats
stevenj Nov 6, 2025
4cc0da0
docs(docs): fix spelling
stevenj Nov 6, 2025
d01d9f5
docs(docs): remove proposals info from specs for now
stevenj Nov 6, 2025
72d5fac
Merge branch 'main' into feat/voting-formats
stevenj Nov 6, 2025
591f688
Merge branch 'main' into feat/voting-formats
stevenj Nov 6, 2025
d3dc599
fix(rust): Don't validate the contents of the CDDL because we can't v…
stevenj Nov 7, 2025
f9fb91c
fix(rust): Stop broken test case from failing build
stevenj Nov 7, 2025
cc24f6d
fix(rust): skip failing tests
stevenj Nov 7, 2025
302c37e
fix(rust): remove unused cbork dependency for now
stevenj Nov 7, 2025
258367d
fix(docs): format
stevenj Nov 7, 2025
cdd85b8
docs(docs): Add link to main branch documentation in the Readme.md
stevenj Nov 7, 2025
25101f0
feat(rust/signed-doc): Set the tagged version of `catalyst-signed-doc…
Mr-Leshiy Nov 7, 2025
17ab8ab
docs(docs): WIP
stevenj Nov 7, 2025
06baaa4
Merge branch 'feat/voting-formats' of github.com:input-output-hk/cata…
stevenj Nov 7, 2025
e23777e
docs(docs): wip
stevenj Nov 7, 2025
09b67a0
docs(docs): Proposals flow done
stevenj Nov 7, 2025
279957a
Merge branch 'main' into feat/voting-formats
stevenj Nov 7, 2025
f214b7c
Merge branch 'main' into feat/voting-formats
stevenj Nov 8, 2025
358e2b9
fix(rust): Latest standard configs
stevenj Nov 8, 2025
6e3ae4d
Merge branch 'feat/voting-formats' of github.com:input-output-hk/cata…
stevenj Nov 8, 2025
810ac86
fix: python version comment
stevenj Nov 9, 2025
f515e70
fix: Python fixes
stevenj Nov 9, 2025
ce947a4
fix(general): python lint issues
stevenj Nov 10, 2025
ec6fa52
fix(rust): Make sure coverage files don't end up in git
stevenj Nov 10, 2025
7092b78
fix(general): Bump to released cat-ci with python updates for docs
stevenj Nov 10, 2025
572e906
docs(docs): Further explain how submission actions and moderation int…
stevenj Nov 18, 2025
e99c973
docs(docs): Add high level query guidance for proposal submission act…
stevenj Nov 18, 2025
e29afc4
docs(docs): expand docs for submission signing
stevenj Nov 18, 2025
55b6868
fix(docs): make spell checking faster by not copying useless data
stevenj Nov 18, 2025
a51ed3e
Merge branch 'main' into feat/more-doc-usage-details
stevenj Nov 18, 2025
becdf30
fix(rust): Missing CI bump
stevenj Nov 18, 2025
541d6dd
docs(docs): Add diagram to help explain the document type sequence
stevenj Nov 18, 2025
3bb5dd1
fix(docs): link
stevenj Nov 18, 2025
d1f890d
docs(docs): Add WIP drafts of the drep and voting document guides
stevenj Nov 18, 2025
38565c1
fix(docs): check validation
stevenj Nov 18, 2025
62c750a
fix(docs): markdown format
stevenj Nov 18, 2025
ad02c93
fix(docs): spec check issues
stevenj Nov 18, 2025
83e1828
fix(docs): Add drep registration and delegation process docs
stevenj Nov 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .config/dictionaries/project.dic
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ ciphertexts
Coap
codegen
codepoints
Collab
connexa
coti
coverallsapp
Expand Down
2 changes: 2 additions & 0 deletions .earthlyignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.git
**/target
95 changes: 95 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# AGENTS – Guidelines for Automated Assistants

This file provides repo‑wide guidance for automated coding assistants working in
`catalyst-libs`.
It applies to the entire repository unless a more specific
`AGENTS.md` exists in a subdirectory.

## General Principles

* Make **small, targeted changes** that directly address the user’s request.
* Prefer **clarity and correctness** over cleverness; do not refactor broadly
unless explicitly asked.
* Keep existing project structure, naming, and file layout intact unless there
is a strong reason to change it.
* When in doubt about intent (spec vs implementation vs docs), **ask the user**
rather than guessing.

## Documentation & Specs

* For architecture/spec docs under `docs/src/architecture` that have a matching
Jinja source under `specs/generators/pages`, treat the **Jinja template as the
source of truth**.
* Example: if both
`specs/generators/pages/signed_doc/voting_process/foo.md.jinja` and
`docs/src/architecture/08_concepts/signed_doc/voting_process/foo.md`
exist, edit the `.md.jinja` file, not the generated `.md`.
* Follow existing Markdown style:
* Respect the “one sentence per line” convention where it is used.
* Keep headings, link styles, and admonitions consistent with nearby text.
* When adding terminology that is likely to trigger the spell checker, add it
to `.config/dictionaries/project.dic` in **sorted order**.
* If the user asks for validation, suggest or run (with their consent):
* `just check-markdown`
* `just check-spelling`

## Python (spec generators and tooling)

* Python code lives primarily under `specs/generators` and is linted/formatted
with `ruff` (see `ruff.toml`).
* Conform to the existing style:
* Use double quotes for strings.
* Keep line length within the configured limit.
* Do not introduce new global `ignore` rules in `ruff.toml` unless the user
requests it.
* Where sensible, keep functions small and focused; avoid introducing new
dependencies without discussing with the user.
* When the user wants checks run, prefer:
* `just format-python-code`
* `just lint-python`

## Rust Workspace

* The Rust workspace is in `rust/`.
Follow the existing module layout and
crate boundaries; do not split or merge crates without explicit direction.
* Match the existing style and patterns:
* Use `cargo fmt` / the configured `fmtfix` and lint commands indirectly
via `rust/Justfile` where possible.
* Avoid adding new crates to the workspace unless clearly justified.
* For validation, and only when the user is ready for longer commands, suggest
or run:
* `cd rust && just code-format`
* `cd rust && just code-lint`
* `cd rust && just pre-push` (heavier, CI‑like checks)

## CUE/CDDL Specs and Generated JSON

* Specification source is primarily in `specs/definitions` (CUE, CDDL, etc.).
Treat these as **normative** and make changes carefully and incrementally.
* Where both a CUE definition and a JSON spec exist (e.g. `specs/signed_doc.json`),
assume the JSON is **generated** from the CUE/source definitions.
* Prefer editing the source definitions and let the project’s existing
tooling regenerate derived artifacts.
* Do not hand‑edit large generated JSON files unless explicitly instructed.

## Earthly, Just, and CI

* This repo uses Earthly (`Earthfile`s) and `just` for repeatable workflows.
* Respect the intended execution context:
* Targets or functions marked as `LOCALLY` are meant to run on the host, not
inside container builds.
* Do not try to retrofit such targets into containerized steps without a
clear reason and user confirmation.
* When adding new Earthly targets or Just recipes, mirror the style of
existing ones and keep names short and descriptive.

## Things to Avoid

* Do not:
* Change licensing files, `CODE_OF_CONDUCT.md`, or security policies.
* Introduce breaking API changes (in Rust or Python) without calling that
out explicitly to the user.
* Mass‑reformat the entire repo; limit formatting to files you touch.
* Avoid speculative “cleanup” in areas unrelated to the user’s request, even
if you notice possible improvements; mention them in your summary instead.
2 changes: 1 addition & 1 deletion Earthfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ VERSION 0.8
IMPORT github.com/input-output-hk/catalyst-ci/earthly/mdlint:v3.6.1 AS mdlint-ci
IMPORT github.com/input-output-hk/catalyst-ci/earthly/cspell:v3.6.1 AS cspell-ci
IMPORT github.com/input-output-hk/catalyst-ci/earthly/python:v3.6.1 AS python-ci
IMPORT github.com/input-output-hk/catalyst-ci:v3.6.0 AS cat-ci
IMPORT github.com/input-output-hk/catalyst-ci:v3.6.1 AS cat-ci

FROM debian:stable-slim

Expand Down
18 changes: 18 additions & 0 deletions docs/src/architecture/08_concepts/signed_doc/docs/proposal.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,24 @@ from the [`collaborators`](../metadata.md#collaborators) list.
All versions of the document *MUST* list the author as the original author.
The Author can not be changed by any document revision.

Any Proposal that lists a collaborator is an invitation for that collaborator to participate in the proposal.
They are considered to have accepted that invitation for **all** versions of the proposal that
list them as a collaborator where their latest
[Proposal Submission Action](proposal_submission_action.md) for that proposal has an `action` of
`draft` or `final`.

If a collaborator’s latest [Proposal Submission Action](proposal_submission_action.md) for the
proposal has an `action` of `hide`, they **MUST** be treated as not having agreed to collaborate
for **any** version of that proposal (past, present, or future) until they later submit `draft`
or `final` again.

However, any `final` [Proposal Submission Action](proposal_submission_action.md)
referencing a proposal **MUST** be published by all collaborators
listed on the specific version being submitted, in addition to the author.

The `final` proposal itself may be signed by one or more Collaborators and/or the original Author.
The `final` proposal must never be signed by anyone else.

### Business Logic

#### Front End
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,16 @@ for the same document.
Unless they all submit the same version of the proposal
the proposal will not be seen as submitted.

The required set of signers for a submitted proposal version is:

* The original author of the proposal (the signer of the first version where
[`id`](../metadata.md#id) == [`ver`](../metadata.md#ver)); and
* Every collaborator listed in [`collaborators`](../metadata.md#collaborators) on the **exact**
version of the proposal referenced by [`ref`](../metadata.md#ref).

They may jointly sign a single Proposal Submission Action, or may submit multiple independent
Submission actions for the same document (which avoids the need for multi-sig coordination).

The payload is a fixed format.

<!-- markdownlint-disable max-one-sentence-per-line -->
Expand Down Expand Up @@ -52,20 +62,30 @@ they can take appropriate action, such as:
* Remove themselves permanently as a collaborator by publishing a new version with them removed.

To eliminate the necessity for collaborators to accept collaboration on every version,
they will be considered as agreeing to be a collaborator on any version of the document
that lists them, if their latest submission is `draft` or `final`.
they will be considered as agreeing to be a collaborator on **any** version of the proposal that
lists them in [`collaborators`](../metadata.md#collaborators), if their latest submission for that
proposal is `draft` or `final`.

If their latest submission on a document is `hide` they should be considered to not
have agreed to be a collaborator.
If their latest submission on a proposal is `hide` they **MUST** be considered to not have agreed
to be a collaborator for **any** version of that proposal (past, present, or future) until they
submit a new `draft` or `final` action.

*NOTE* `final` status ONLY applies to the exactly referenced document and version.

#### Back End

A Submitted proposal with collaborators *MUST* have
a `final` submission by *ALL* listed [`collaborators`](../metadata.md#collaborators).
If any `collaborator` has not submitted a `final` submission by the deadline, then the proposal
is not considered `final` and will not be considered in the category it was being submitted to.
A Submitted proposal with collaborators *MUST* have, by the configured deadline:

* A `final` submission from the author; and
* A `final` submission from **every** collaborator listed in
[`collaborators`](../metadata.md#collaborators) on the version of the proposal
referenced by [`ref`](../metadata.md#ref); and
* No required signer whose latest submission for that proposal is `hide`.

If any required collaborator has not submitted a `final` submission for that proposal
version by the deadline, or if any required signer’s latest submission is `hide`,
then the proposal is not considered `final` and will not be considered in the
category it was being submitted to.

## [COSE Header Parameters][RFC9052-HeaderParameters]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@ title: Voting Process
nav:
- Parameters Hierarchy and Pub/Sub Discovery: parameters_hierarchy_and_discovery.md
- Proposals, Templates, and Pub/Sub Discovery: proposals_templates_and_discovery.md
- dRep Delegation, Nominations, and Discovery: drep_delegation_and_discovery.md
- Voting, Bulletin Board, and Pub/Sub Tally: voting_bulletin_board_and_pubsub_tally.md
- Voting Protocol Cryptography Schema: crypto.md
- Jörmungandr Voting Transaction (Historical): jormungandr_vote_format_historical.md
Loading