sica-fondt/docs/plans/A1-drivebox-hub.md
Claude 169ff3e21a
docs/plans: component build specs — index + OpenHermes↔metacog + Drive-Box (A1–A8)
Per-sub-organ build plans so each organ can be made independently. Each spec
follows a shared 10-section template (contract + stubs => standalone build/test).

- README.md: index, template, integration DAG, build waves
- C1: OpenHermes Agent <-> metacognitive cycling (priority)
- A1 hub, A2 Energy, A3 PS+, A4 endomotiv array, A5 priors, A6 Eth-Int,
  A7 conviction array, A8 ETR

Numbers stay disowned per restart discipline; unfitted constants marked C1.

https://claude.ai/code/session_015hmgREHNsxYCuim33yUF2c
2026-06-13 20:03:39 +00:00

2.6 KiB

A1 — Drive-Box hub / input-slot

1. Component

The Drive-Box nervous-system wiring: assembles the four drivers (A2 E, A3 PS+, A6 Eth-Int, A8 ETR) + tarot/SOUL into one input slot (a hub, not a chain) and exposes the read-only snapshot the inference cycle pulls at step 2.

2. Status / certainty

Structure WORKING (drive_box.R, 158 L). Aggregation logic C3; the numbers inside the drivers are disowned (see each driver spec).

3. Language & location

R · src/endocrine/drive_box.R (sources the drivers + endocrine_array.R + priors.R).

4. Does / does-not

  • Does: init the whole box; produce drive_snapshot() (affect + cost terrain, read-only); run a proposed action through all drivers (drive_box_evaluate); apply feedback (drive_box_commit); assemble the drive_box_input_slot() injection block.
  • Does-not: decide (PS+ emits arguments, not verdicts); route or police (Ada D1); persist (storage E*).

5. Interface contract

  • init_drive_box() -> state{ energy, ps_plus, principles, etr }.
  • drive_snapshot(state) -> { e_level, tool_locked, existential_load, arguments[], etr_coord, etr_status } — this is exactly what Ada (D1) admits to the Brain at cycle step 2 (content #1).
  • drive_box_evaluate(state, action{tags,alignment,base_cost,is_tool_call}) -> { approved, costs, reasons }.
  • drive_box_commit(state, action, approved) -> state' (consumes E, hardens conviction).
  • drive_box_input_slot(state) -> text block (drivers + tarot lenses + SOUL.md, assembled concurrently).

6. Dependencies & stubs

A2/A3/A6/A8 drivers — stub: each init_* + its evaluator returning canned values; A1 wiring testable with stub drivers. Tarot (B1) for the input-slot lenses — stub: identity (no lens).

7. Invariants / laws

  • L1 (C4): the slot is a hub — all drivers + tarot + SOUL write concurrently, no driver subordinated to another.
  • L2 (C4): drive_snapshot is read-only (no driver state mutates on a snapshot).
  • L3 (C3): evaluate order is PS+ → Eth-Int → Energy → ETR; commit only on approval.

8. Build steps

  1. Freeze the snapshot + slot contracts (§5) as tests in test_drive_box.R (already ~117 L — extend).
  2. Keep wiring; replace each driver's disowned constants as those specs land (A2/A3/A6/A8).
  3. Add the R↔Ada bridge later (how drive_snapshot reaches ada_medium step 2) — see C3 / D2.

9. Tests

bash src/endocrine/run_tests.sh (runs test_drive_box.R + driver tests). All must stay green as driver numbers are refit.

10. Open items

  • R↔Ada/medium bridge transport (C1/C3/D2).
  • Whether the input-slot text format is final (tarot lens injection shape depends on B1).