ICN Phase Progress
Last Updated: 2026-07-28
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 the NYCN organizer presentation — now anchored on the rehearsal organizer→member loop (#2406–#2408: browser organizer review → digest-bound confirm → real local action item → fresh member session → completion receipt + value-withheld evidence), the Rehearsal Node appliance (fresh assembled-image KVM witness passed 2026-07-13 at 8c0fe926; see the matching docs/STATE.md block), and the NYCN facilitator/organizer-gate package (nycn#100), alongside the earlier drive-ingest ladder + proof-loop machinery + architecture-spec ladder + Civic Shell v0 composition spec. Subsequent gates: pilot formalization, then first operator rehearsal. The exact organizer/operator gate is defined in the NYCN rehearsal gate (in the partner repo). Institutional-operability infrastructure, the action-card runtime, the action-item completion-receipt retrieval endpoint, the NYCN drive-ingest operator ladder, the opaque receipt storage stack, the May-14/May-15 architecture-spec ladder (twelve design-level spec documents covering integrated operating model, effect dispatch, institutional domain, CCL policy registry, governed service binding, storage durability, ArtifactRegistry/ScopedVault, scope vocabulary, compute placement, anti-entropy proof loops, member shell, steward cockpit), the 2026-05-22 governance-hardening cycle (governance:write decomposition design #1880, class-level scope constants minted in icn-rpc #1881, governance context build-mode production guard #1901), the Civic Shell v0 composition surface spec #1899, the Debian-13 appliance real-smoke verification #1900, and the Claude Design seed-review + truth-label + icon-candidate + federation-operator-surface + member-shell action-card-refinement design cycle (#1885–#1889) are all in place. The 2026-06-10 truth-sync additionally records (PR-by-PR record in the matching docs/STATE.md block): the previously unrecorded 2026-05-15 → 2026-05-17 network-schema + Slice A fixture stack (#1843–#1874 — all three Slice A fixture rehearsals #1838/#1839/#1840 closed as completed, including the member-shell read-only rendering rehearsal #1848 with its ADR-0028 accessibility assertions), and the 2026-05-23 → 2026-06-10 window (#1903–#2016): governance:write decomposition executed across all seven handler families with broad scope kept as accepted-also fallback (#1903–#1951, #1984), MandateGate + mandate-attested v2/v3 governance receipts (#1925–#1938), TrustThreshold fail-open closures (#1911/#1916/#1917), the live local 13/13 receipt-chain audit path (#1979/#1985, dev-gated self-trust seed) with durable EffectDispatchEvidence recovery (#1990) and its paging/index follow-ups (#1986/#1988/#1993/#1996), the dev-gated demo/rehearsal layer (#1953/#1954/#1980/#1981/#1997/#1999), the passport/keyring vocabulary and custody-surface remediation (#1957–#1978), the pending-publish summary row contract (#1998), the proof-level taxonomy + rehearsal capability matrix (#2000), the honest-introduction materials stack with evidence map (#2002/#2003/#2008), agent worktree policy (#2009), and dependency/CI maintenance including the explicit accepted-risk decision to ignore unmaintained pqcrypto-* advisories (#1983). None of the architecture-spec ladder is runtime implementation; the closure batch (nine sibling issues closed at docs/spec level on 2026-05-15) and the first-batch follow-up filings (#1834–#1840) reflect that boundary. The 2026-05-22 governance-hardening cycle is mixed truth class — #1901 and #1881 are real Rust changes, the rest is design/docs. The Civic Shell spec is composition only; no app, endpoint, auth, deployment, DNS, or K3s mutation lands with it. The Debian-13 appliance smoke verified the positive firstboot path (#1900, re-verified as baseline 2026-06-10); one negative fail-closed scenario (missing-firstboot-exec) was operator-verified on 2026-06-10 — firstboot failure propagates via the 10-firstboot-gate.conf Requires= and icnd never starts; all other appliance failure modes remain unverified. May-cycle repo-governance, licensing, RFC, repo-record, service-hosting, dependency/CI maintenance, bootstrap, state-sync docs, the May-5 institutional-process-substrate framing sequence, the May-6/May-7 opaque receipt storage stack runtime work (#1755 / #1757 / #1758 / #1759 + OPAQUE_HASH_BIND_PREFIX invariant), the May-7 close-out cycle, and the 2026-05-18 → 2026-05-22 hardening + Civic-Shell + appliance + design + strategy cycle have all landed. None of these mark Phase 2 complete or imply production readiness, live federation integration, implemented service hosting, K3s/DNS/GitHub/Forgejo mutation, NYCN private-data handling, partner activation, an implemented Civic Shell, an implemented member shell, an implemented steward cockpit (member shell and cockpit have fixture-level rendering proofs only), a completed mandate-authority migration (MandateGate landed as code in #1925–#1931, but capability scopes with broad accepted-also fallback still authorize every handler), retirement of broad governance:write, appliance fail-closed coverage beyond the single verified missing-firstboot-exec scenario, signed/immutable/partner-distributable appliance images, or resolved licensing. The 2026-06-14 truth-sync additionally records the July Demo Candidate 0.1 (#2021–#2036): a local, single-actor proof spine (standing → action card → discharge/completion → completion receipt → local evidence/audit verification) surfaced through a member-shell v0 reference client (#2026, web/member-shell/), a served-OpenAPI member surface (#2027), and a single-VM DEV/DEMO appliance image (#2028) with a one-command no-paste launcher (#2031) and an operator runbook (#2034 → docs/demo/JULY_DEMO_CANDIDATE_0.1_OPERATOR_SCRIPT.md); the from-main image de2e9a2a… was sealed as ICN July Demo Candidate 0.1 on 2026-06-13 with a 13/13 local receipt-chain proof (dev-gated self-trust seed, dev-attested receipts; release dry-run not run). This is a demo/dev milestone — not production, not a pilot, not partner-distributable, not NYCN activation, not live federation, not multi-organization, not multi-person governance — fixture/local/dev data only; the #1703 human gate is unchanged. The 2026-06-14 accessibility/language-access/hand-off window (PRs #2037, #2043, #2039, #2040) additionally records: a member-shell i18n / language-modularity seam (#2043, infrastructure for language — en source catalog + qps-ploc pseudo-locale + ar RTL scaffold; real translations owed), automated rendered-browser accessibility walkthrough evidence (#2039, Playwright + axe — machine evidence only; the #2041 human assistive-technology pass remains open and owed), a July Demo Candidate 0.1 operator hand-off packet (#2040, a review/hand-off document, not a software release), and a nycn-dogfood gossip-port preflight reliability fix (#2037). Language access is now represented as infrastructure, not completed multilingual coverage; accessibility has automated evidence but not a human AT pass; the candidate remains single-actor with no two-member flow; no production/pilot/live-federation/private-data/signed-receipt claim is added. The 2026-07-27 truth-sync additionally records the 2026-07-21 → 2026-07-26 architecture and deployment window at origin/main 425f513f — meaning-firewall taxonomy reconciliation (A1, 4bdae326), the community-edge inversion (B0, c1ea355e), retirement of automatic private-K3s deployment from public CI (75d15750), and the appliance demo-payload mode repair (425f513f) with an assembled single-node witness whose build tree is byte-identical to main; the B1 ledger-edge tranche failed its design gate and was never implemented, B2 has not begun, and no two-node proof exists.
Phase 0: Close the Demo
Status: ✅ Complete Started: 2026-03-18 Completed: 2026-03-18 Sprint(s): S16
Objective: All 4 demo flows run end-to-end with ExecutionReceiptGate, correct scopes, and proof signing.
Deliverables:
- ExecutionReceiptGate (#1310) — governance → execution proof linkage — PR #1327 merged 2026-03-18
- Add treasury/ledger scopes to demo flow auth calls — fixed in lib-demo-ports.sh (settlements:, treasury:)
- Deploy proof signing key to K3s pods — init container keystore fix deployed 2026-03-18
- Verify K3s cluster + CI runner operational — VMs restarted, all nodes Ready, cluster healthy
- All 4 demo flows pass — governance 19/19 (demo-governance.py), flows 1-4 all green 2026-03-18
- Recorded demo for async audiences — content asset (Matt records, not engineering)
- Layer 3 handoff: someone other than Matt can run the demo — demo/RUNBOOK.md K3s section added 2026-03-18
Blockers:
- (none — all ops blockers resolved)
Decisions Made:
- (2026-03-18) Treasury scopes are already in ALLOWED_SCOPES; demo scripts just need to request them in auth calls. Not an engineering problem.
- (2026-03-18) Mana terminology is deprecated. Fuel is the correct term for compute metering.
- (2026-03-18) t3 (IPv6 bind defaults, #1296) is the sole remaining S14 task but is not demo-critical — parked.
- (2026-03-18) Deployed icn:20260318 image tag — IfNotPresent pull policy requires unique tags per deploy, not :latest, to force pull on K3s nodes.
- (2026-03-18) Init container keystore fix deployed — busybox:1.36 copies /data/.icn/identity.age → /data/identity.age on every pod start. Eliminates manual copy-after-restart toil.
- (2026-03-18) Flow 2 Step 11 (receipts/allocations 400, missing decision_hash) and Flow 3 clearing ID capture are non-blocking bugs — tracked in GitHub issues, not blocking Phase 0.
Metrics:
- Tests added: 0 (ops session)
- Lines changed: ~50 (demo scripts, deployment YAML, Dockerfile.fast)
- Kernel infection delta: 0
Phase 1: The Charter Engine
Status: ✅ Complete Started: 2026-03-18 Completed: 2026-03-18 Sprint(s): S17–S18
Objective: YAML charter documents produce kernel-enforced constraints. Cooperatives define their own rules.
Deliverables:
-
charter_to_constraints()bridge function —icn-ccl/src/schema/bridge.rs -
CharterContextruntime bindings (member count, balances, trust scores) -
CharterPolicyOracle— newapps/chartercrate - Wire charter app into
icnddaemon startup - Integration test: YAML → ConstraintSet → kernel enforcement (20/20 passing)
- Worker cooperative charter template —
contracts/templates/worker-coop.yaml - Consumer cooperative charter template —
contracts/templates/consumer-coop.yaml - Housing cooperative charter template —
contracts/templates/housing-coop.yaml - Community organization charter template —
contracts/templates/community-org.yaml - Regional federation charter template —
contracts/templates/federation.yaml - Charter ratification flow (governance vote triggers charter deployment) — PRs #1336 + #1337
-
icnctl charter validate/inspect/deploysubcommands - Demo Flow 1 updated to use real charter document — demo-governance.py Phase 2 now submits Charter payload with CCL YAML
Blockers:
- (none blocking — ratification flow and demo update are additive)
Decisions Made:
- (2026-03-18) YAML schema system is the v1 charter interface. No custom text parser.
- (2026-03-18) Expression strings (
"0.67 * members") parsed by existingparse_expr(). No new parser needed. - (2026-03-18) Start with governance thresholds + credit limits mapping. Expand incrementally.
- (2026-03-18)
community-orgtemplate usesentity.type: cooperative / subtype: purpose—communityis an entity type (foricn-community), not a valid cooperative subtype. - (2026-03-18) Charter ratification flow is a separate PR: governance has no effect execution hook today.
GovernanceProposalClosedevent is logged only — nodeploy_charter()call exists anywhere. Wiring requires: (a) addChartervariant toProposalPayload, (b) listen forAcceptedoutcome in gateway, (c) callcharter_oracle.deploy_charter()from gateway handler. - (2026-03-18) Charter ratification uses type-erased hook (
Arc<dyn Fn(String, String) + Send + Sync>) threaded throughBootstrapHandles → GatewayActorHandles → GatewayHandles → GatewayServer. Kernel (icn-core,icn-gateway) never importsicn-charter-app. The daemon (icnd) builds the concrete closure fromArc<CharterPolicyOracle>and injects it at the boundary.
Metrics:
- Tests added: 32+ (12 bridge unit, 9 oracle unit, 11 oracle unit, 1 template integration ratchet; icn-charter-app lib = 11 total; icn-ccl integration = 20 total)
- Lines changed: ~1,068 (bridge 350, oracle 200, daemon wiring 50, templates 350, CLI 90, ratification flow 168, demo 30)
- Kernel infection delta: 0 (charter oracle is an app — kernel sees only ConstraintSet; hook is type-erased at boundary)
Schema → Constraint Mapping Status
| Schema Type | Field | Expression Example | Constraint Key | Status |
|---|---|---|---|---|
| GovernanceSchema | VoteThreshold | "0.67 * members" |
custom["min_votes_<name>"] |
✅ |
| GovernanceSchema | DecisionType.quorum | "0.25 * members" |
custom["min_quorum_<name>"] |
✅ |
| GovernanceSchema | DelegationConfig.transitive | bool | custom["delegation_transitive"] |
✅ |
| GovernanceSchema | TermDuration | literal | custom["term_years"] |
✅ |
| EconomicsSchema | CreditConfig.limit | "min(1000, patronage * 0.5)" |
custom["credit_limit"] |
✅ |
| EconomicsSchema | MemberEquity.minimum | literal | custom["equity_min"] |
✅ |
| EconomicsSchema | SurplusConfig.allocation | "0.20" |
custom["surplus_reserves_pct"] |
✅ |
| AgreementSchema | SettlementConfig.cycle | enum | custom["settlement_cycle"] |
✅ |
| AgreementSchema | DisputeResolution.ladder | structured | custom["dispute_stages"] |
✅ |
Phase 2: Pilot Launch
Status: ⏳ In progress (NYCN is the intended first cooperative partner — active partnership track, not yet a formally committed pilot; next concrete step is presenting the merged drive-ingest ladder + ICN proof-loop machinery to NYCN organizers; see the NYCN rehearsal gate in the partner repo) Started: — Completed: — Sprint(s): S19–S20
Objective: 3–5 real cooperatives operating on ICN for governance and/or time-credit tracking. NYCN is the intended first; additional cooperatives are downstream of a successful first-partner rehearsal.
Deliverables:
- Pilot runbook (#1222 ✅ closed)
- Live charter activation endpoint (#1624) — pilots can activate a charter against a running gateway
- Persistent governance domains across gateway restart (#1621)
- Person-directory overlay for bootstrap role assignment (#1626) — DID binding from package-side person ids
-
GET /me/standingread model (#1627) — member-facing standing surface -
authority_scopeplumbed end-to-end throughassign_role(#1630) - Generic institution bootstrap package path (#1586)
- Bootstrap-apply 409 idempotency (#1617) — re-running bootstrap is safe
- NYCN bootstrap apply integration tests + live-validate runbook (#1592, #1593)
-
GET /v1/gov/me/action-cardsmember endpoint with closed source/action enums (#1659) - Action card →
GovernanceDecisionReceiptproof linkage for proposal/vote (#1660) — proof loop verified -
action_item/completesource path emits append-onlyActionItemCompletionReceipt(#1661) — proof loop verified -
meeting/attendsource path emits append-onlyMeetingAttendanceReceipt(#1663) — proof loop verified;Present/Remoteare receipt-bearing transitions;Absentis not; steward-recorded attendance distinguished byrecorded_byvsattendee_did -
GET /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 can fetch the persisted receipt over HTTP;governance:readscope + domain membership; cross-domain probes rejected - Local HTTP proof loop closure documented in the NYCN action-item receipt path (in the partner repo) (#1676)
- K3s smoke proof closure (operator-authorized, deployed image 91a63eec) recorded in the NYCN K3s proof path (in the partner repo) (#1677)
- NYCN drive-ingest operator ladder merged end-to-end in
fahertym/nycn(NYCN #21–#28): parser → review → decisions → publish dry-run → assignee binding → local publisher → local proof runner → federation surface bridge → operator pilot runbook + ladder checker. Procedural spine for walking organizer material into ICN action-item proofs without an agent in the loop. Note: the ladder runs against a localhost ICN gateway only; K3s exercise lives ICN-side under #1677, not in the NYCN repo. - NYCN organizer briefing + simple summit demo (NYCN #29) — partner-facing framing for first-rehearsal organizer-track meetings; civic tone, anti-pitch, no live-federation claims.
- NYCN start-here onboarding pass (NYCN #30) — short cold-reader docs (
START_HERE.md,ORGANIZER_QUICKSTART.md,STEWARD_QUICKSTART.md,GLOSSARY.md) plus a no-network artifact-ladder checker. - NYCN one-command local preflight runner (NYCN #31) — orchestrates the seven-stage chain in a single deterministic, no-network run; preserves both human-review boundaries; preflight only.
- NYCN whole-system operating-surfaces inventory + Google-Groups boundary policy + repo-safe communication-groups fixture (NYCN #32) — modeling only; no live sync, no private data.
- Licensing metadata and open questions documented (#1686) — documentation only; licensing is not resolved.
- RFC-0017 moved to active for Tool Install Infrastructure (#1688) — active RFC only; infrastructure is not implemented.
- Repo-record protocol/generator added (#1690) — documentation/control-plane generator work.
- Generated ICN repo-record snapshot added (#1691) — mechanical inventory snapshot, not an interpretive atlas.
- Licensing/autonomy strategy matrix added (#1693) — planning only; no relicensing.
- Sovereign service hosting stack documented (#1694) — design direction only; no Forgejo deployment, DNS mutation, K3s mutation, hosted-service rollout, or GitHub cutover.
- May-cycle follow-up queue merged (#1695–#1701) — CI action bumps, wasmtime security bump, unified bootstrap setup, and prior state sync; no Phase 2 completion claim.
- NYCN Phase 2 pilot rehearsal gate defined (in the partner NYCN repo) — organizer presentation -> pilot formalization -> first operator rehearsal.
- Rehearsal evidence export schema landed under
urn:icn:contract:rehearsal-evidence-export:v1(#1734) — contract definition only; no live evidence pipeline runs. - Architecture due-diligence checklist landed at
docs/architecture/ARCHITECTURE_DUE_DILIGENCE.md(#1739) — reflex/process artifact only. - Contract schema-identifier audit landed at
docs/contracts/schema-id-audit.md(#1741) — inventory/discipline only. - Organizer/member accessibility gate definition landed at
docs/design/ORGANIZER_MEMBER_ACCESSIBILITY_GATE.md(#1743) — PR-time gate definition only. - Preview/review read-model contract
urn:icn:contract:preview-review:v1landed underdocs/contracts/preview-review.mdanddocs/contracts/preview-review.schema.json(#1745) — 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 matchingops/ideas/ideas.yamlrow (#1747) — pre-RFC framing only; not an RFC, not a schema commitment, not a backlog commitment. - Read-model fixture-walk dogfood slice for
idea-0019landed atops/ideas/dogfood/institutional-process-substrate-mvp.md, plusops/ideas/README.md§ "Dogfood slice variants" convention (#1749) — read-model only; emits no receipts, contacts no gateway, performs no mutation, introduces no new contract URN; does NOT satisfy receipt-backed promotion thresholds. - Coordination/control milestone issue #1748 (
milestone(process): define Institutional Process Substrate) opened withepic:arch-invariants+type:spec— coordinates spine composition only; not implementation. -
idea-0020Democratic Authority Primitives framing brief landed atops/ideas/framing/democratic-authority-primitives.mdand matchingops/ideas/ideas.yamlrow (#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; deliberation context / educational reference) institutions adopt and constrain through CCL, charters, and institution packages. Composes orthogonally withidea-0019(Institutional Process Substrate). Promotion to RFC requires (per the brief's §16.1) read-model composition slice withidea-0019, runtime dogfood emitting at least one receipt underADR-0026, real visibility/privacy-boundary run, accessibility-gateProcessGateResulton a real surface, and at least one open question — Q1 (AuthorityBasispolymorphism) or Q5 (ConflictDisclosure/MinorityReportplacement) — 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). - 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,DeliberationContextexercising 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). ReferencesOperatorExecutionAuthorityas the strictly-downstream-of-decision operator handle at the activation gate (Step 5), typed to point at theDecisionRecordplus theProcessGateResultset plus the steward'sRoleAssignment. 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 slice-local candidates only and not committed 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; receipt-backed promotion ofidea-0020to RFC still requires the four DAP §16.1 conditions (runtime dogfood emitting at least one receipt underADR-0026, real visibility/privacy-boundary run, accessibility-gateProcessGateResulton a real surface, and Q1 or Q5 resolved in writing — none of those is started in this sync). - First runtime dogfood emitting one of the eight named
ProcessTransitionReceiptclasses from theidea-0019framing brief:ProcessGateResultReceipt(#1755). Emitted byGovernanceManager::record_process_gate_resultand persisted through theGovernanceReceiptBackendtrait. Partial credit towardidea-0019(#1748) acceptance gate (a); the seven remainingProcessTransitionReceiptclasses (ProcessSessionOpenedReceipt,DeliberationEntryRecordedReceipt,DecisionRecordedReceipt,ActivationCrossedReceipt,MutationPlanRecordedReceipt,MutationAppliedReceipt,EvidencePacketProducedReceipt) remain candidates. Surfaced a production durability gap: the sled-backedReceiptStorehad not yet overriddenput_process_gate_result, so production callers received an explicitprocess_gate_result_backend_not_implementedsentinel — addressed by the #1757/#1758/#1759 stack. - Hook tooling fix for scope-guard / todo-guard exec bit + todo-guard pipeline (#1756) — repo tooling only; no runtime / contract / schema / API change.
- Meaning-blind opaque receipt storage primitive on the gateway (#1757) at
icn/crates/icn-gateway/src/receipt_store.rs. Addsput_opaque(class, key1, key2_opt, recorded_at, record_hash, payload)plusget_latest_opaqueandlist_opaque_forinherent methods onReceiptStore. Three substantive review findings addressed incb9d6daf(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 ina8fbb1a6: 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 atomic inside the same sled transaction. Adds zero new typed governance imports onicn-gateway; meaning-firewall ratchet unchanged. - Opaque storage exposed on
GovernanceReceiptBackendtrait (#1758) aticn/apps/governance/src/receipt_backend.rs. Three new fail-closed-default trait methods (put_opaque/get_latest_opaque/list_opaque_for) 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. -
ProcessGateResultReceiptrouted through opaque storage cascade (#1759). Trait default forput_process_gate_resultrewritten to 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 applied in the same PR (replaced threestd::thread::sleep(Duration::from_millis(1100))calls with explicit, strictly-increasingrecorded_attimestamps; suite finishes in 0.01s). - Sled-open retry-on-
WouldBlockshipped (#1761). Bounded retry-with-backoff inSledCommonsStore::open(icn/crates/icn-commons/src/store.rs): 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. Single-file change. Closes #1760 (sled 0.34 flusher-thread shutdown race surfaced by #1759's CI Test job; initial actor-drop diagnosis was wrong, corrected pre-merge 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 —
sdk/typescript/four updates (#1763) andweb/pilot-ui/@axe-core/playwright4.11.2 → 4.11.3 (#1735). No runtime change. - ActionCard contract publication for institution packages (#1764). Adds
docs/contracts/institution-package/action-card.example.json(fictionalproposal/votesample card validating against the existing schema with all required fields plus optionaldeadlineanddomain_id; uses fictional ids; contains no NYCN-specific nouns) anddocs/scripts/validate-action-card.py(draft-2020-12 JSON Schema validator mirroringvalidate-preview-review.pyandvalidate-rehearsal-evidence.py). Expandsdocs/contracts/institution-package/README.mdwith: Files table for the schema + example + validator; stability rationale citing ADR-0027 § Card kind taxonomy ("growable by ADR amendment") explaining why"x-icn-status": "rfc"is honest; schema-id-audit linkage documenting the retain-temporarily decision (docs/contracts/schema-id-audit.md; review by 2026-06-30 tracked by #1742); explicit CLI validation commands; regulatory-safe vocabulary list (obligation, allocation, settlement, unit, position, receipt, provenance, evidence — explicitly not payment / wallet / balance / currency); explicit "institution-specific semantics belong in institution packages, not in ICN core" guidance; partner-package vendor-or-invoke-from-CI guidance. Updatesdocs/registry.tomlwith the README'slast_updatedandlast_reviewedadvanced 2026-05-04 → 2026-05-07 and a refreshed description mentioning the new files and the schema-id-audit retention decision. One substantive Copilot review finding addressed pre-merge (CLI argpacket->card,DEFAULT_PACKET->DEFAULT_CARD, internal vars and error messages aligned). Closes #1713 with all six acceptance criteria met (manually closed after merge with a comment enumerating each gate). No schema fields changed; the schema's$idremains DNS-backed under the audit's retain-temporarily decision. - July Demo Candidate 0.1 — a local, single-actor proof spine (standing → action card → discharge/completion → completion receipt → local evidence/audit verification) sealed 2026-06-13 as a demo/dev milestone (NOT production, NOT a pilot, NOT partner-distributable, NOT NYCN activation, NOT live federation, NOT multi-person governance; fixture/local/dev data; the 13/13 receipt-chain path uses a dev-gated
ICN_DEV_SELF_TRUSTseed and dev-attested, not production-signed, receipts). Component deliverables:- member-shell v0 reference client (#2026) at
web/member-shell/— static fixture + live-local modes; renders member standing, action cards, and completion receipts. Reference client only (not a shipped product, not an organizer/steward shell, not multi-person). - member-shell surface documented in the served OpenAPI (#2027) — standing / action-cards / completion-receipt endpoints on the
/v1base; drift-chain regen included; meaning-firewall ratchet held. - DEV/DEMO appliance image profile (#2028) — the member loop end-to-end inside one VM; from-main image
de2e9a2a…passedcheck.sh20/20 + build +smoke --real --demo+ in-VM seed/discharge/verify/reset/reseed + 13/13 chain (evidence under~/artifacts/icn/demo-image-20260612/). DEV/DEMO profile only — not signed, not immutable, not partner-distributable, not a production node. - one-command demo launcher + no-paste session flow (#2031) —
open-proxmox-demo.sh+icn-demo-session.py+ member-shell "Start local demo" button; includes a passphrase-leak fix routing demo helpers throughrunuser. - proof-level capability matrix refreshed for the candidate (#2030) — member surface in served OpenAPI + new single-actor DEV/DEMO appliance-image row + image-vs-running-instance-vs-hypervisor terminology note.
- operator + reviewer handoff runbook
docs/demo/JULY_DEMO_CANDIDATE_0.1_OPERATOR_SCRIPT.md(#2034); demo index re-routed to the candidate docs (#2035); reset/reseed paths clarified — reset proves nothing and does not reseed (#2036); rehearsal-recovery docs hardened (#2032); launcher port-conflict message fixed (#2033). - supporting hygiene/fixtures: dev-gated multi-node standing bootstrap (#2024);
demo/SELF_SERVE.mdattendee-quickstart rewrite with maturity tiers (#2025); archived expired dev-credential redaction (#2023); rehearsal-fixture drift CI guard (#2021); rehearsal-script path fix (#2022).
- member-shell v0 reference client (#2026) at
- Meaning-firewall truth reconciliation (Tranche A1, #2452, merged
4bdae3262026-07-22) — one authoritative crate taxonomy (scripts/firewall-taxonomy.toml) replaces 17 disagreeing hand-copied crate lists; the required "Meaning Firewall Check" is fail-capable for the first time since 2026-03-24 (it previouslyexit 0'd unconditionally behind branch protection) and fails closed if the taxonomy cannot load; all 48 workspace members classified; 16icn-coreboundary-debt edges pinned with tracking and machine-checkableexpiry = "edge-absent"; stale-exception detection stops a transitive or dev-only path from masking a removed direct edge. Measures kernel/app separation honestly — does NOT complete it, removes no dependency edge, changes no runtime behavior. - Community edge inversion (Tranche B0, #2454, merged
c1ea355e2026-07-25) — theicndcomposition root now constructsCommunityActor/CommunityStoreand passesicn-coreaCommunityFactory;icn-coretransports an opaque handle it never inspects andicn-gatewaydowncasts it. Verified at425f513f: zero directicn-communityCargo dependency and zero directicn_community::source references inicn-core. NOT graph isolation — the transitive pathicn-core → icn-gateway → icn-communityremains. First worked example of the B-tranche pattern. - Public/private deployment boundary (#2455, merged
75d157502026-07-26) — the automatic private-homelab build/deploy/cleanup workflow is deleted from publicmain; the replacement is a GitHub-hosted generic OCI build withpush: false. Only the automatic private deployment from public CI was retired; Kubernetes, K3s, and Helm remain optional operator material, anddeploy/k8s/stays in Git as explicitly non-generic material pending a separate tranche. - Appliance demo-payload mode repair + current-main assembled witness (#2456, merged
425f513f2026-07-26) — the builder normalizes the explicitly non-secret DEV/DEMO payload to root ownership andu=rwX,go=rXwith fail-closed build-time assertions, fixing a 200/CHDIR member-shell failure caused by inherited host-checkout modes. Witnessed at build head67a6566e(tree byte-identical tomain): clean boot/firstboot, systemd health, organizer + member flows, least-privilege negatives, wrong-digest rejection, completion receipt created and re-fetched, outbound isolation, service restart, full VM reboot;check.sh40 passed / 0 failed. Durable across reboot: identity, machine ID, config/genesis hashes, completion receipt. Intentionally ephemeral: the rehearsal workspace view (reconstructed by reseeding). No runtime, API, protocol, storage-schema, or authority change. - Tranche B1 — remove
icn-core → icn-ledger: BLOCKED at the architecture gate (design NO-GO 2026-07-25; nothing implemented). The review found multiple incompatible ledger implementations, multiple composition roots, unclear authoritative ownership, insufficiently typed recovery operations, and inadequate authorization, custody, provenance, idempotency, and durable workflow receipts. B1 must NOT be implemented viaAny, untyped opaque objects, callbacks, closures, meaning-erasing generic traits, ambient recovery authority, or incomplete receipt/provenance semantics — the B0 pattern does not transfer. Resuming requires one authoritative application composition root, one authoritative ledger implementation, typed recovery commands, explicit authority, and durable workflow evidence. - Composition-root consolidation — the mandatory architecture tranche that must precede any B1 retry. Not started.
- Tranche B2 — not started; explicitly not product-critical.
- Community gossip topic ownership (#2457) — production wiring subscribes to
community:updateswithout creating it, the gossip layer rejects publish to an undeclared topic under the reject policy, and publish failure is logged after local mutation, so peers can diverge. Pre-existing defect; B0 neither introduced nor fixed it. #2457 requires topic-ownership, access-rule, startup-ordering, and failure-semantics decisions plus a production-composition regression test before any patch; it explicitly withholds authorization for an opportunistic fix. - Two-node appliance proof — NOT EXECUTED. The bounded plan landed on
main2026-07-28 (a0b970ac, #2463); a plan is not evidence. Blocked on at least (1) a reviewed offline receipt-bundle exporter and verifier, and (2) an encrypted appliance recovery contract that includes the secret-bearing effective environment needed to reopen restored state. Gate 4 stays BLOCKED, Gate 3 (institutional enrollment) stays OPTIONAL with the "technical witness" title restriction, and federation is explicitly not exercised. Connectivity between two development nodes is not live federation. - Deployment-profile ADOPTION (ADR-0086, #2458) — the ADR record landed on
main2026-07-28 (9ca12148) atstatus: proposed; adoption is a separate human decision and merging the record did not perform it. This item closes when thestatus:field says so, not when the file lands. Only the appliance profile has a retained build-and-boot witness; independent appliance restoration is blocked becauseicnctl backupomits/etc/icn/icnd.env. - Evaluator package identity correction (#2435, merged
1af341cb2026-07-28) — from 0.0.4 the portable evaluator ships asicn-portable-evaluator; the owner of the fact isdeploy/appliance/evaluator/package-spec.env(PKG_STEM). The previous name was never an ICN-ratified identity. Published tags/assets at or below 0.0.3 retain their original names for checksum continuity — payload provenance was always genuine, and the display identity was corrected rather than retroactively rewritten. - Runtime dogfood slice for
idea-0020emitting at least one receipt underADR-0026for one DAP primitive — receipt-backed; required before promotion to RFC. - Visibility/privacy-boundary run with redaction in evidence export for one DAP primitive — required before promotion to RFC.
- Accessibility-gate
ProcessGateResultproduced through thedocs/design/ORGANIZER_MEMBER_ACCESSIBILITY_GATE.mdchecklist on a real surface that renders any DAP primitive — required before promotion to RFC. - DAP open-question triage on framing-brief Q1 (
AuthorityBasispolymorphism vs typed family) or Q5 (ConflictDisclosure/MinorityReportplacement) — at least one resolved in writing before promotion to RFC (deferral is not sufficient for the RFC gate per §16.1). - Additional
idea-0019ProcessTransitionReceiptclasses beyondProcessGateResultReceipt(the first emitted underADR-0026via #1755 + #1759 cascade):ProcessSessionOpenedReceipt,DeliberationEntryRecordedReceipt,DecisionRecordedReceipt,ActivationCrossedReceipt,MutationPlanRecordedReceipt,MutationAppliedReceipt,EvidencePacketProducedReceipt. All eligible through the same opaque storage cascade landed in #1757–#1759 — adding a class no longer requires expanding gateway typed governance imports. - Visibility/privacy-boundary run with redaction in the evidence export for one
idea-0019ProcessSession— required before promotion to RFC. - Accessibility-gate
ProcessGateResultproduced through thedocs/design/ORGANIZER_MEMBER_ACCESSIBILITY_GATE.mdchecklist on a real surface — required before promotion to RFC. - Open-question triage on framing-brief Q1 (
ProcessTargetRefpolymorphism), Q3 (DeliberationEntrykind taxonomy), or Q4 (HumanDecisionSetvs proposal/vote) — at least one resolved or explicitly deferred in writing before promotion to RFC. - NYCN steward-facing communication-groups directory tool (NYCN #33) — open at last sync; verify status before reading.
- Action-card runtime — remaining gates under #1646 (RFC-gated):
signal_rulesource path (gated on #1631);obligation_lifecyclesource path (gated on #1634) - One-command deployment script per cooperative
- Charter customization workflow documented (charter activation endpoint exists; non-technical workflow doc still missing)
- Pilot onboarding guide (non-technical audience)
- Deploy nodes for 3–5 pilot cooperatives
- Weekly check-in process established
- Pilot case study written (for grant/funder audiences)
Blockers:
Requires Phase 1 complete✅ Charter Engine is liveRequires bootstrap activation runtime✅ live charter activation + person-directory + standing read model landed 2026-04-22 → 2026-04-26Requires cooperative partners identified✅ NYCN is the intended first cooperative partner (active partnership track)- Next concrete step: present the merged drive-ingest ladder + ICN proof-loop machinery to NYCN organizers, as defined in the NYCN rehearsal gate (in the partner repo)
- Subsequent gates: pilot formalization, then first operator rehearsal against real (or fixture-equivalent) organizer material
Decisions Made:
- (2026-07-27, post-#2452 / #2454 / #2455 / #2456, with #2457 filed and #2458 / #2435 still open on that date) The architecture-and-deployment window 2026-07-21 → 2026-07-26 landed four merges on
origin/main425f513fand produced one explicit refusal. What was decided. (a) The meaning firewall gets one authoritative crate taxonomy and an honest, fail-closed gate (A1) — the project chose to measure kernel/app separation truthfully rather than continue asserting it through mechanisms that disagreed with each other and a required check that could not fail; the 16 pinnedicn-coreboundary-debt edges are the admitted debt, not a clean bill. (b) Domain ownership moves to the composition root, not into the kernel behind an abstraction: B0 relocated community construction and LWW gossip-merge logic intoicndand lefticn-coretransporting an opaque handle. The exact claim is zero direct dependency and zero direct source reference; theicn-core → icn-gateway → icn-communitytransitive path remains and must not be described away. (c) Public CI stops mutating private infrastructure — but only that: Kubernetes, K3s, and Helm remain supported optional operator material, and the retirement must never be reported as "ICN dropped Kubernetes". (d) The appliance payload-mode defect is fixed at build time with fail-closed assertions rather than patched per-launcher. What was refused. B1 (removingicn-core → icn-ledger) reached the mandatory architecture gate and was rejected at design review on 2026-07-25 with nothing implemented — the reviewers found multiple incompatible ledger implementations, multiple composition roots, unclear authoritative ownership, insufficiently typed recovery operations, and inadequate authorization, custody, provenance, idempotency, and durable workflow receipts. The binding consequence is that B0's opaque-handle pattern does not transfer to the ledger edge: hiding economic ownership behindAny, untyped objects, callbacks, closures, meaning-erasing generic traits, or ambient recovery authority would launder the problem rather than solve it. Composition-root consolidation is the mandatory prerequisite before B1 may resume; B2 was deliberately not started. Evidence boundary. The assembled single-node appliance witness at build head67a6566ecovers exactly current-maincontent (identical treed3604c4c…) and earned durable node identity plus a durable completion receipt across service restart and full VM reboot — the rehearsal workspace view is intentionally ephemeral and reconstructed by reseeding, which is not to be converted into a general durability claim. Still open and deliberately not closed here (queue state at authorship,main=425f513f, none of #2458 / #2435 / #2463 merged; this entry may land after them). ADR-0086 deployment profiles isproposed, not adopted — and merging the ADR would not adopt it, since adoption is a separate human decision carried by itsstatus:field (#2458). The evaluator package identity correction is #2435; the live value lives indeploy/appliance/evaluator/package-spec.env, while the durable facts hold either way — the old name was never ICN-ratified, the payloads are genuine, and ≤0.0.3 assets stay retained for checksum continuity. The community gossip topic is still never created before subscribe in production wiring (#2457, which withholds authorization for an opportunistic patch pending ownership and failure-semantics decisions), and no two-node appliance proof has been executed. Phase 2 status remains ⏳ — partner- and human-gated. Hard rule preserved: this window adds NO production, pilot, organizer-acceptance, human-accessibility, live-federation, two-node, signed-appliance, independent-restoration, adopted-ADR, or completed-kernel-separation claim, does not move the NYCN pin on ICN8c0fe926, and leaves #1703/#1746, nycn#41/#52, and #2041 untouched. - (2026-05-07, post-#1761 / #1762 / #1763 / #1764) The May-7 close-out cycle plus the ActionCard contract publication landed: #1761 closed the surfaced sled-flusher race (#1760) with bounded
WouldBlockretry inSledCommonsStore::open; #1762 truth-synced STATE.md and PHASE_PROGRESS.md for the opaque receipt storage stack landing post-#1755/#1759 and addeddocs/dev/handoff-2026-05-07.md; #1763 / #1735 bumped Dependabot dev-dependency groups (sdk/typescript and web/pilot-ui) with no runtime change; and #1764 published the generic ActionCard contract surface for institution packages by adding a bundled fictional example, a draft-2020-12 validator script, and an expanded README — mirroring the existing convention used byvalidate-preview-review.pyandvalidate-rehearsal-evidence.py. #1764 closed #1713 with all six acceptance criteria met (generic schema matches runtime fields; honest"x-icn-status": "rfc"marker explained via ADR-0027 § Card kind taxonomy; emitted-vs-gated source kinds distinguished with tracking-issue cites forsignal_rule→ #1631 / #1711 andobligation_lifecycle→ #1634 / #1712; NYCN-specific nouns absent; regulatory-safe vocabulary preserved; package validation path documented with CLI commands and partner-package guidance). One substantive Copilot review finding addressed pre-merge (CLI argpacket->cardmechanical rename). The schema's$idremains DNS-backed (https://intercooperative.network/contracts/institution-package/action-card.schema.json) under the schema-id-audit retain-temporarily decision; review by 2026-06-30 tracked by #1742.idea-0019(#1748) acceptance gate (a) status is unchanged from #1762 (still partial —ProcessGateResultReceiptemitted via #1755 + durably persisted via the opaque cascade since #1759; additional classes remain candidates); gates (b)-(d) unchanged: not started. #1713 closure is independent of #1748's gates. Phase 2 status remains ⏳ (still partner-bound). Hard rule preserved: this cycle does NOT change any contract field, does NOT mint a new contract URN, does NOT add an ADR, does NOT add an RFC, does NOT widen gateway typed governance imports, does NOT increase the meaning-firewall ratchet, does NOT touch K3s / DNS / GitHub / Forgejo state, does NOT handle private partner / member / organizer 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. Phase 2 deliverables list extended with five new[x]entries (#1761, #1762, #1763, #1735, #1764). One less open follow-up than at the previous sync since #1761 closed #1760. Next pre-RFC architecture move is not yet selected; this sync deliberately preserves optionality. Candidate next moves are listed descriptively indocs/STATE.md"Current status" paragraph — none is selected here. - (2026-05-07, post-#1755 / #1756 / #1757 / #1758 / #1759) The opaque receipt storage stack landed: #1755 added the first
ProcessGateResultReceiptruntime slice (the first runtime dogfood emitting one of the eight namedProcessTransitionReceiptclasses from theidea-0019framing brief); #1756 fixed scope-guard / todo-guard hook tooling; #1757 added the meaning-blindput_opaque/get_latest_opaque/list_opaque_forprimitive on the gateway; #1758 extended theGovernanceReceiptBackendtrait surface and added the sled-backedReceiptStoreoverrides; #1759 rewrote theput_process_gate_resulttrait default to attempt the opaque cascade first. Production gateway-backedReceiptStoretherefore now durably persistsProcessGateResultReceiptthrough the opaque cascade without any new typed governance import onicn-gateway— adding a new receipt class becomes a one-file change in apps. New invariant added inside the merge cycle:OPAQUE_HASH_BIND_PREFIXkeyspace binds each(class, record_hash)to exactly one canonical(key1, key2_opt, recorded_at)tuple; divergent re-binds abort with stable sentinelopaque_record_hash_index_collision; bind/primary/secondary writes atomic inside the same sled transaction. Substantive review findings (codex + Copilot) addressed incb9d6dafanda8fbb1a6before merge: write-once-by-hash, atomic primary + secondary, distinctNonevsSome(""), deterministic equal-timestamp ordering, hash-bound canonical index tuple. CI on #1759 surfaced a pre-existing sled 0.34 flusher-thread shutdown race ontest_commons_charter_survives_sled_drop_and_reopen; filed as issue #1760 (initial actor-drop diagnosis was wrong; corrected to sled-flusher-flock-shutdown) and fix opened as PR #1761 (bounded retry-on-WouldBlockinSledCommonsStore::open, 8 attempts max, 500ms total budget cap, 10ms initial backoff, only matchesWouldBlockso genuine errors are not masked). PR #1761 open at sync write-time.idea-0019(#1748) acceptance gate (a) — runtime dogfood emitting at least oneProcessTransitionReceiptclass underADR-0026— is now partially satisfied (one class emitted and durably persisted); gates (b)–(d) (visibility/privacy-boundary run, accessibility-gateProcessGateResulton a real surface, open-question triage on Q1/Q3/Q4) remain unchanged: not started. Phase 2 status remains ⏳ (still partner-bound). Hard rule preserved: this stack does NOT widen gateway typed governance imports; the opaque storage primitive is bytes-in / bytes-out and adds zero new domain types. Meaning-firewall ratchet unchanged: baseline 10 known violations preserved, 0 new. Phase 2 deliverables list extended with five new[x]entries (#1755, #1756, #1757, #1758, #1759); the first-class[ ]foridea-0019runtime dogfood was replaced with an "additional classes"[ ]enumerating the seven remainingProcessTransitionReceiptclasses. Next pre-RFC architecture move is not yet selected; this sync deliberately preserves optionality. Candidate next moves are listed descriptively indocs/STATE.md"Current status" paragraph — none is selected here. - (2026-05-05, post-#1753) The DAP read-model fixture-walk dogfood slice landed in #1753 at
ops/ideas/dogfood/democratic-authority-primitives-mvp.md, with a matchingops/ideas/ideas.yamlrow update. 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). The slice 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 theDecisionRecord, theProcessGateResultset, and the steward'sRoleAssignment. Emits no receipts, contacts no gateway, performs no mutation, introduces no new contract URN, modifies no kernel/runtime/contract/schema/ADR file. Receipt class candidates referenced at the right transition points (FacilitatorSummaryRecordedReceipt,ConflictDisclosureAcceptedReceipt,MinorityReportRecordedReceipt) are slice-local class 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; receipt-backed promotion ofidea-0020to RFC still requires the four §16.1 conditions enumerated above. Phase 2 status remains ⏳ (still partner-bound). Phase 2 deliverables list extended with one[x]entry creditingidea-0020read-model fixture-walk dogfood and four[ ]entries naming the unstarted runtime dogfood, visibility/privacy-boundary run, accessibility-gateProcessGateResult, and DAP open-question triage. The next pre-RFC architecture move is not yet selected; this sync deliberately preserves optionality. Candidate next moves the next session may pick from are listed descriptively indocs/STATE.md"Current status" paragraph: (a) DAP runtime dogfood emitting at least one receipt underADR-0026for one DAP primitive — the next artifact called for by the slice's promotion gate; (b)idea-0019runtime dogfood toward receipt-backed promotion (one of four #1748 acceptance gates); (c)idea-0019visibility/privacy-boundary run; (d)idea-0019accessibility-gateProcessGateResult; (e)idea-0019open-question triage on Q1/Q3/Q4; (f) one of the DAP §17 follow-up framing briefs (CCL hook-point catalog; expert/advisory across institution types; conflict object model; federation tally semantics; delegation runtime); (g) control-plane cleanup including review-thread hygiene. None is selected here. - (2026-05-05, post-#1751) Democratic Authority Primitives framing landed in #1751 as
idea-0020with framing brief atops/ideas/framing/democratic-authority-primitives.mdand matchingops/ideas/ideas.yamlrow. Pre-RFC framing only; no runtime, no schema, no contract URN, no ADR, no RFC, no implementation issue, no runtime dogfood. The brief names two generic primitive families — authority/participation (AuthorityBasis,ParticipationRole,DelegationGrant,RepresentationMandate,ExpertStatement,AdvisoryOpinion,ConflictDisclosure,FacilitatorSummary,StewardReview,OperatorExecutionAuthority,MinorityReport,ChallengePath,RevocationPath,RecallPath) and deliberation context / educational reference (DeliberationContext,ContextReference,LearningReference,EvidenceReference,PriorDecisionReference,CharterRuleReference,CCLRuleReference,AccessibilityNote,PrivacyNote,RiskNote,CounterargumentReference,GlossaryReference) — that institutions adopt and constrain through CCL, charters, and institution packages. The brief 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. Phase 2 status remains ⏳ (still partner-bound). Phase 2 deliverables list extended with one[x]entry creditingidea-0020framing. Next pre-RFC architecture move is not yet selected; this sync deliberately preserves optionality for the next session. Candidate next moves the next session may pick from are listed descriptively indocs/STATE.md"Current status" paragraph and include: (1)idea-0020read-model composition slice (DAP brief's[x]next artifact), (2)idea-0019runtime dogfood toward receipt-backed promotion, (3) one of the remaining #1748 process-control gates (visibility/privacy-boundary run, accessibility-gateProcessGateResult, or Q1/Q3/Q4 triage), (4) another sync/control cleanup or one of the DAP §17 follow-up framing briefs (CCL hook-point catalog; expert/advisory across institution types; conflict object model connectingConflictDisclosuretoidea-0016/ADR-0029; federation tally semantics composingRepresentationMandatewith #1609; delegation runtime gated on #1632). None is selected here. - (2026-05-05, post-#1734/#1739/#1741/#1743/#1745/#1747/#1749, with open #1748) The May-5 institutional-process-substrate sequence is documentation/control-plane and idea-refinery only. (a) Five contract/design/architecture docs landed: rehearsal evidence export schema (#1734), architecture due-diligence checklist (#1739), contract schema-identifier audit (#1741), organizer/member accessibility gate definition (#1743), and the preview/review read-model contract
urn:icn:contract:preview-review:v1(#1745). (b)idea-0019Institutional Process Substrate was named in the idea refinery with a framing brief (#1747) and a read-model fixture-walk dogfood slice (#1749) that walks a fictional Example Cooperative process session against the SAME shipping contract URNs as the committed examples without modifying any kernel, runtime, gateway, ledger, governance, or SDK code and without minting any new contract URN. The newops/ideas/README.md§ "Dogfood slice variants" convention formalizes that a read-model fixture walk does NOT satisfy receipt-backed promotion thresholds. (c) Coordination/control milestone issue #1748 is open withepic:arch-invariants+type:spec; no implementation issue is opened from it. (d) Phase 2 status is unchanged; the next concrete human gate remains organizer presentation -> pilot formalization -> first operator rehearsal per the NYCN rehearsal gate (in the partner repo). (e) The next pre-RFC architecture move is Democratic Authority Primitives (delegation, representation, expert/advisory input, deliberation context / educational references, conflict disclosure, facilitator and steward/operator authority, and revocation/recall/challenge paths) — generic primitives institutions adopt and constrain through CCL, charters, and institution packages, not ICN app features and not a runtime commitment. Not started in this sync. - (2026-05-02, post-#1695/#1696/#1697/#1698/#1699/#1700/#1701) May-cycle repo-governance, strategy, dependency/CI maintenance, bootstrap, and state-sync work has merged through #1701. These are truth/control-plane, planning, or maintenance landings only. They do not complete Phase 2, formally commit NYCN as a pilot, claim production readiness, claim live federation integration, implement service hosting, mutate DNS/K3s/GitHub/Forgejo state, implement RFC-0017, handle NYCN private data, or resolve licensing. The next concrete human gate is now explicitly documented in the NYCN rehearsal gate (in the partner repo): organizer presentation, pilot formalization, then first operator rehearsal. Open PR queue was empty at this sync.
- (2026-04-29, post-#1675/#1677, post-NYCN-#28) The Phase 2 machinery is now in place end-to-end: (a) action-card runtime is proof-bearing for all currently emitted source paths, (b) the completion-receipt retrieval endpoint exists so a holder shell can read receipts over HTTP, (c) the local HTTP proof loop is closed and documented, (d) the K3s smoke proof loop is closed against deployed image
91a63eecand documented, and (e) the NYCN drive-ingest operator ladder is merged end-to-end as a procedural spine. NYCN is the intended first cooperative partner (active partnership track); the next concrete step is presenting the merged ladder + ICN proof-loop machinery to NYCN organizers to formalize the pilot. Phase 2 remains ⏳ until that presentation, the partnership formalization that follows, and the first operator pilot rehearsal happen and are recorded. The two RFC-gated action-card source paths (signal_rule,obligation_lifecycle) remain open under #1646 and are independent of the partner gate. - (2026-04-27, post-#1663) Action-card runtime is now proof-bearing for all three currently emitted source paths:
proposal/vote(#1660),action_item/complete(#1661), andmeeting/attend(#1663). Issue #1646 remains open for the two RFC-gated paths:signal_rule(#1631) andobligation_lifecycle(#1634). Phase 2 status is unaffected (still partner-bound). - (2026-04-27) Action-card runtime is partial:
/me/action-cardsexists,proposal/voteandaction_item/completesource paths have verified end-to-end receipt proof loops, andmeeting/attend,signal_rule,obligation_lifecyclepaths remain pending under #1646. Phase 2 status is unaffected. - (2026-04-26) Pilot enablement infrastructure (bootstrap, charter activation, role binding, standing) is in place; Phase 2 remains ⏳ until partners run it for real.
Phase 3: Federation Depth
Status: ⏳ Planned Sprint(s): S21–S24
Objective: Cross-organizational coordination end-to-end with real agreements, clearing, and trust bridging.
Deliverables:
- Federation Agreement lifecycle (AgreementSchema → live agreement)
- Cross-org credential recognition
- Federation clearing end-to-end
- Dispute resolution flow
- NAT traversal for WAN federation (#1299)
- 10+ node scale test
- Federation dashboard in pilot UI
- Multi-federation support
- 3 federation agreement templates
Phase 4: Institution-in-a-Box
Status: ⏳ Planned Sprint(s): S25–S28
Objective: Non-technical person starts a cooperative using ICN in under 1 hour.
Deliverables:
-
icnctl init-coopinteractive wizard - Web-based charter builder (React)
- One-click Docker deployment
- Member invitation flow (QR/link)
- Mobile app (React Native)
- Offline-first sync
- Activity dashboard ("what decisions exist, what money moved, who authorized it")
Phase 5: The Commons Layer
Status: ⏳ Planned Sprint(s): S29–S36
Objective: Cooperatives pool resources and share services. The network becomes self-sustaining.
Deliverables:
- Commons resource contribution accounting (#925)
- Resource metering
- Commons credit formula via CCL (#1308)
- Shared service registry + marketplace
- WASM app deployment
- Resource allocation governance
- Commons dashboard
Phase 6: Civilization Tools
Status: ⏳ Horizon
Objective: ICN infrastructure replaces coordination functions of state and corporation.
Emerges from Phases 1–5. Municipal governance, cooperative health networks, climate coordination, education cooperatives, mutual aid at scale.
Cross-Cutting Metrics
Kernel Infection Ratchet
| Date | icn-core governance refs | icn-core ledger refs | icn-core CCL refs | Infected crates |
|---|---|---|---|---|
| 2026-03-18 (baseline) | 43 | 31 | 32 | 11 |
Note: Re-measurement deferred. NYCN governance work (#1540, #1543, #1547) added app-layer crates (icn-governance-actor), not kernel imports. Kernel infection delta is expected to be 0 but not yet verified.
Test Count
| Date | Total Tests | Delta |
|---|---|---|
| 2026-03-18 (baseline) | 4,287 | — |
| 2026-04-15 | 6,463 | +2,176 |
Codebase Size
| Date | Rust Lines (crates+bins) | App Lines | Delta |
|---|---|---|---|
| 2026-03-18 (baseline) | ~420,000 | ~7,000 | — |
| 2026-04-15 | ~458,000 | ~35,000 | +38K crates/bins, +28K apps |