| name | guardian-multisig-proposal-lifecycle |
|---|---|
| description | Implement, debug, and validate proposal lifecycle changes across the Rust and TypeScript multisig SDKs and their example harnesses. Use when Codex touches proposal creation, listing, signing, readiness, execution, import or export, offline signing, sync behavior, threshold counting, or `SwitchGuardian` flows. |
Use this skill for high-risk multisig workflow changes. Keep the Rust and TypeScript SDKs behaviorally aligned and verify the user-visible flow in at least one upstream example surface.
Read the current workflow surface before editing:
AGENTS.mdcrates/miden-multisig-client/src/client/proposals.rscrates/miden-multisig-client/src/client/offline.rscrates/miden-multisig-client/src/proposal.rscrates/miden-multisig-client/src/execution.rspackages/miden-multisig-client/src/multisig/proposal/execution.tspackages/miden-multisig-client/src/multisig/proposal/parser.tspackages/miden-multisig-client/src/proposal/metadata.tsexamples/demo/src/actions/proposal_management.rsexamples/smoke-web/src/smokeHarness.tsreferences/workflow-matrix.md
- Identify the stage being changed.
Classify the work as:
- proposal creation
- proposal parsing or metadata
- signature collection
- readiness or threshold logic
- execution and ack integration
- export, import, or offline signing
- post-execution sync or state verification
- Inspect both Rust and TypeScript implementations for the same stage. If the workflow exists in both stacks, do not change one in isolation without at least confirming whether the other must also move.
- Preserve lifecycle invariants.
Use
references/workflow-matrix.mdas the checklist for what must remain true. - Update the nearest example surface.
examples/demofor Rust flow verificationexamples/smoke-webandexamples/webfor browser flow verification
- Check documentation impact when lifecycle behavior, public SDK methods, proposal metadata, offline/import/export format, or example startup changes.
Start with
docs/MULTISIG_SDK.md, affected example docs, and the Documentation Impact Check inAGENTS.md. - Validate the minimal affected path first, then expand to adjacent risky paths.
- Do not silently change threshold semantics.
- Do not hide fallback from online to offline flows. Fallback must stay explicit.
- Keep proposal identifiers and metadata stable across export and import.
- Treat
SwitchGuardianas a distinct path. Do not generalize offline execution claims beyond what the current code supports. - Preserve Rust and TypeScript naming and behavior parity unless the divergence is intentional and documented.
- Fail fast on malformed signature, commitment, or metadata data rather than coercing it.
Default targeted checks:
cargo test -p miden-multisig-client
cd packages
npm ci
npm run build -w @openzeppelin/guardian-client
npm test -w @openzeppelin/miden-multisig-clientThen expand as needed:
cargo test -p guardian-clientorcd packages && npm test -w @openzeppelin/guardian-clientif the change crosses the GUARDIAN client boundarycargo test -p guardian-democd examples/smoke-web && npm run typecheck && npm run buildcd examples/web && npm run buildsmoke-test-rust-multisig-sdksmoke-test-ts-multisig-sdk
Report:
- proposal stages touched
- Rust files updated
- TypeScript files updated
- example surfaces updated or checked
- docs checked or updated
- lifecycle invariants preserved
- targeted tests and smoke coverage
- gaps or skipped paths