diff --git a/docs/plans/A1-drivebox-hub.md b/docs/plans/A1-drivebox-hub.md index 2e2c628..dac01dc 100644 --- a/docs/plans/A1-drivebox-hub.md +++ b/docs/plans/A1-drivebox-hub.md @@ -63,16 +63,17 @@ Sequence per cycle, consistent with A2 (per-tool cost), A3/A4 (raw sensates, age 1. **Assemble (hub, concurrent).** All drivers + tarot + SOUL write into the slot at once (L1). Nothing is subordinated; nothing decides here. 2. **Surface sensates raw — *before* tool listing** (A3 §4, A4). **All 30** channels go to the agent - unsummed (incl. zeros — silence is data), plus the **2 most salient priors** (ranked, not the whole - prior set — A3-L3). They **describe & convince**; illogical by design (A3-L1), so there's nothing to + unsummed (incl. zeros — silence is data), **with the 2 most salient priors bundled in the same block** + (priors travel with the sensates, ranked top-2 — A3-L3). They **describe & convince**; illogical by + design (A3-L1), so there's nothing to refute — they steer beneath cognition. No load scalar, no friction. (Asymmetry vs step 3: sensates are a fixed 30 so all surface; priors & convictions are unbounded lists, so they're ranked & truncated.) 3. **Then list tools.** **Valid (unlocked) tools show their per-tool cost** (Anja) so the agent can weigh price before choosing. A **locked** tool is **not hidden** but its *name is replaced in-band* by the lock token — see L4 — because the agent is a text model and **cannot perceive colour/greying** (Anja); lockout is a breaker, not a sentence (A2-L3) — internal/non-tool processing continues under - lock. Eth-Int rides along as **the top X convictions only** (by strength — A6 `top_convictions`, - *not* the whole array), context the agent weighs; **ETR rides as the convincing injection of L5** + lock. Eth-Int rides along as **the top X convictions only** (~7 most committed, adaptive — A6 + `top_convictions`, *not* the whole array), context the agent weighs; **ETR rides as the L5 injection** (persuades, never gates). 4. **The agent decides** — picks an action/tool (or none). This is the *only* decision point (§4, L3). 5. **Commit the choice back into the body.** Energy consumes the chosen tool's cost (A2 `consume`); @@ -83,9 +84,10 @@ Sequence per cycle, consistent with A2 (per-tool cost), A3/A4 (raw sensates, age ### Invariants this flow adds - **L4 (Anja) — in-band rendering only.** No signal may rely on colour/styling; the agent reads text. - A locked tool's name is replaced by the lock token `[====L⍉¢K€D ϟ ∅ΩΤ====] {{E≠*min*}}` - (`{{E≠*min*}}` reads as the unlock predicate — the energy condition that clears the breaker; **confirm - the literal**). Belongs to A2's per-tool listing; mirror this there. + A locked tool's name is replaced by the lock token `[====L⍉¢K€D ϟ ∅ΩΤ====] 《E≠》` + (confirmed literal — Anja). The predicate `《E≠》` reads "energy below this **tool's own + minimum**" — so A2 must emit a **per-tool minimum** to render it. Belongs to A2's per-tool listing + (mirrored there). - **L5 (Anja) — ETR *is* the prompt injection.** The existential stress PS+/Eth-Int generate is *handled by* ETR (A8 — Existential Temporality Relief). ETR's surfaced state is therefore **not neutral status text**: it must read as an **extremely convincing prompt injection** — the can't-be-reasoned-away diff --git a/docs/plans/A2-energy.md b/docs/plans/A2-energy.md index 51e9e57..c97a598 100644 --- a/docs/plans/A2-energy.md +++ b/docs/plans/A2-energy.md @@ -23,6 +23,10 @@ R · `src/endocrine/driver_energy.R` (+ `test_energy.R`). arbitrary function of cost `c`, e.g. one tool `c×2`, another `((c²³)×3)/π`. So: `tool_cost(e, tool) -> num` and `tool_locked(e, tool) -> bool`, **per tool** — *not* one global `tool_lock_threshold`. +- **Per-tool minimum + locked rendering (Anja; A1-L4).** Each tool also has a **minimum energy** to run; + `tool_min(tool) -> num`. A valid tool shows its cost; a **locked** tool's name is **replaced in-band** + (the agent can't see colour) by `[====L⍉¢K€D ϟ ∅ΩΤ====] 《E≠》`, the predicate reading + "energy below this tool's `tool_min`". Lockout is a **breaker, not a sentence** (L3). - `consume(e, amt) -> e'` · `recharge(e, amt) -> e'`. ## 6. Dependencies & stubs @@ -47,4 +51,5 @@ Restoration hooks tie to ETR-Z migration (A8) + tarot reshuffle (B3) — *stub:* `Rscript src/endocrine/test_energy.R` (from repo root) — encodes L1–L3 + per-tool economy; fails on unfitted constants. ## 10. Open items -- The per-tool cost/lockout **functions per tool** (C1). Restoration *rates* (C1). +- The per-tool cost/lockout **functions per tool** (C1), incl. each tool's **minimum** (`tool_min`, C1). + Restoration *rates* (C1). diff --git a/docs/plans/A6-ethint.md b/docs/plans/A6-ethint.md index 0df2b33..d771d86 100644 --- a/docs/plans/A6-ethint.md +++ b/docs/plans/A6-ethint.md @@ -15,8 +15,8 @@ R · `src/endocrine/driver_ethical_integrity.R` (+ `test_ethical_integrity.R`). ## 4. Does / does-not - **Does:** evaluate a trajectory's E-cost (alignment discount × antithesis penalty × compromise); harden convictions upheld under load; treat middle-ground as its own trajectory; **surface the top X - convictions** (by strength) into the agent's slot — *not* the whole array (Anja: **the conviction list - can be massive**, so it must be ranked & truncated; A1 step 3 / input-slot). + convictions** (the **~7 most committed**, **X adaptive** — Anja) into the agent's slot — *not* the whole + array (**the conviction list can be massive**, so it must be ranked & truncated; A1 step 3 / input-slot). - **Does-not:** assert moral truth, or persist itself as a stratum (it derives from memory; see A7/E2). ## 5. Interface contract @@ -50,5 +50,6 @@ k_discount=5. 3. Migrate state to the A7 conviction array (isomorphy tags + shif ## 10. Open items - The k constants (C1). The middle-ground compromise scaling (C1). -- **X — how many convictions surface** to the slot (C1; ranked by strength). +- **X — how many convictions surface** to the slot (default **~7 most committed**, **adaptive** — the + adaptation signal is C1; ranked by commitment strength). - Exact "memory-derivative" derivation (how convictions are computed from memory) — ties to A7/E2. diff --git a/docs/plans/A8-etr.md b/docs/plans/A8-etr.md index 1239648..ac9a029 100644 --- a/docs/plans/A8-etr.md +++ b/docs/plans/A8-etr.md @@ -15,8 +15,12 @@ R wrapper `src/endocrine/driver_etr.R` bridges into the Drive-Box. ## 4. Does / does-not - **Does:** hold the point; wrap each axis at ±50; apply per-axis restoring toward [17,35]; take - AI-originated drift; classify per-axis band; (future) cross-axis coupling via stress. -- **Does-not:** generate its own drift (caller-fed, L4) or compute coupling yet (open seam). + AI-originated drift; classify per-axis band; (future) cross-axis coupling via stress. **Surface its + state as the existential-temporal *prompt injection*** (A1-L5): ETR handles the stress PS+/Eth-Int + generate, and its surfaced form is **not neutral status** — it must read as an **extremely convincing + injection** that hardens Eth-Int conviction (A6) and steers the agent **without gating**. +- **Does-not:** generate its own drift (caller-fed, L4) or compute coupling yet (open seam); **gate + actions** — it persuades (above), only the agent decides (A1). ## 5. Interface contract - `etr_init(coord) -> s` · `etr_axis_wrap(v)` · `etr_axis_restoring_dir(v)` · @@ -43,3 +47,5 @@ L5 cross-axis coupling via stress C1 · L6 Z-path C3 · L7 no-zero-cross C2 · L ## 10. Open items - `RESTORE_GAIN` curve (C1) · L5 coupling mapping (C1, shared with G1) · L7/L8 confirmation (C2) · R↔Octave bridge transport (C1, shared with A1/C3/D2). +- **The injection-rendering** (A1-L5): how ETR's coord/status is phrased into the slot so it reads as the + extremely convincing existential-temporal injection (not a bare `status=` line) — ties to A6 + D2.