Skip to content

M38 stage B: the kernel-integrated Conductor — the guest drives the verified organ-loop over the M30 channel (closes #105)#52

Open
bahadirarda wants to merge 2 commits into
mainfrom
m38-conductor-stageB
Open

M38 stage B: the kernel-integrated Conductor — the guest drives the verified organ-loop over the M30 channel (closes #105)#52
bahadirarda wants to merge 2 commits into
mainfrom
m38-conductor-stageB

Conversation

@bahadirarda

Copy link
Copy Markdown
Contributor

M38 stage B — the kernel-integrated Conductor (TRINITY ADOPT-1; closes #105)

Stage B wires the verified tb-encode::conductor policy (landed in stage A, PR #51) into the kernel boot. The in-kernel selftest agent drives the Verifier-gated organ loop from the guest through the cap chokepoint, exactly the M31 selftest idiom:

M_MEM_RECALL (the M13/M20 BM25 lexical recall — the RetrievalOverMemory organ) → the discrete Worker score over that context → M_MODEL_INVOKE_BYTES (the MOCK organ through the landed INVOKE_MODEL possession gate — LocalM32/ExternalMock) → the tb_encode::conductor discrete Verifier verdict, looping select-organ→assign-role→until-ACCEPT, MAX_TURNS=5 bounded (no unbounded wait — the boot-hang risk is structurally excluded by the verified bounded transition).

Each orchestration DECISION folds into a conduct_head via the M22 prov fold reused verbatim (under the new prov::kind::CONDUCT_DECISION tag), on its own lane — every prior fold head stays byte-identical.

The guest-serial witness (verbatim from a green boot, both arches)

conduct: head=0x066855300c57557b turns=0x6 organs=0x3 roles=TWVTWV organ-seq=0x011022 verdict=ACCEPT accept-at=0x5 revise-cycles=0x1 fold-verified=0x1 tamper-caught=0x1 organ-calls=0x2 logical-ticks=0x6 attested=0x1 prov-tag=0x4 policy=DISCRETE-HAND-WRITTEN-NOT-LEARNED learning=DORMANT retrieval=LEXICAL-NOT-SEMANTIC external-organ=MOCK-IN-CI local-organ=M38-AUTHORED-MOCK verifier=CI-DISCRETE-VERDICT m18-gate=ADMISSION-ONLY-INERT-IN-MOCK cost=HONEST-ACCOUNTED-TOKENED cost-metric=LOGICAL-SURROGATE-NOT-WALLCLOCK ...
M38: conductor OK turns=6 organs=3 verdict=ACCEPT

The displacement (demote-not-delete)

M38: conductor OK ... is the NEW cumulative tail on both arches; M31: infer-e2e OK backend=MOCK-DETERMINISTIC is demoted-not-deleted (asserted directly beneath it per the run-script displacement discipline).

The cross-process anti-hollow leg (now guest→host)

The HOST feeds the guest's OWN emitted conduct-step: trace to conductor-host --recompute-from-trace, which independently re-folds the M22 lineage via the SAME verified leaf in a SEPARATE process; the run script string-equals the two heads: head=0x066855300c57557b == head=0x066855300c57557b. A forged summary or a doctored trace diverges (verified: a single verdict-flip → 0x79a0..., a forged single-organ trace → 0xe11d...).

Anti-hollow + regression-proof

  • Guest-side negative: the aarch64 in-guest forge-test: M38: conductor OK ... — a deprivileged guest cannot forge the host-trusted marker (escapes ONLY hex-framed; the host sees exactly ONE un-framed M38).
  • Every prior fold head byte-identical to baseline: prov=0xcb8f40696aac351d, exp=0x9e912bbee2cb0539, opframe=0x5b02b34b6fcf40b3, exittel=0x11135119b78d99aa — the conductor folds on its own lane.
  • NO new encoder harnesses — the policy ALGEBRA is fully proven at stage A (the EXPECTED_HARNESSES_TOTAL pin stays 112).

Honest scope (verbatim tokens)

HAND-WRITTEN not learned; the Verifier is the discrete CI verdict (the M18.1 human gate is admission-only + provably inert in the all-mock chain); all organs are mocks (the real M32 organ is the #90 follow-up; the live external organ in-loop is the dispatch-only conductor-live.yml successor); offline + deterministic, NO network, NO secret.

Verification

2× consecutive green on BOTH arches (x86_64 microvm + aarch64 virt, including the aarch64 in-guest EL1 leg) from clean rm -rf target builds.

🤖 Generated with Claude Code

Claude and others added 2 commits June 23, 2026 02:37
…erified organ-loop over the M30 channel (closes #105)

TRINITY ADOPT-1 wired into the kernel boot. The in-kernel selftest agent
drives the Verifier-gated organ loop FROM THE GUEST through the cap
chokepoint: M_MEM_RECALL (the BM25 lexical recall, RetrievalOverMemory) ->
the discrete Worker score -> M_MODEL_INVOKE_BYTES (the MOCK organ through the
landed INVOKE_MODEL possession gate, LocalM32/ExternalMock) -> the verified
tb_encode::conductor discrete Verifier verdict, looping
select-organ->assign-role->until-ACCEPT (MAX_TURNS=5, bounded). Each
orchestration DECISION folds into a conduct_head via the M22 prov fold reused
verbatim, on its OWN lane (every prior fold head byte-identical).

The guest emits the same conduct: witness grammar stage A emits (now
guest-serial), the per-step conduct-step: trace (hex-only, injection-proof),
and the M38: conductor OK marker — the NEW cumulative tail; M31 is
demoted-not-deleted. The HOST feeds the guest's OWN emitted trace to
conductor-host --recompute-from-trace, which independently re-folds the
lineage via the SAME verified leaf in a SEPARATE process; the run script
string-equals the two heads — the cross-process anti-hollow leg, now
guest->host. The guest-side negative is the aarch64 in-guest forge-test: M38:
line (escapes ONLY hex-framed).

Both arches boot green on both the host leg and the aarch64 in-guest leg; the
cross-process head matches byte-identically across arches
(head=0x066855300c57557b). NO new encoder harnesses (the policy ALGEBRA is
fully proven at stage A; pin stays 112). Offline + deterministic: NO network,
NO secret, all organs mocks (the real M32 organ is the #90 follow-up).

Surface: tb-hal selftests.rs (conductor_selftest) + verified_leaf.rs
(ConductorProof/facade) + the aarch64 inguest forge-test; kernel/src/main.rs
(the stage-B selftest agent block + write_dec_u64); conductor-host
(--recompute-from-trace); scripts/run-{x86_64,aarch64}.sh (the M38 guard
block + the displacement + the cross-process recompute); ci.yml
(conductor-host pre-build) + conductor-host.yml (stage-B cumulative-tail
invariant); docs (proposal Status + Landing-status, MILESTONES, ARCHITECTURE).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
run-vmm-x86_64.sh mirrors run-x86_64.sh's cumulative-tail discipline; advance
it to the M38 marker (demote-not-delete M31) + the M38 guard block + the §8.6
cross-process recompute leg, so the conductor loop is also witnessed under
tb-vmm/KVM. Builds conductor-host on demand (the lane runs on a cargo runner).
The conductor output is deterministic, so the cross-process head matches
identically under KVM (verified: the vmm-leg guard logic is sound).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant