@@ -155,13 +155,25 @@ per tick.
155155- Archetype belongs in q2's simulation layer; callcenter belongs at wire level
156156- Keeping them separate preserves the q2=GUI / callcenter=headless boundary
157157
158- ** Integration deliverable:** thin adapter crate ` lance-graph-archetype-bridge `
159- - ` ArchetypeWorld → Blackboard ` adapter (World snapshot → Blackboard round)
160- - ` ArchetypeTick → UnifiedStep ` adapter (tick event → step for OrchestrationBridge)
161- - ` project() result → Archetype DataFrame component update `
162-
163- ** Status:** Queued
164- ** Effort:** ~ 3 days (adapter crate; no changes to callcenter or lance-graph core)
158+ ** Integration deliverable (per ADR 0001 Decision 1 — TRANSCODE, not bridge):**
159+ native Rust crate ` lance-graph-archetype ` that assimilates the Archetype
160+ ECS contracts against Lance + DataFusion + Arrow. Python upstream is
161+ design spec, not runtime dependency.
162+
163+ - ` Component ` trait maps to Arrow field
164+ - ` Processor ` trait = stateless ` RecordBatch → RecordBatch ` transform
165+ - ` World ` = Lance versioned dataset + tick counter + ` CommandBroker `
166+ - ` ArchetypeWorld.tick() ` = drain commands → run processors → append snapshot
167+ - ` ArchetypeWorld.fork() ` = Lance version branch (free time-travel / counterfactual)
168+ - ` project() ` emits Arrow ` RecordBatch ` consumed by ` ExternalMembrane `
169+
170+ ** Not "bridge":** the crate does not FFI into Python Archetype at
171+ runtime. It transcodes the contracts natively. The upstream Python
172+ package is the DESIGN reference, not a live dependency. See
173+ ` .claude/adr/0001-archetype-transcode-stack.md ` Decision 1.
174+
175+ ** Status:** Queued (naming + scope updated post-ADR 0001)
176+ ** Effort:** ~ 3 days (native crate; no changes to callcenter or lance-graph core)
165177
166178---
167179
@@ -255,7 +267,7 @@ DU-2 (Archetype) ──► needs DM-2 (ExternalMembrane impl to adapt against
2552673 . DU-0 (offline extraction, runs async)
2562684 . DM-2 (LanceMembrane impl — unlocks DU-1, DU-2)
2572695 . DU-1 (ONNX oracle, depends on DM-2 corpus)
258- 6 . DU-2 (Archetype bridge , depends on DM-2)
270+ 6 . DU-2 (Archetype transcode crate , depends on DM-2)
2592717 . DU-5 (board hygiene, last)
260272
261273---
@@ -268,9 +280,11 @@ DU-2 (Archetype) ──► needs DM-2 (ExternalMembrane impl to adapt against
2682802 . ** I-SUBSTRATE-MARKOV:** ` bundle_udf ` in DU-3 MUST use ` MergeMode::Bundle ` , not ` MergeMode::Xor ` .
269281 XOR breaks the CK guarantee for state-transition paths.
270282
271- 3 . ** q2=GUI / callcenter=headless:** DU-2 Archetype bridge does NOT put ECS logic inside
272- ` lance-graph-callcenter ` . The bridge is a thin adapter crate that Archetype calls INTO
273- the callcenter. Callcenter has zero knowledge of Archetype.
283+ 3 . ** q2=GUI / callcenter=headless:** DU-2 ` lance-graph-archetype ` (the native
284+ transcode crate per ADR 0001) does NOT put ECS logic inside
285+ ` lance-graph-callcenter ` . The transcode crate sits alongside, calling INTO
286+ the callcenter via ` ExternalMembrane::ingest() ` . Callcenter has zero
287+ knowledge of Archetype.
274288
2752894 . ** Jirak-derived thresholds (I-NOISE-FLOOR-JIRAK):** ` unbind_udf ` dispatch scores are
276290 probabilistic, not exact. Any significance threshold for dispatch scoring must cite
@@ -292,9 +306,12 @@ DU-2 (Archetype) ──► needs DM-2 (ExternalMembrane impl to adapt against
292306 depends on class balance across 288 persona classes. Some personas may be rare in
293307 practice (e.g., ` (OpenClaw, Koan) ` ) — rare class handling may be needed.
294308
295- - ** DU-2 Archetype API stability:** ` VangelisTech/archetype ` is an active repo. Adapter
296- crate should define its OWN interface (not directly call Archetype internals) so that
297- Archetype version changes don't break the bridge.
309+ - ** DU-2 Archetype API stability:** ` VangelisTech/archetype ` is an active Python repo,
310+ which is the DESIGN spec (not a runtime dependency). The ` lance-graph-archetype `
311+ transcode crate defines its OWN Rust interface based on the conceptual contracts
312+ (` Component ` , ` Processor ` , ` World ` , ` CommandBroker ` ) rather than mirroring Python
313+ signatures. Upstream API changes inform future transcodes; they don't break running
314+ code. See ADR 0001 Decision 1.
298315
299316- ** DU-3 fingerprint column type in DataFusion:** ` [u64; 256] ` is not a native Arrow type.
300317 Representation options: ` FixedSizeBinary(2048) ` , ` FixedSizeList<u64>(256) ` , or custom
0 commit comments