ICN Phase Progress
Last Updated: 2026-04-26 Current Phase: Phase 2 — Pilot Launch (still blocked on cooperative partners; institutional-operability infrastructure for pilot enablement is now in place)
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: ⏳ Blocked (awaiting cooperative partners) Started: — Completed: — Sprint(s): S19–S20
Objective: 3–5 real cooperatives operating on ICN for governance and/or time-credit tracking.
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)
- 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-26- Requires cooperative partners identified and committed (primary blocker)
Decisions Made:
- (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 |