ICN State (living doc)
Current status (2026-05-15 snapshot)
Current phase: Phase 2 — Pilot Launch. NYCN is the intended first cooperative partner (active partnership track, not yet a formally committed pilot). The next concrete step is presenting the merged drive-ingest ladder + ICN proof-loop machinery + the now-complete architecture-spec ladder to NYCN organizers. Subsequent gates are pilot formalization, then first operator rehearsal against real (or fixture-equivalent) organizer material. The exact gate definition lives in the partner NYCN repo. The Phase 2 machinery is in place end-to-end at the runtime layer; the contract layer is now substantially richer at the design-level after the May-14/May-15 architecture-spec sprint. What remains is the human procedure — present, formalize, rehearse — and recording each step, plus the implementation work the closure batch's follow-up roster names.
The 2026-05-14 → 2026-05-15 architecture-spec sprint landed thirteen design-level spec PRs plus one process-doc PR plus one wrap-up PR (fifteen PRs total): #1814 integrated cooperative operating model spine, #1819 accepted-proposal effect dispatch contract (closed #1797 on merge), #1820 institutional domain and policy primitive, #1821 CCL policy registry and hook contract, #1822 governed service binding / workload manifest / runtime provider, #1823 storage durability policy objects, #1824 ArtifactRegistry v0 and ScopedVault boundary, #1825 entity-scope vocabulary boundary (LocalDomain not Coop), #1826 compute placement policy, #1827 reconciled the AGENTS.md handoff path with the actual template convention, #1829 network anti-entropy proof loops, #1830 member shell v0, #1831 steward cockpit v0, #1832 steward cockpit drift fix (four rounds of post-merge fixes addressing late reviewer feedback that landed after #1831 merged), and #1833 architecture-spec sprint closure-review wrap-up. After #1833 merged, the nine remaining sprint-related sibling issues were closed at the docs/spec level: #1794, #1795, #1798, #1799, #1801, #1815, #1816, #1817, #1818. The first batch of follow-up issues from the wrap-up's deduplicated roster was filed (#1834–#1840): three schema follow-ups (AntiEntropyProbe/StateDigest, DivergenceEvidence/RepairPlan, PlacementDecision/ExecutorAdmissionDecision), the steward required-action card contract (#1837 — the ADR-0027-doesn't-cover-operator-scenarios gap surfaced by #1831 / #1832), and three first-slice fixture follow-ups (anti-entropy Slice A, member shell Slice A, cockpit Slice A). Twenty-seven additional follow-up drafts remain in the wrap-up doc's deduplicated roster for separate batch decisions.
No closure of any sprint sibling issue implies runtime-implementation completion: every closure comment names the docs/spec-level scope explicitly. The deferred items (DataLocality::CoopReplicated rename, FuelLimit/fuel_limit code-level alignment with the execution budget policy-facing term, payment_rate/payment_currency legacy reconciliation on ComputeTask, PrivacyClass taxonomy reconciliation between ADR-0030 and the in-code variants, bonds:payments gossip-topic legacy preservation, AGENTS.md auto-commit-handoff behavioral rule reconciliation) are all carried in the wrap-up roster and remain explicit out-of-scope for the sprint closure. Phase 2 status is unchanged; the sprint did not implement, deploy, or claim partner pilot.
The prior May-7 close-out cycle context is preserved below.
The May-7 close-out cycle landed: #1761 closed the surfaced sled-flusher race (#1760), #1762 truth-synced STATE.md and PHASE_PROGRESS.md for the opaque receipt storage stack, #1763 / #1735 bumped Dependabot dev dependencies, and #1764 published the generic ActionCard contract surface for institution packages (bundled fictional example + draft-2020-12 validator script + expanded README mirroring the convention used by validate-preview-review.py and validate-rehearsal-evidence.py). #1764 closed #1713 with all six acceptance criteria met. No schema fields changed; the schema's $id remains DNS-backed under the schema-id audit's retain-temporarily decision (#1742 tracks the 2026-06-30 review). Phase 2 status is unchanged.
Active execution since the previous sync is mixed: the May-5 sequence was entirely doc/control-plane (#1734 rehearsal evidence export schema; #1739 architecture due-diligence checklist; #1741 contract schema-identifier audit; #1743 organizer/member accessibility gate definition; #1745 preview/review read-model contract urn:icn:contract:preview-review:v1; #1747 idea-0019 Institutional Process Substrate framing brief; #1748 coordination/control milestone for spine composition; #1749 read-model fixture-walk dogfood slice for idea-0019 plus the new ops/ideas/README.md "Dogfood slice variants" section; #1751 idea-0020 Democratic Authority Primitives framing brief; #1753 read-model fixture-walk dogfood slice for idea-0020); the May-6/May-7 sequence is runtime/implementation truth, not doc/refinery — real Rust changes landed in icn-gateway and apps/governance. The first runtime dogfood emitting one of the eight named ProcessTransitionReceipt classes from the idea-0019 framing brief landed as #1755 (ProcessGateResultReceipt), surfacing a production durability gap on the sled-backed ReceiptStore because no opaque storage path existed without expanding gateway typed governance imports. The opaque receipt storage stack (#1757 → #1758 → #1759) closed that gap: the gateway gained a meaning-blind put_opaque / get_latest_opaque / list_opaque_for primitive keyed on (class, key1, key2_opt, recorded_at, record_hash) (#1757); the GovernanceReceiptBackend trait gained a fail-closed opaque method surface and the sled-backed ReceiptStore overrode it via thin delegates to its inherent opaque methods (#1758); and put_process_gate_result's trait default was rewritten to attempt the opaque cascade first and fall back to the explicit process_gate_result_backend_not_implemented sentinel only when the underlying put_opaque itself returns the opaque-not-implemented sentinel (#1759). Production gateway-backed ReceiptStore therefore now durably persists ProcessGateResultReceipt through the opaque cascade without any new typed governance import on icn-gateway. A new invariant landed inside the merge cycle: the OPAQUE_HASH_BIND_PREFIX keyspace binds each (class, record_hash) to exactly one canonical (key1, key2_opt, recorded_at) tuple at first write; divergent re-binds abort with stable sentinel opaque_record_hash_index_collision to prevent one canonical receipt from fanning out across multiple audit chains. Bind, primary-record, and secondary-index writes are enforced atomically inside a single sled transaction. CI on #1759 surfaced a pre-existing sled-flusher race on the unrelated test_commons_charter_survives_sled_drop_and_reopen integration test (sled 0.34's flusher thread holds the OS flock(LOCK_EX) past Db::drop); filed as issue #1760 with corrected diagnosis and a follow-up bounded-retry fix opened on fix/commons-sled-open-retry-on-wouldblock as PR #1761 (merged 2026-05-07; closed #1760). Carrying forward: rehearsal evidence export schema (#1734); architecture due-diligence checklist (#1739); contract schema-identifier audit (#1741); organizer/member accessibility gate definition (#1743); preview/review read-model contract urn:icn:contract:preview-review:v1 (#1745); idea-0019 framing brief (#1747) + read-model fixture-walk dogfood (#1749); idea-0020 framing brief (#1751) + read-model fixture-walk dogfood (#1753). Carrying forward: institutional-operability runtime (live charter activation, person-directory overlay, /me/standing, authority_scope plumbing) plus the action-card runtime (/me/action-cards endpoint with proof-loop linkage to GovernanceDecisionReceipt for proposal/vote, ActionItemCompletionReceipt for action_item/complete, and MeetingAttendanceReceipt for meeting/attend). The action-item completion-receipt retrieval endpoint shipped as #1675; the local HTTP proof loop closure is documented in #1676 and the K3s smoke proof closure is recorded in #1677. NYCN's drive-ingest operator ladder (NYCN #21–#28 in fahertym/nycn) is merged end-to-end, with subsequent NYCN #29–#32 also merged. The May-5 process-substrate and authority-primitive sequence is documentation/refinery only: no runtime executes; no kernel, gateway, ledger, governance, or SDK code changed; no new contract URN beyond urn:icn:contract:preview-review:v1 (#1745) was minted; no implementation issue was opened from #1748; and a read-model fixture walk does not satisfy receipt-backed promotion thresholds per ops/ideas/README.md § "Dogfood slice variants". Democratic Authority Primitives now has both pieces of its idea-refinery surface: framing brief landed in #1751 as idea-0020 with brief at ops/ideas/framing/democratic-authority-primitives.md, and the read-model fixture-walk dogfood slice landed in #1753 at ops/ideas/dogfood/democratic-authority-primitives-mvp.md. The dogfood slice composes the six DAP primitive families named in the framing brief's §17 follow-up (AuthorityBasis, ParticipationRole, FacilitatorSummary, ConflictDisclosure, MinorityReport, DeliberationContext exercising three of its twelve reference families: CharterRuleReference, PriorDecisionReference, AccessibilityNote) plus references OperatorExecutionAuthority as the strictly-downstream-of-decision operator handle at the activation gate, all attached end-to-end to the merged idea-0019 read-model fixture walk without modifying any kernel, runtime, gateway, ledger, governance, SDK, or contract file. Both DAP framing (#1751) and DAP read-model dogfood (#1753) are pre-RFC framing/refinery only; together they do not claim runtime validity, do not emit receipts, do not contact gateway, do not create schema, do not create a contract URN, do not promote to RFC, do not open implementation issues, do not start runtime dogfood, and do not claim Phase 2 completion, formal NYCN pilot, production readiness, or live federation. Per ops/ideas/README.md § "Dogfood slice variants" and per the DAP framing brief's §16.1, the read-model fixture walk does NOT satisfy receipt-backed promotion thresholds; promotion of idea-0020 to RFC still requires (1) a separate runtime dogfood that emits at least one receipt under ADR-0026 for one of the named primitives — the framing brief's §16.1 names a ConflictDisclosure accept receipt and a MinorityReport recorded receipt generically; the dogfood artifact references slice-local class candidates ConflictDisclosureAcceptedReceipt and MinorityReportRecordedReceipt at the right transition points but does not commit them as canonical, (2) a real visibility/privacy-boundary run with redaction in evidence export, (3) an accessibility-gate ProcessGateResult produced through docs/design/ORGANIZER_MEMBER_ACCESSIBILITY_GATE.md on a real surface, and (4) Q1 (AuthorityBasis polymorphism vs typed family) or Q5 (ConflictDisclosure and MinorityReport placement) resolved in writing (deferral is not sufficient for the RFC gate per §16.1; the resolved-or-deferred standard at §16.3 applies only to the broader runtime-justification threshold). Next pre-RFC architecture move is not yet selected; this sync deliberately preserves optionality for the next session rather than smuggling in a new commitment. The prior sync (post-#1751) named the DAP read-model composition slice as the most directly named candidate; #1753 has now landed it, so the candidate enumeration is reduced. The candidate next moves the next session may pick from, listed descriptively only: (a) DAP runtime dogfood emitting at least one receipt under ADR-0026 for one DAP primitive — the next artifact called for by the slice's promotion gate; (b) idea-0019 runtime dogfood emitting additional ProcessTransitionReceipt classes (the first — ProcessGateResultReceipt — landed in #1755 and is durably persisted via the opaque cascade since #1759; remaining candidates are ProcessSessionOpenedReceipt, DeliberationEntryRecordedReceipt, DecisionRecordedReceipt, ActivationCrossedReceipt, MutationPlanRecordedReceipt, MutationAppliedReceipt, EvidencePacketProducedReceipt — all eligible through the same opaque storage cascade); (c) idea-0019 visibility/privacy-boundary run with redaction in evidence export (one of four #1748 acceptance gates); (d) idea-0019 accessibility-gate ProcessGateResult produced through docs/design/ORGANIZER_MEMBER_ACCESSIBILITY_GATE.md on a real surface (one of four #1748 acceptance gates); (e) idea-0019 open-question triage: at least one of Q1 (ProcessTargetRef polymorphism), Q3 (DeliberationEntry kind taxonomy), or Q4 (HumanDecisionSet vs proposal/vote) resolved or explicitly deferred in writing (one of four #1748 acceptance gates); (f) one of the DAP §17 follow-up framing briefs — pre-RFC, decompose-only (CCL hook-point catalog; expert/advisory across institution types; conflict object model connecting ConflictDisclosure to idea-0016/ADR-0029; federation tally semantics composing RepresentationMandate with #1609; delegation runtime gated on #1632); (g) control-plane cleanup, including unresolved/stale review-thread hygiene if inspection confirms it. None is selected here. Phase model classification is unchanged; see PHASE_PROGRESS.md for phase definitions.
Recently merged (since 2026-04-15)
| PR | Title | Merged |
|---|---|---|
| #1833 | docs(dev): wrap architecture spec sprint closure review | 2026-05-15 |
| #1832 | fix(spec): correct steward cockpit review drift | 2026-05-15 |
| #1831 | docs(spec): define steward cockpit v0 | 2026-05-15 |
| #1830 | docs(spec): define member shell v0 | 2026-05-15 |
| #1829 | docs(spec): define network anti-entropy proof loops | 2026-05-15 |
| #1827 | docs(agents): reconcile handoff path with template | 2026-05-15 |
| #1826 | docs(spec): define compute placement policy | 2026-05-15 |
| #1825 | docs(architecture): define entity-scope vocabulary boundary | 2026-05-15 |
| #1824 | docs(spec): define ArtifactRegistry v0 and ScopedVault boundary | 2026-05-15 |
| #1823 | docs(spec): define storage durability policy objects | 2026-05-14 |
| #1822 | docs(spec): define governed service binding, workload manifest, and runtime provider | 2026-05-14 |
| #1821 | docs(spec): define CCL policy registry and hook contract | 2026-05-14 |
| #1820 | docs(spec): define institutional domain and policy primitive | 2026-05-14 |
| #1819 | docs(spec): add accepted-proposal effect dispatch contract | 2026-05-14 |
| #1814 | docs(architecture): add integrated cooperative operating model spine | 2026-05-14 |
| #1764 | docs(contracts): publish ActionCard contract for institution packages | 2026-05-07 |
| #1763 | deps(ts-sdk): bump the dev-dependencies group across 1 directory with 4 updates | 2026-05-07 |
| #1735 | deps(pilot-ui): bump @axe-core/playwright in /web/pilot-ui | 2026-05-07 |
| #1762 | docs(state): sync opaque receipt storage stack landing | 2026-05-07 |
| #1761 | fix(commons): retry sled open on WouldBlock to bridge flusher shutdown | 2026-05-07 |
| #1759 | feat(governance): route ProcessGateResultReceipt through opaque storage cascade | 2026-05-07 |
| #1758 | feat(governance): expose opaque storage on GovernanceReceiptBackend trait | 2026-05-07 |
| #1757 | feat(gateway): add meaning-blind opaque receipt storage primitive | 2026-05-06 |
| #1756 | chore(hooks): fix scope-guard/todo-guard exec bit and todo-guard pipeline | 2026-05-06 |
| #1755 | feat(governance): add first process-transition receipt runtime slice | 2026-05-06 |
| #1754 | docs(state): sync Democratic Authority Primitives read-model dogfood landing | 2026-05-06 |
| #1753 | docs(ideas): add read-model dogfood slice for Democratic Authority Primitives (idea-0020) | 2026-05-05 |
| #1752 | docs(state): sync Democratic Authority Primitives landing and agent handoff | 2026-05-05 |
| #1751 | docs(ideas): name Democratic Authority Primitives (idea-0020 + framing brief) | 2026-05-05 |
| #1750 | docs(state): sync process substrate landings and agent handoff | 2026-05-05 |
| #1749 | docs(ideas): add read-model dogfood slice for Institutional Process Substrate (idea-0019) | 2026-05-05 |
| #1747 | docs(ideas): name Institutional Process Substrate (idea-0019 + framing brief) | 2026-05-05 |
| #1745 | docs(contracts): define preview review contract | 2026-05-05 |
| #1743 | docs(design): define organizer member accessibility gate | 2026-05-05 |
| #1741 | docs(contracts): audit schema identifiers | 2026-05-05 |
| #1739 | docs(architecture): codify due-diligence checklist | 2026-05-04 |
| #1734 | docs(contracts): define rehearsal evidence export schema | 2026-05-04 |
| #1733 | docs(state): sync no-CLI and website cleanup tranche | 2026-05-04 |
| #1732 | docs(website): align README with current civic design system | 2026-05-04 |
| #1725 | docs(pilots): add no-CLI organizer/member rehearsal workflow spec | 2026-05-04 |
| #1701 | docs(state): sync May-cycle project truth | 2026-05-02 |
| #1700 | chore: unify dev environment setup into scripts/bootstrap.sh | 2026-05-02 |
| #1699 | fix(compute): bump wasmtime for RUSTSEC-2026-0114 | 2026-05-02 |
| #1698 | ci: bump actions/setup-node from 4 to 6 | 2026-05-02 |
| #1697 | ci: bump actions/checkout from 4 to 6 | 2026-05-02 |
| #1696 | ci: bump actions/github-script from 8 to 9 | 2026-05-02 |
| #1695 | ci: bump softprops/action-gh-release from 2 to 3 | 2026-05-02 |
| #1694 | docs(architecture): add sovereign service hosting stack | 2026-05-02 |
| #1693 | docs(licensing): add autonomy-focused strategy matrix | 2026-05-02 |
| #1691 | docs(project-index): add generated repo record snapshot | 2026-05-01 |
| #1690 | docs(project-index): add full repo record protocol | 2026-05-01 |
| #1688 | docs(rfcs): RFC-0017 draft → active (Tool Install Infrastructure) | 2026-05-01 |
| #1686 | docs(licensing): document current license metadata and open questions | 2026-05-01 |
| #1678 | docs(state): sync to post-#1675/#1677 and post-NYCN-#28 reality | 2026-04-29 |
| #1665 | deps(ts-sdk): bump the dev-dependencies group in /sdk/typescript with 2 updates | 2026-04-29 |
| #1677 | docs(dev): record K3s NYCN action-item receipt proof path | 2026-04-29 |
| #1676 | docs(dev): record action-item completion receipt endpoint | 2026-04-29 |
| #1675 | feat(governance): add completion-receipt endpoint for action items | 2026-04-29 |
| #1663 | feat(governance): add meeting attendance receipts | 2026-04-27 |
| #1662 | docs(state): record action-card runtime landing (#1659/#1660/#1661) | 2026-04-27 |
| #1661 | feat(governance): add action item completion receipts | 2026-04-27 |
| #1660 | feat(governance): connect action cards to receipts | 2026-04-27 |
| #1659 | feat(gateway): add member action cards endpoint | 2026-04-27 |
| #1658 | docs(sync): record ICN Academy repo creation | 2026-04-27 |
| #1656 | docs(site): add curated docs pathways | 2026-04-27 |
| #1637 | docs: reframe feedback doctrine and canonicalize ADR location | 2026-04-26 |
| #1630 | feat(governance): plumb authority_scope through assign_role end-to-end | 2026-04-25 |
| #1627 | feat(governance): add GET /me/standing read model | 2026-04-25 |
| #1626 | feat(governance): person-directory overlay for bootstrap role assignment | 2026-04-25 |
| #1625 | fix(coop): release sled db lock before reopen test | 2026-04-25 |
| #1624 | feat(governance): live charter activation endpoint | 2026-04-25 |
| #1622 | docs(strategy): institutional ecosystem arc — NYCN as first ecosystem seed | 2026-04-24 |
| #1621 | fix(governance): persist domains across gateway restart in standalone mode | 2026-04-24 |
| #1620 | fix(web): derive steward dashboard gateway URL from request context | 2026-04-24 |
| #1619 | feat(infra): add soft pod anti-affinity for ICN daemons | 2026-04-23 |
| #1618 | feat(ci): add Atlas-backed sccache setup for ci-runner | 2026-04-23 |
| #1617 | fix(bootstrap): treat remaining create conflicts as idempotent | 2026-04-22 |
| #1616 | docs(monitoring): document Helm access path for kube-prometheus-stack upgrade | 2026-04-22 |
| #1614 | fix(monitoring): move Prometheus to Atlas-backed persistent storage | 2026-04-22 |
| #1593 | docs(nycn): live-validate bootstrap apply and rewrite runbook | 2026-04-19 |
| #1592 | test(icnctl): NYCN bootstrap apply integration tests | 2026-04-19 |
| #1591 | fix(gateway): colon-safe proposal index keys with one-shot migration | 2026-04-19 |
| #1590 | fix(governance): close residual acceptance-closure atomicity hazards | 2026-04-18 |
| #1586 | feat(governance): add generic institution bootstrap package path | 2026-04-18 |
Recently merged (2026-04-15 snapshot, retained)
| PR | Title | Merged |
|---|---|---|
| #1547 | feat(governance): notification digest + action-item/meeting events | 2026-04-15 |
| #1546 | docs(dev): session handoff 2026-04-15 | 2026-04-15 |
| #1545 | docs(strategy): correct NYCN-Institutional-Design entity tree | 2026-04-15 |
| #1544 | docs(strategy): NYCN repo-shaped architecture spec + matrix + tranches | 2026-04-15 |
| #1543 | feat(governance): Meeting management primitive | 2026-04-15 |
| #1542 | chore(security): fix Security Audit CI failure | 2026-04-14 |
| #1540 | feat(governance): institutional structure + event model (Tranche 2, part 1) | 2026-04-14 |
| #1534 | docs(strategy): NYCN federation charter draft (CCL YAML) | 2026-04-14 |
| #1533 | feat(governance): consent-based decision mode | 2026-04-14 |
| #1532 | feat(governance): decision-to-action bridge | 2026-04-14 |
| #1529 | chore(repo): add GitHub Sponsors funding button | 2026-04-14 |
| #1527 | fix(ci): add timeout-minutes to docker-build-deploy jobs | 2026-04-11 |
| #1526 | docs: full refresh — archive 21 stale files | 2026-04-11 |
| #1525 | docs(architecture): Constitutional Genesis | 2026-04-11 |
| #1524 | fix(ci): add has_rust dual-signal guard | 2026-04-11 |
Open PRs
| PR | Title |
|---|
(none open at this sync write-time; verified via gh pr list --state open returning []. Dependabot may surface follow-on bumps automatically.)
Open implementation follow-ups at this sync:
| Issue | Title |
|---|
(none — #1760 was closed by the #1761 merge.)
Open coordination/control issues at this sync (not implementation):
| Issue | Title |
|---|---|
| #1748 | milestone(process): define Institutional Process Substrate (epic:arch-invariants + type:spec) |
| #1746 | milestone(showcase): make NYCN organizer rehearsal operable before first presentation |
| #1744 | ci(review): make substantive AI review findings merge-gating |
What landed since Phase 1 (Charter Engine)
ActionCard contract publication for institution packages (added 2026-05-07; doc/control-plane only — no runtime change, no schema fields changed, no new contract URN, no new ADR, no new RFC):
- Bundled fictional example landed at
docs/contracts/institution-package/action-card.example.json— a single representativeproposal/voteActionCardwith all required fields plus optionaldeadlineanddomain_id. Uses fictional ids (prop-example-2026-05-07-001,domain-example-fictional-cooperative); contains no NYCN-specific nouns. Validates against the existing schema. — #1764. - Tiny draft-2020-12 JSON Schema validator landed at
docs/scripts/validate-action-card.py. Mirrors the existing convention used byvalidate-preview-review.pyandvalidate-rehearsal-evidence.py. Defaults to validating the bundled example; accepts a partner-side card path positional; supports--schemafor pinned-version validation. CLI argument iscard/DEFAULT_CARD(terminology aligned with the schema, ADR-0027, README, and runtime struct after a substantive Copilot review finding addressed pre-merge). Stdlib-onlyformat: date-timeandformat: uricheckers registered for symmetry with the other contract validators (the action-card schema does not currently use either format; future format additions will be enforced without touching this file). — #1764. docs/contracts/institution-package/README.mdexpanded — #1764: Files table now lists the schema + example + validator. Stability section cites ADR-0027 § Card kind taxonomy ("growable by ADR amendment") to explain why"x-icn-status": "rfc"is honest, and documents the schema's current DNS-backed$idretention perdocs/contracts/schema-id-audit.md(review by 2026-06-30 tracked by #1742; migration tourn:icn:contract:action-card:v<N>is a separate single-schema PR under audit §5 rules). Validation guidance now includes the explicit emitted-vs-gated source kind enumeration with tracking issues (signal_rule→ #1631 / #1711;obligation_lifecycle→ #1634 / #1712), the regulatory-safe vocabulary list (obligation, allocation, settlement, unit, position, receipt, provenance, evidence — explicitly not payment / wallet / balance / currency), the explicit "institution-specific semantics belong in institution packages, not in ICN core" boundary, a worked CLI command block for the new validator, and partner-package vendor-or-invoke-from-CI guidance.docs/registry.toml— #1764:last_updatedandlast_reviewedadvanced 2026-05-04 → 2026-05-07 for the institution-package README entry;descriptionrefreshed to mention the new example, validator, and schema-id-audit retention decision.- Closes #1713: all six acceptance criteria met by the merged PR (generic ActionCard schema exists and matches current runtime fields; honest stability/status marker; source kinds distinguish shipped vs gated variants; NYCN-specific nouns absent; regulatory-safe vocabulary preserved; package validation path documented for NYCN and future institution packages). Manually closed after merge with a comment enumerating each gate met by the merged PR. The schema and ADR-0027 existed before this PR; #1764 added only the example, validator, README expansions, and registry metadata.
- Hard rule preserved: this publication does NOT change the schema fields, does NOT mint a new contract URN, does NOT add new ADR / RFC content, does NOT touch runtime code, does NOT widen gateway typed governance imports, does NOT increase the meaning-firewall ratchet, does NOT touch K3s / DNS / Forgejo state, does NOT handle private partner data, does NOT claim Phase 2 completion, does NOT claim formal NYCN pilot, does NOT claim production readiness, does NOT claim live federation, and does NOT start any Stage 1.5 / Stage 2 / Stage 3 / Stage 4 / Stage 5 work.
May-7 close-out cycle (added 2026-05-07; doc/control-plane and dependency maintenance only, plus one runtime fix):
- Sled-open retry-on-
WouldBlockshipped — #1761 (closed #1760). Bounded retry-with-backoff inSledCommonsStore::open(8 attempts max, 500ms total budget cap, 10ms initial backoff, only matchesio::ErrorKind::WouldBlockso genuine errors are not masked). Two new unit tests pin the new behavior. Single-file change inicn/crates/icn-commons/src/store.rs. Diagnosis was corrected pre-merge from initial actor-drop hypothesis to sled-flusher-flock-shutdown. - Truth-sync of opaque receipt storage stack landing — #1762. Records #1755/#1756/#1757/#1758/#1759 in
docs/STATE.mdanddocs/PHASE_PROGRESS.md. Addsdocs/dev/handoff-2026-05-07.md. Doc/control-plane only. - Dependabot dev-dependency maintenance — #1763 (
sdk/typescript/, four updates) and #1735 (web/pilot-ui/,@axe-core/playwright4.11.2 → 4.11.3). No runtime change.
Opaque receipt storage stack (added 2026-05-06 → 2026-05-07; runtime/implementation truth — real Rust changes in icn-gateway and apps/governance; no firewall ratchet increase; no new typed governance imports on icn-gateway):
- First runtime dogfood emitting one of the eight named
ProcessTransitionReceiptclasses from theidea-0019framing brief landed as #1755 (feat(governance): add first process-transition receipt runtime slice). AddsProcessGateResultReceipt, emitted byGovernanceManager::record_process_gate_result, persisted through theGovernanceReceiptBackendtrait. Surfaced a production durability gap on the sled-backedReceiptStorebecause no opaque storage path existed without expanding gateway typed governance imports — addressed by the #1757 → #1758 → #1759 stack. - Meaning-blind opaque receipt storage primitive landed at
icn/crates/icn-gateway/src/receipt_store.rs— #1757. Addsput_opaque(class, key1, key2_opt, recorded_at, record_hash, payload)plusget_latest_opaqueandlist_opaque_forinherent methods onReceiptStore. The gateway stores payloads under a caller-supplied(class, key1, key2_opt, recorded_at, record_hash)tuple without learning the typed shape; the apps layer is the single source of truth for the closed taxonomy of class strings. Adding a new receipt class becomes a one-file change in apps. Three substantive review findings addressed incb9d6dafbefore merge (write-once-by-hash on the primary record with stable sentinelopaque_record_hash_collision; atomic primary + secondary index writes via single sled transaction; distinctkey2 = Nonevskey2 = Some("")tag-byte encoding; deterministic(recorded_at, record_hash)tie-breaker). One additional codex P2 raised againstcb9d6dafand addressed ina8fbb1a6before merge: the newOPAQUE_HASH_BIND_PREFIXkeyspace binds each(class, record_hash)to exactly one canonical(key1, key2_opt, recorded_at)tuple at first write; divergent re-binds abort with stable sentinelopaque_record_hash_index_collision. Bind, primary, and secondary writes are enforced atomically inside the same sled transaction. - Opaque storage exposed on the
GovernanceReceiptBackendtrait aticn/apps/governance/src/receipt_backend.rs— #1758. Addsput_opaque/get_latest_opaque/list_opaque_forto the trait surface, each with a fail-closed default returning the stable sentinelopaque_storage_not_implemented. The sled-backedReceiptStoreoverrides them via thin delegates to its inherent opaque methods. Existing typed test backends are unaffected; opaque methods are only exercised when callers explicitly route through them. Validates dynamic dispatch via aBox<dyn GovernanceReceiptBackend>round-trip test. ProcessGateResultReceiptrouted through opaque storage cascade — #1759. Updates the trait default forput_process_gate_resultto attempt the opaque cascade first (encoding the typed envelope as JSON, callingput_opaquewith class"process_gate_result",key1 = session_id,key2 = Some(gate_kind), the typedrecorded_atandrecord_hash), and to surface the explicitprocess_gate_result_backend_not_implementedsentinel only when the underlyingput_opaqueitself returns the opaque-not-implemented sentinel. Production gateway-backedReceiptStoretherefore now durably persistsProcessGateResultReceiptthrough the opaque cascade. Test-backend coverage: a newOpaqueOnlyBackendoverrides onlyput_opaqueand exercises the typed-default → opaque cascade end-to-end. Test-suite determinism follow-up was applied in the same PR (Copilot review): three tests previously usedstd::thread::sleep(Duration::from_millis(1100))to forcerecorded_atto advance one second between writes — replaced with explicit, strictly-increasingrecorded_attimestamps on directly-constructedProcessGateResultReceiptvalues fed through the backend trait. Suite now finishes in 0.01s, deterministic.- New invariant:
OPAQUE_HASH_BIND_PREFIXkeyspace inicn/crates/icn-gateway/src/receipt_store.rs. Each(class, record_hash)is bound to exactly one canonical(key1, key2_opt, recorded_at)tuple. Divergent re-binds abort with stable sentinelopaque_record_hash_index_collision. Closes a secondary-index fan-out hole that the original write-once-by-hash check onOPAQUE_REC_PREFIXdid not catch. Bind, primary, and secondary writes are atomic inside the same sled transaction. - Surfaced flake → real bug filed and fix opened: a pre-existing race on
test_commons_charter_survives_sled_drop_and_reopen(sled 0.34's flusher thread holds the OSflock(LOCK_EX)pastDb::drop) fired on #1759's CI Test job. Filed as issue #1760 with corrected diagnosis (initial actor-drop hypothesis was wrong;CommonsHandleis synchronousArc<RwLock<CommonsInner>>with no spawned tasks). Fix opened as PR #1761 (fix(commons): retry sled open on WouldBlock to bridge flusher shutdown) — bounded retry-with-backoff inSledCommonsStore::open, 8 attempts max, 500ms total budget cap, 10ms initial backoff, only matchesio::ErrorKind::WouldBlockso genuine errors (NotFound, PermissionDenied, etc.) are not masked. Two new unit tests pin the new behavior. Open at this sync write-time. - Hook tooling fix: scope-guard / todo-guard exec bit + todo-guard pipeline failures observed in earlier sessions resolved in #1756. Repository tooling only; no runtime, contract, schema, or API change.
- Hard rule preserved: this stack does NOT widen gateway typed governance imports, does NOT increase the meaning-firewall ratchet (baseline 10 known violations preserved, 0 new), does NOT claim Phase 2 completion, does NOT claim formal NYCN pilot, does NOT claim production readiness, does NOT claim live federation, does NOT touch K3s/DNS/GitHub/Forgejo state, does NOT handle private partner/member/organizer data, and does NOT satisfy more than acceptance gate (a) of
idea-0019(#1748) — the visibility/privacy-boundary run, accessibility-gateProcessGateResulton a real surface, and open-question triage gates remain open.
Democratic Authority Primitives read-model fixture-walk dogfood (added 2026-05-05; doc/control-plane and idea-refinery only, not runtime; no kernel, gateway, ledger, governance, or SDK code touched):
- Read-model fixture-walk dogfood slice for
idea-0020landed atops/ideas/dogfood/democratic-authority-primitives-mvp.mdalongside anops/ideas/ideas.yamlrow update — #1753. Read-model fixture-walk variant perops/ideas/README.md§ "Dogfood slice variants" (formalized in #1749). Composes the six DAP primitive families named in the framing brief's §17 follow-up (AuthorityBasis,ParticipationRole,FacilitatorSummary,ConflictDisclosure,MinorityReport,DeliberationContext— the latter exercising three of its twelve reference families:CharterRuleReference,PriorDecisionReference,AccessibilityNote) end-to-end against the mergedidea-0019read-model fixture walk (ops/ideas/dogfood/institutional-process-substrate-mvp.md). WalksStep 0throughStep 7of the existingidea-0019slice without re-describing the spine; only DAP primitive additions are recorded. ReferencesOperatorExecutionAuthorityas the strictly-downstream-of-decision operator handle at the activation gate (Step 5), typed to point at theDecisionRecordplus theProcessGateResultset plus the steward'sRoleAssignment. Composes orthogonally withidea-0019: the spine names what gets processed; the primitives fill the spine's records with the authority and context typing the spine deliberately deferred. Emits no receipts, contacts no gateway, performs no mutation, introduces no new contract URN, modifies no kernel/runtime/contract/schema/ADR file. Receipt class candidatesFacilitatorSummaryRecordedReceipt,ConflictDisclosureAcceptedReceipt, andMinorityReportRecordedReceiptare referenced at the right transition points as slice-local candidates only — the framing brief's §16.1 names aConflictDisclosureaccept receipt and aMinorityReportrecorded receipt generically without attaching concrete class identifiers, and the slice does not commit any of these names as canonical. Perops/ideas/README.md§ "Dogfood slice variants" and per the DAP framing brief's §16.1, a read-model fixture walk does NOT satisfy receipt-backed promotion thresholds; promotion ofidea-0020to RFC still requires (1) a separate runtime dogfood emitting at least one receipt underADR-0026for one of the named primitives, (2) a real visibility/privacy-boundary run with redaction in evidence export, (3) an accessibility-gateProcessGateResultproduced throughdocs/design/ORGANIZER_MEMBER_ACCESSIBILITY_GATE.mdon a real surface, and (4) Q1 (AuthorityBasispolymorphism vs typed family) or Q5 (ConflictDisclosureandMinorityReportplacement) resolved in writing — deferral is not sufficient for the RFC gate per §16.1; the resolved-or-deferred standard at §16.3 applies only to the broader runtime-justification threshold. The DAP brief's other open questions (Q2 through Q4, Q6 through Q10) are not surfaced by this slice and remain open. Hard rule preserved per DAP framing brief §14: not runtime, not a schema, not an RFC by itself, not a voting-system decision, not a liquid-democracy commitment, not expertocracy, not anti-expertise, not chat, not social media, not a moderation platform, not an identity directory implementation, not a credential verification implementation, not a private-overlay implementation, not NYCN-specific, not a production-readiness claim, not a Phase 2 completion claim, not a formal NYCN pilot authorization, not a live federation claim, not a live cloud sync claim, not a K3s/DNS/Forgejo mutation claim, not a private-data-handling claim, not a binding on partner repositories.
Democratic Authority Primitives framing (added 2026-05-05; doc/control-plane and idea-refinery only, not runtime; no kernel, gateway, ledger, governance, or SDK code touched):
idea-0020Democratic Authority Primitives framing brief landed atops/ideas/framing/democratic-authority-primitives.mdand the matching idea-refinery row inops/ideas/ideas.yaml— #1751. Pre-RFC framing only; not an RFC, not an ADR, not a schema, not a contract URN, not a backlog commitment. Names two generic primitive families (authority/participation:AuthorityBasis,ParticipationRole,DelegationGrant,RepresentationMandate,ExpertStatement,AdvisoryOpinion,ConflictDisclosure,FacilitatorSummary,StewardReview,OperatorExecutionAuthority,MinorityReport,ChallengePath,RevocationPath,RecallPath; deliberation context / educational reference:DeliberationContext,ContextReference,LearningReference,EvidenceReference,PriorDecisionReference,CharterRuleReference,CCLRuleReference,AccessibilityNote,PrivacyNote,RiskNote,CounterargumentReference,GlossaryReference). Composes orthogonally withidea-0019(Institutional Process Substrate): the spine names what gets processed; these primitives fill the spine's records with the authority and context typing the spine deliberately deferred. Hard rule preserved: institutions adopt and constrain through CCL, charters, and institution packages — not as ICN app features. Promotion to RFC requires (per the brief's §16.1 promotion gate) a read-model composition slice withidea-0019, a runtime dogfood emitting at least one receipt underADR-0026, a real visibility/privacy-boundary run, an accessibility-gateProcessGateResulton a real surface, and at least one open question — Q1 (AuthorityBasispolymorphism vs typed family) or Q5 (ConflictDisclosureandMinorityReportplacement) — resolved in writing. Deferral is not sufficient for the RFC gate per §16.1; the lenient resolved-or-deferred standard at §16.3 applies only to the broader runtime-justification threshold, not to RFC promotion. None of those follow-ups is started in this sync; the next move is not yet selected.
Institutional Process Substrate framing and read-model dogfood (added 2026-05-04 → 2026-05-05; doc/control-plane and idea-refinery only, not runtime; no kernel, gateway, ledger, governance, or SDK code touched):
- Rehearsal evidence export schema landed under
docs/contracts/rehearsal-evidence-export.mdanddocs/contracts/rehearsal-evidence-export.schema.jsondefiningurn:icn:contract:rehearsal-evidence-export:v1— #1734. Contract definition only; no live evidence export pipeline runs. - Architecture due-diligence checklist landed at
docs/architecture/ARCHITECTURE_DUE_DILIGENCE.md— #1739. Reflex/process artifact only; no architectural change. - Contract schema-identifier audit table landed at
docs/contracts/schema-id-audit.md— #1741. Inventory/discipline only; no schema change. - Organizer/member accessibility gate definition landed at
docs/design/ORGANIZER_MEMBER_ACCESSIBILITY_GATE.md— #1743. PR-time gate definition only; no UI/runtime change. - Preview/review read-model contract
urn:icn:contract:preview-review:v1landed underdocs/contracts/preview-review.md,docs/contracts/preview-review.schema.json, anddocs/contracts/preview-review.example.json— #1745. Read-model contract definition only; no read-model serves over a gateway today. idea-0019Institutional Process Substrate framing brief landed atops/ideas/framing/institutional-process-substrate.mdand the matching idea-refinery row inops/ideas/ideas.yaml— #1747. Pre-RFC framing only; not an RFC, not an ADR, not a schema, not a backlog commitment.- Read-model fixture-walk dogfood slice for
idea-0019landed atops/ideas/dogfood/institutional-process-substrate-mvp.md, alongside the newops/ideas/README.md§ "Dogfood slice variants" section that formalizes this variant convention — #1749. Fictional Example Cooperative process session walked end-to-end against the SAME shipping contract URNs as the committed examples (urn:icn:contract:preview-review:v1,urn:icn:contract:rehearsal-evidence-export:v1); emits no receipts, contacts no gateway, performs no mutation, introduces no new contract URN. A read-model fixture walk does NOT satisfy receipt-backed promotion thresholds; receipt-backed promotion ofidea-0019to RFC still requires (1) a separate runtime dogfood slice that emits at least oneProcessTransitionReceiptclass underADR-0026, (2) a real visibility/privacy-boundary run with redaction in the evidence export, (3) a real accessibility-gateProcessGateResultproduced through the accessibility-gate checklist, and (4) at least one framing-brief open question among Q1/Q3/Q4 resolved or explicitly deferred in writing. - Coordination/control milestone issue #1748 (
milestone(process): define Institutional Process Substrate) is open withepic:arch-invariants+type:spec. Acceptance criteria record #1747 framing as merged and #1749 read-model dogfood as the smallest-safe slice; runtime dogfood, visibility-boundary run, accessibility-gateProcessGateResult, and open-question triage remain unchecked. No implementation work is opened from #1748 until a runtime dogfood slice is explicitly scoped. - Next pre-RFC architecture move: Democratic Authority Primitives (delegation, representation, expert/advisory input, deliberation context / educational references, conflict disclosure, facilitator and steward/operator authority, and revocation/recall/challenge paths) as generic primitives institutions adopt and constrain through CCL, charters, and institution packages. Not started in this sync. Not an ICN app feature. Not an RFC by itself. Not a runtime commitment.
May-cycle repo governance and strategy documentation (added 2026-05-01 → 2026-05-02; documentation/control-plane only, not runtime deployment):
- Licensing metadata and open questions documented — #1686.
- RFC-0017 moved from draft to active for Tool Install Infrastructure — #1688. Active means accepted for implementation; it does not mean the tool install infrastructure is implemented.
- Full repo-record protocol/generator added — #1690.
- Generated ICN repo-record snapshot added — #1691. This is a mechanical inventory snapshot, not an interpretive atlas.
- Licensing/autonomy strategy matrix added — #1693. Planning only; no relicensing happened.
- Sovereign service hosting stack added — #1694. Design direction only; no Forgejo deployment, DNS mutation, K3s mutation, hosted-service rollout, or GitHub cutover happened.
- Follow-up maintenance/state queue merged — #1695-#1701. This includes CI action bumps, a wasmtime security bump, unified bootstrap setup, and a prior state sync; none of these changes starts a NYCN pilot or completes Phase 2.
- NYCN organizer/operator rehearsal gate defined (lives in the partner NYCN repo). The gate remains organizer presentation -> pilot formalization -> first operator rehearsal.
Action-card runtime (added 2026-04-27 → 2026-04-29, all currently emitted source paths now proof-bearing — issue #1646 remains open for the two RFC-gated paths):
GET /v1/gov/me/action-cardsmember endpoint with closed source/action enums — #1659- Proposal/vote action card →
GovernanceDecisionReceiptproof linkage, end-to-end test — #1660 action_item/completesource path emits append-onlyActionItemCompletionReceipt(ADR-0026 Layer 2); persist-before-commit semantics; full-update handler routes status changes through receipt-bearing path — #1661meeting/attendsource path emits append-onlyMeetingAttendanceReceipt(ADR-0026 Layer 2) keyed by(meeting_id, attendee_did);PresentandRemoteare receipt-bearing transitions,Absentis not;recorded_byis the authenticated caller (distinct fromattendee_didfor steward-recorded attendance); persist-before-commit semantics — #1663GET /v1/gov/domains/{domain_id}/action-items/{item_id}/completion-receiptretrieval endpoint — #1675; closes the proof loop on the read side so a holder shell that completed anaction_item/completeaction card can fetch the persistedActionItemCompletionReceiptover HTTP instead of relying on in-process tests or on-disk Sled inspection. Authorization mirrors the rest of the action-item read surface (governance:readscope plus domain membership; the receipt's bounddomain_idis asserted to match the path parameter so cross-domain probes are rejected).- Local HTTP proof loop closure recorded — #1676.
- K3s smoke proof closure (operator-authorized, against deployed image
91a63eec) recorded — #1677. K3s smoke records remain durable devnet proof artifacts; full namespaced teardown semantics are not yet specified (tracking issue planned). - Source paths currently emitted by
/me/action-cards:proposal/vote,meeting/attend,action_item/complete - Proof loop verified end-to-end for all three currently emitted source paths, both locally and on K3s.
- Pending under #1646 (RFC-gated):
signal_rulesource path (gated on #1631);obligation_lifecyclesource path (gated on #1634)
NYCN drive-ingest operator ladder (added 2026-04-29; lives in fahertym/nycn):
- Parser → review artifact (
drive-ingest-review/v1) — NYCN #21, #22 - Review decisions YAML (organizer-authored)
- Publish dry-run (
drive-ingest-action-item-publish-dry-run/v1) — NYCN #23 - Assignee binding (
drive-ingest-action-item-publish-dry-run-bound/v1) — NYCN #24 - Local publisher (
drive-ingest-local-publish-plan/v1; preflight default, execute fenced behind two operator flags + localhost-only--gateway) — NYCN #25 - Local proof runner (
drive-ingest-local-proof/v1; walks/me/action-cards→PUT .../status→GET .../completion-receipt) — NYCN #26 - Federation surface bridge (
drive-ingest-federation-surface/v1; pure file-in/file-out summary records keyed on the cross-node deterministic blake3record_hashfromActionItemCompletionReceipt) — NYCN #27 - Operator pilot runbook + no-network ladder checker — NYCN #28
- Organizer briefing + simple summit demo (partner-facing, civic tone, anti-pitch) — NYCN #29
- Start-here onboarding pass (
START_HERE.md,ORGANIZER_QUICKSTART.md,STEWARD_QUICKSTART.md,GLOSSARY.md) — NYCN #30 - One-command local preflight runner (
local_preflight_runnerorchestrating the full chain in a single deterministic, no-network run; preserves both human-review boundaries) — NYCN #31 - Whole-NYCN operating-surfaces inventory + Google-Groups boundary policy + repo-safe communication-groups fixture (no live sync, no private data committed) — NYCN #32
- Steward-facing communication-groups directory tool (
tools/nycn-ops; pure file-in / file-out validator + renderer) — NYCN #33 (open at last sync; verify status before reading) - The ladder defends a hard mutation boundary: every layer is either pure (no network) or localhost-only operator-gated. K3s mutation is never allowed by NYCN-side tools. The ICN-side K3s exercise (#1677) sits on the ICN repo side of the boundary, not in the NYCN repo.
Institutional-operability runtime (added 2026-04-22 → 2026-04-26):
- Generic institution bootstrap package path — #1586
- Bootstrap-apply 409 idempotency for repeated bootstrap runs — #1617
- Persistent governance domains across gateway restart in standalone mode — #1621
- Live charter activation endpoint — #1624
- Person-directory overlay for bootstrap role assignment (DID binding) — #1626
GET /me/standingread model — #1627authority_scopeplumbed end-to-end throughassign_role— #1630- Feedback/support doctrine rename + ADR canonicalization under
docs/adr/— #1637 - NYCN bootstrap apply integration tests + live-validate runbook — #1592, #1593
Governance institutional primitives:
- Governance domains, structures, activities, parent (scope container) — #1540
- Decision-to-action bridge: accepted proposals create linked action items — #1532
- Consent-based decision mode — #1533
- Meeting management (schedule, agenda, attendance, minutes) — #1543
- Notification digest (pending votes, overdue items, upcoming meetings) — #1547
- NYCN architecture docs (repo-shaped spec, implementation matrix, execution tranches) — #1544
- NYCN institutional design correction (layered ontology) — #1545
- Residual acceptance-closure atomicity hazards closed — #1590
- Colon-safe proposal index keys with one-shot migration — #1591
Infrastructure:
- Atlas-backed Prometheus persistent storage — #1614
- Atlas-backed sccache for ci-runner — #1618
- Soft pod anti-affinity for ICN daemons — #1619
- Helm path documented for kube-prometheus-stack — #1616
- Steward dashboard derives gateway URL from request context — #1620
- Security Audit CI fix (wasmtime bump) — #1522, #1542
- CI dual-signal guard — #1524
- Docker-build-deploy timeout fix — #1527
- 21-file doc refresh and archive — #1526
Architectural decisions in force
- Layered ontology (locked 2026-04-14): Entities (sovereign) / Structures (non-sovereign, entity-owned) / Activities (time-bounded, entity-owned). Committees are Structures. Summit is Activity.
- Program is a separate primitive (not Activity extension): Milestones with machine-readable checks, parent_program_id for cycle-handoff. Spec lives in the partner NYCN repo.
- Authority is capability-string based today, typed model frozen for migration:
RoleAssignment.authority_scope: Vec<String>remains the shipped surface; the constitutional object model (AuthorityClass,AuthorityGrant,TypedScope,Mandate) is frozen in ADR-0014 and is the target of a subsequent additive migration. No behavior change has shipped yet. - Sled key convention: primary
<thing>:{id}; secondary<thing>_by_<scope>:{scope_id}:{id}. - Gateway event naming:
Governance<Thing><Verb>. - Meaning Firewall: CI ratchet enforces no new kernel/domain import regressions. Pre-existing domain imports in icn-core and icn-gateway remain; full extraction is ongoing work.
Architecture notes
- Repo root is not a Cargo workspace; Rust workspace lives in
icn/. - Workspace: 35 crates in
icn/crates/+ 4 app crates inicn/apps/+ 3 binaries = 42 packages.- Crates (in
icn/crates/): icn-api, icn-authz, icn-ccl, icn-commons, icn-community, icn-compute, icn-coop, icn-core, icn-crypto, icn-crypto-pq, icn-encoding, icn-entity, icn-federation, icn-gateway, icn-gossip, icn-governance, icn-http-kit, icn-identity, icn-kernel-api, icn-ledger, icn-naming, icn-net, icn-obs, icn-privacy, icn-protocol, icn-rpc, icn-security, icn-services, icn-snapshot, icn-steward, icn-store, icn-testkit, icn-time, icn-trust, icn-zkp. - App crates (in
icn/apps/): icn-governance-actor, icn-ledger-actor, icn-membership-app, icn-charter-app. - Binaries: icnd, icnctl, icn-console.
- Crates (in
- Web UI: web/pilot-ui (PWA), web/dashboard (static).
- SDKs: sdk/typescript, sdk/react-native.
- Deployment: native/systemd, Docker Compose, Kubernetes, Helm (deploy/README.md).
Decisions (durable)
- Mutual TLS with client certificates enabled (2025-12-18).
- DID-TLS binding verification enabled.
- Some QUIC/chaos tests ignored in CI due to timing; run manually as needed.
Constraints (durable)
- Run Rust build/test commands from
icn/. - Tokio async only; avoid blocking operations in async paths.
- No panics in protocol/network/actor runtime paths.
- Demo status docs note STUN discovery disabled for local-only testing.
References
- docs/PHASE_PROGRESS.md — phase tracking
- docs/architecture/THE_COMMONS.md — Capital-C Commons doctrine (what ICN exists to enable)
- docs/architecture/MEMBER_STANDING.md —
/me/standingdesign contract (member-facing standing + accessibility) - docs/architecture/KERNEL_APP_SEPARATION.md — kernel/app boundary
- docs/architecture/ARCHITECTURE_DUE_DILIGENCE.md — due-diligence reflex checklist (#1739)
- docs/adr/ADR-0027-action-card-contract.md — ActionCard contract ADR (referenced by #1713 / #1764)
- docs/contracts/institution-package/README.md — institution-package ActionCard contract notes + validation guidance (#1764)
- docs/scripts/validate-action-card.py — bundled draft-2020-12 validator for the ActionCard schema (#1764)
- docs/contracts/preview-review.md —
urn:icn:contract:preview-review:v1(#1745) - docs/contracts/rehearsal-evidence-export.md —
urn:icn:contract:rehearsal-evidence-export:v1(#1734) - docs/contracts/schema-id-audit.md — contract schema-identifier audit (#1741)
- docs/design/ORGANIZER_MEMBER_ACCESSIBILITY_GATE.md — organizer/member accessibility gate (#1743)
- docs/pilots/no-cli-organizer-member-rehearsal-workflow.md — no-CLI organizer/member rehearsal workflow spec (#1725)
- ops/ideas/framing/institutional-process-substrate.md —
idea-0019framing brief (#1747) - ops/ideas/dogfood/institutional-process-substrate-mvp.md — read-model fixture-walk dogfood slice for
idea-0019(#1749) - ops/ideas/framing/democratic-authority-primitives.md —
idea-0020framing brief (#1751) - ops/ideas/dogfood/democratic-authority-primitives-mvp.md — read-model fixture-walk dogfood slice for
idea-0020(#1753) - ops/ideas/README.md § "Dogfood slice variants" — read-model fixture-walk variant convention (#1749)
- docs/dev/handoff-2026-05-07-a.md — latest session handoff (post-#1764 sync)
- docs/dev/handoff-2026-05-07.md — prior same-day handoff (post-opaque receipt storage stack sync)
- deploy/README.md — deployment options
Historical snapshots
2026-04-11 snapshot (PR #1520–#1522)
- PR #1520 (website cleanup) merged 2026-04-10
- PR #1522 (
fix/coop-store-sled-lock) merged 2026-04-11 — wasmtime bump + sled lock fix - PR #1521 closed as superseded by #1522
- Pilot Vertical Slice Hardening sprint complete: #1214, #1221, #1220, #1222
- Issue #862 (naming) closed as superseded — implemented as
icn-naming - Issue #1401 (hung docker CI) closed — root cause already removed in #1403
2026-03-18 snapshot (Phase 0 + Phase 1 complete)
- Phase 1 (Charter Engine) complete — PRs #1336 + #1337
- Charter bridge, CharterPolicyOracle, 5 CCL templates, icnctl charter CLI, ratification flow all landed
- Phase 0 (Close the Demo) complete — all 4 flows passing on K3s cluster
- 4,287 tests, ~420K Rust LOC
2026-03-14 snapshot (Governance Demo Sprint)
- Fixed: Gateway governance routes 404 (actix-web scope ordering)
- Fixed: Vote tally (CastVote missing voter DID)
- Built: demo pipeline (start-demo.sh, demo-governance.py, demo.html)
- 547 tests passing, cold-start demo 18/18
2026-02-18 snapshot (Economics Consolidation)
- Sprint 8-10 complete: deterministic economic receipt chain
- CanonicalReceipt, AllocationReceipt, SettlementIntent, ReceiptStore
- 6 REST endpoints for receipt/ledger provenance
- Pilot UI Receipts tab, icnctl receipts commands
2026-01-20 snapshot (Code review findings)
- Repo-wide TODO scan captured
- Large module candidates: icnctl/main.rs (9445 lines), icn-ledger (5447), icn-gateway governance (4650), icn-core governance_handlers (4243)