Steps
Phase 8 — Exploration first, governed by the fly (steps 23–24)
Step 23. Make exploration the default mission.
In runners/explore/src/main.rs, the run loop already asks QUALIA_COMPUTE_SOCKET to plan. Change
its default objective so the first mission opened at stack start is a frontier sweep: publish
MissionOpened { mission_id: "explore-frontier" } through the braid, request plans as today, and
include the fly prior's type-level in-strength in the planner request's existing belief_risk field —
uncertainty_weight from the prior's total applied weight, semantic_novelty from the fraction of
types in the chosen frontier that carry dimorphism = male-specific. Both are clamped to 0.0..=1.0
as belief_risk_penalty in runners/cuda-service/src/planner.rs already assumes.
Step 24. Keep leash's full capability set, governed.
Leash stays the motion authority: nothing in Phases 3–8 issues motor output. The harness reaches it
through QUALIA_LEASH_BASE_URL (already read by runners/agent). Add to
docs/contracts/planner-service-v1.md a one-paragraph note, and to crates/sync-types/src/mission.rs
a pub fly_governed: bool field defaulting to false (serde default, so older envelopes still
decode) which the agent sets to true when the prior is loaded. Test:
crates/sync-types/tests/mission.rs::fly_governed_defaults_false_and_round_trips.
Step 24b. Keep the sensing runners, and make time a belief input.
These runners stay and are not rewritten: runners/lidar, runners/camera, runners/vision
(object recognition; it fills WorldModel/voxels/lore and answers QuestionSlots),
runners/floor, runners/vslam, runners/pose, runners/map, runners/health. They are what gives
the harness leash's sensing capability set; this plan edits only pose and map (Step 21).
Time perception: qualia-jepa-model's RuntimeInput already carries delta_seconds: f32, so the
belief tick is already timed. Surface it — add pub fn decision_latency_ns(&self) -> u64 to
crates/braid/src/lib.rs (newest BeliefSlot timestamp in crates/types/src/lib.rs minus the newest
ledger entry's), and have Step 27's TUI Braid line render it as belief lag: {ms} ms. If a pose filter
(Kalman or otherwise) is expected, find it by reading runners/pose/src/main.rs before editing; if it
holds no filter, do not add one — pacing (Step 21) is the only change this plan makes to the
estimation path.
Clean-room decision in effect. The public repository is a from-scratch rewrite under
Apache-2.0. No file is copied from any private repository; the private engine is read only for
its interfaces, and the connectome dataset only for its graph. See docs/decisions.md.
Tickets
Journal
Entry slug: the-agent-in-the-loop — URL filled in when the entry is published.
Steps
Phase 8 — Exploration first, governed by the fly (steps 23–24)
Step 23. Make exploration the default mission.
In
runners/explore/src/main.rs, the run loop already asksQUALIA_COMPUTE_SOCKETto plan. Changeits default objective so the first mission opened at stack start is a frontier sweep: publish
MissionOpened { mission_id: "explore-frontier" }through the braid, request plans as today, andinclude the fly prior's type-level in-strength in the planner request's existing
belief_riskfield —uncertainty_weightfrom the prior's total applied weight,semantic_noveltyfrom the fraction oftypes in the chosen frontier that carry
dimorphism = male-specific. Both are clamped to0.0..=1.0as
belief_risk_penaltyinrunners/cuda-service/src/planner.rsalready assumes.Step 24. Keep leash's full capability set, governed.
Leash stays the motion authority: nothing in Phases 3–8 issues motor output. The harness reaches it
through
QUALIA_LEASH_BASE_URL(already read byrunners/agent). Add todocs/contracts/planner-service-v1.mda one-paragraph note, and tocrates/sync-types/src/mission.rsa
pub fly_governed: boolfield defaulting tofalse(serde default, so older envelopes stilldecode) which the agent sets to
truewhen the prior is loaded. Test:crates/sync-types/tests/mission.rs::fly_governed_defaults_false_and_round_trips.Step 24b. Keep the sensing runners, and make time a belief input.
These runners stay and are not rewritten:
runners/lidar,runners/camera,runners/vision(object recognition; it fills
WorldModel/voxels/lore and answersQuestionSlots),runners/floor,runners/vslam,runners/pose,runners/map,runners/health. They are what givesthe harness leash's sensing capability set; this plan edits only
poseandmap(Step 21).Time perception:
qualia-jepa-model'sRuntimeInputalready carriesdelta_seconds: f32, so thebelief tick is already timed. Surface it — add
pub fn decision_latency_ns(&self) -> u64tocrates/braid/src/lib.rs(newestBeliefSlottimestamp incrates/types/src/lib.rsminus the newestledger entry's), and have Step 27's TUI Braid line render it as
belief lag: {ms} ms. If a pose filter(Kalman or otherwise) is expected, find it by reading
runners/pose/src/main.rsbefore editing; if itholds no filter, do not add one — pacing (Step 21) is the only change this plan makes to the
estimation path.
Tickets
fly_governedin missions #39fly_governedin missionsJournal
Entry slug:
the-agent-in-the-loop— URL filled in when the entry is published.