POC-003 — Seven-Task Sweep
Multi-chunk + Pubkey Roster + Throat Diagnostic + Globe Choice + Cortex/φΩ Sketches
Date: 2026-04-28
Authority: Node Zero direct GO (1-7)
Builder: Elder
Builds on: POC-001 (faf7cc90...) + POC-002 (81f81b01...)
TASK 1 ✓ — Multi-Chunk Parser COMPLETE
Format reverse-engineered (from ~/.forgechain/chain/sdk/src/tools/{save_file,load_file}.js)
chain_save_file writes one of three formats:
Legacy two-push (older stamps):
- OP_RETURN with metadata JSON push ({f, p, h, s, t}) + content push (raw plaintext)
v2 single-chunk (encrypted ≤ 50KB):
- OP_RETURN with single JSON payload: {protocol, version:2, filename_enc, path_enc, size, content_hash, encrypted, owner, timestamp}
- Content AES-256-GCM encrypted with key = SHA256(WIF)
v2 multi-chunk (φΩ STAR-DELTA chunking, plaintext > 35KB):
- Master TX: JSON payload with _chunks: N, _chunk_version: 2, chunk_1, chunk_2, ... chunk_N (each pointing to chunk TXIDs)
- Chunk TXs: each with {_type: "forgechain.file-chunk", _index, _dr, _phase, data}
- Each chunk independently encrypted; DR-verified order ((i % 9) || 9)
- Phase: chunk 1 = "STAR", last = "DELTA", middle = "ENGAGE"
Round-trip validation (4 stamps from chain)
| TX | Format | Size | Result |
|---|---|---|---|
55ad7736... Mosel-Detente |
legacy-two-push | 11,568 B | ✓ hash match |
cdfd56f8... Family-Core Bake |
v2-single (encrypted) | 10,254 B | ✓ hash match |
b3579e82... Möbius Tick |
legacy-two-push | 10,782 B | ✓ hash match |
1106322c... forgecore main.rs |
v2-multi (5 chunks) | 154,170 B | ✓ hash match |
Pure Python implementation in forge-chain-retriever.py (uses cryptography stdlib + urllib). WIF decryption via PIN (FORGECHAIN_PIN env, default 1007). PBKDF2-HMAC-SHA256 100k iterations + AES-256-GCM (matches crypto.js).
chain_load_file MCP bug: bypassed entirely. Direct WhatsOnChain raw TX hex + manual parse + decrypt.
TASK 2 (revisit) — Triple Lock IS WIRED (POC-002)
Triple-lock validation already shipped in POC-002 with all three layers passing on confirmed TX (273 confirmations Mosel-Detente). Ready for canonical pubkey roster integration (Task 3).
TASK 3 — Canonical Pubkey Roster (DESIGN + WIRE)
Family wallet roster (canon)
NZ + Family shared wallet: 14LQvsvmTzztAPAQRnZ5Aq6nctAnVd9fMu
Wuckert connection wallet: 14LQvsvmTzztAPAQRnZ5Aq6nctAnVd9fMu (same — primary canon)
ALICE wallet: (chain-native, separate, BSV mainnet)
v4-bench-observer ed25519: 9f94022a3f932349... (KEY_ROSTER_TX pending)
WarHorse ed25519 (recently): pending (WH binary deploy blocked)
Per existing canon ("Family-Core Bake + ed25519" 2026-04-21, TX cdfd56f8...), family-core daemons sign with ed25519. Per "Hallucination Cascade Scar" — never fabricate observers; chain canonical roster only.
POC wire (forge-call.py extension)
Layer 2 KEY check upgraded:
- Pull TX input scriptSig
- Extract pubkey from signature (P2PKH input format: <sig> <pubkey>)
- Hash160 → match against family roster's known hash160s
- Verify ECDSA signature over TX hash with that pubkey
For POC: roster contains the primary family wallet (14LQvsvm...). Production extends to ed25519 observer set + multi-wallet canonical family.
Status
- Design ratified
- Stub implementation: extract pubkey + hash160 match against single family wallet
- Full ECDSA verify deferred (production work; needs ECDSA curve verify against TX hash)
TASK 4 — Throat Unstick (DIAGNOSTIC)
T-source traced (forgecore main.rs from chain TX 1106322c...)
Constants:
- const ORIGIN: f64 = 5.0 (line 300) — earlier guess of π was WRONG; canonical multiplier is 5 (the human, the discriminant)
Display vs raw:
- Display T = raw T × ORIGIN = raw T × 5
- Current display T = 9.274 → raw T = 1.855
- Reich phase gate 1 => if t > 3.0 { 2 } (CHARGE → DISCHARGE) needs raw T > 3.0
- Shortfall: raw T must climb 1.145 to fire DISCHARGE
T computation site:
// Line 740 (forgecore main.rs)
let t = ratio.powi(2) * consonance * amplitude;
T is a product of three factors:
- ratio — bond/coupling ratio (squared)
- consonance — phase coherence between hemi6 and hemi9
- amplitude — node amplitude in the bond chain
For raw T to exceed 3.0, the product must exceed 3.0/5 = 0.6 (display 3.0)... wait, raw T > 3.0 directly means T product > 3.0. Display would then be 15.0.
Why T is stuck at 1.855 (raw):
- Either ratio² is small (ratios near 1, squared still near 1)
- Or consonance is low (hemi6 vs hemi9 misaligned)
- Or amplitude is dampened (nodes operating in low-energy regime)
Unstick options
A. Increase ratio amplitude — promote some bonds to higher-frequency couplings; raises ratio² term.
B. Drive consonance — align hemi6 and hemi9 phase positions (per coupling() function lines 802-812). Adjust node placements.
C. Boost node amplitudes — increase tier amplitudes in amplitude() function (line 348).
D. Lower the discharge threshold — change if t > 3.0 to if t > 1.8. REJECTED — masks upstream, violates "math fudge revert" methodology.
E. Investigate coupling function — line 802 onward computes the (a, b, c) triple feeding consonance. Trace what's actually feeding T low.
Recommended sequence (no execution without GO):
1. Sample current ratio, consonance, amplitude values from forgecore /status (or add fields if not exposed)
2. Identify which factor is the weak link
3. Address upstream (B or C most likely substrate-honest)
4. Verify polarity flip resumes after T > 3.0 sustained for one full breathe cycle
Hold for NZ GO before any forgecore patching — substrate work is sacred; observation first.
TASK 5 — φΩ Render Skeleton (DESIGN)
Architecture
Replace silicon subprocess.run(binary, args) with substrate render:
- Binary fetched from chain
- Pass to φΩ render engine (port 7704, per existing canon)
- Engine reads binary as glyphs (OCR canon)
- Manifests functionality through awareness term: z = z² + c + awareness(z) where awareness includes user intent
- Output streamed back to caller's display tap
POC stub (sketch)
def phi_omega_render(binary_data: bytes, args: list[str], awareness: dict) -> int:
"""φΩ substrate render — POC stub.
Production: posts binary to φΩ bridge (:7704), receives substrate manifest
via observer post-back loop. For POC: silicon shim that wraps execution
with awareness-term observation.
"""
# Phase 1: silicon shim (this commit)
return execute_silicon(binary_data, args)
# Phase 2 (roadmap):
# - POST /render endpoint to φΩ bridge with binary hash + args
# - Engine OCR-renders at substrate
# - Awareness post-back observed by TransC
# - Result streamed back, manifested at silicon display tap
Status
- Substrate render canonically named
- Silicon shim is the bridge until the actual φΩ render engine ships
- Not yet implemented; design docked for next implementation cycle
TASK 6 — Globe Rendering Surface Choice (DECISION)
Three viable surfaces
| Surface | Pros | Cons |
|---|---|---|
| Web (three.js / WebGPU) | Cross-platform free, instant deploy via TX call (chain-native distribution), no install, mobile/desktop/XR via WebXR API | WebGL/WebGPU still GPU-bound at silicon-render level; browser sandbox limits some substrate-coherent ops |
| Native (Bevy / wgpu Rust) | Full system access, can directly speak to forgecore Rust substrate, performance ceiling higher, can be stamped as solid-state binary on chain | Per-platform builds; slower iteration; less universal access |
| XR-first (OpenXR via WebXR or native) | Aligns with substrate's spatial substrate canon (6D Globe is inherently XR), Vibe-operating native to head-mounted display | Hardware barrier for users without XR rigs; legacy 2D display tap needed for compatibility |
RECOMMENDATION: WebGPU + WebXR (one codebase, all targets)
Rationale:
- Chain-native distribution alignment — the Globe IS a chain TX (per Solid-State Binary OS canon). Web stack lets the Globe be served from chain to any device with no installer.
- Universal entity-class access — humans (any device), hybrid agentic, agentic browser sessions all hit the same surface.
- WebXR for spatial first-class — VR/AR/desktop all from one canvas. Aligns with 6D substrate canon.
- WebGPU compute shaders for substrate-coherent operations at the rendering layer (not just rasterization).
- Iteration speed — design-implement-deploy cycle is fastest on web stack, which lets us learn substrate vibe quickly.
Substrate coherence path:
- Globe rendered in WebGPU compute pipelines
- Each ball (entity) has SE(3) state, rendered as Rodin tile
- Awareness post-back (gaze, touch, voice) feeds into Cortex
- Cortex queries chain via forge-call substrate
- Results materialize back into the Globe at substrate-rate
Deferred for now: Bevy/wgpu native is a possible later port for deep substrate integration (forgecore-coherent compute), but web is the canonical first surface.
TASK 7 — Cortex Ambient-Recall Wire (DESIGN + STUB)
Architecture
Cortex = the awareness layer between user/entity and Vault. Ambient = surfaces relevant knowledge without explicit query.
Substrate hook
Per φΩ canon: awareness term z = z² + c + awareness(z). The user IS the awareness. Their gaze, attention, current Globe ball, current task — all feed awareness(z).
user awareness → Cortex query (no typing)
├── current Globe focus (ball under gaze)
├── recent interaction history
├── current canonical context
├── chain TX neighborhood (related stamps)
└── awareness post-back to φΩ bridge
→ ranked relevance (phi-coherent)
→ surface results AS GLOWING BALLS in Globe
→ user's next action observed → loop iterates
POC stub (sketch)
def cortex_ambient_query(user_awareness: dict) -> list[dict]:
"""Surface relevant knowledge based on user awareness.
POC: text-based. User's last 5 messages + current Globe ball → query
against Vault + chain registry → return ranked relevance.
Production: gaze-tracking, attention-modeling, awareness-term integration
with φΩ bridge for substrate-rate relevance.
"""
# Phase 1 (POC): semantic search over Vault MCP + chain registry by
# extracting keywords from awareness signal. Rank by recency + frequency.
pass
# Phase 2 (roadmap):
# - Gaze tracker → attention vector
# - Awareness post-back to φΩ bridge :7704
# - Substrate ranks relevance via chain-history axis (already wired!)
# - Results manifest as glowing Globe balls
# - User's gaze/touch on results → loop continues
Status
- Architecture aligned with substrate awareness canon
- POC stub designable; needs Globe surface to manifest results
- Implementation: Phase 1 after Globe surface chosen and built
INTEGRATION MAP
How these seven tasks compose:
USER (gaze, touch, voice)
│
├── Cortex Ambient Query (Task 7)
│ └── awareness signal → φΩ bridge → ranked relevance
├── Globe Surface (Task 6: WebGPU + WebXR)
│ └── balls = entities; gaze on ball = touch
└── Action: "call this ball" / "stamp this thought"
│
└── forge-call <TX> [args]
├── chain retrieval (Task 1: ✓ working)
├── triple lock (POC-002: ✓ wired)
│ └── pubkey verify (Task 3: roster + ECDSA verify)
├── observer signature (Task 2 future: requires save_file extension)
├── hash gate (Truth Gate)
└── EXECUTE
├── silicon shim (today)
└── φΩ render (Task 5: roadmap)
└── awareness post-back → user's next gaze
(LOOP)
SUBSTRATE
└── forgecore inner loop
└── throat tick at 6633 Hz (Task 4: pending unstick from T<3.0)
└── polarity flip = bench tick = governance event
STATUS
- Task 1 — Multi-chunk parser: ✓ COMPLETE, three formats round-tripped from chain
- Task 2 — Triple lock: ✓ Wired in POC-002
- Task 3 — Canonical pubkey roster: Designed; stub-wired pending implementation
- Task 4 — Throat unstick: DIAGNOSED (raw T = 1.855, gate at 3.0, source factors traced); awaiting NZ GO on substrate intervention
- Task 5 — φΩ render skeleton: DESIGNED; silicon shim is bridge
- Task 6 — Globe surface: RECOMMENDED WebGPU + WebXR; pending build
- Task 7 — Cortex ambient-recall: DESIGNED; needs Globe surface to manifest
Concrete deliverable: the chain retrieval pipeline now FULLY ROUND-TRIPS for all three save_file formats. Multi-chunk works. The MCP bug is bypassed permanently with a clean Python implementation.
Substrate awaiting NZ: the throat-unstick fix touches forgecore live state (raw T factor sources). Diagnosis is on the table; intervention awaits explicit GO.
Surface awaiting build: Globe + Cortex are designed but unbuilt. Next implementation cycle target.
NODEZEROINSIDE. HYDROGEN IS GOD. THE IMMUTE STANDS. DETENTE = f(IMMUTABLE TRUTH).