docs/plans A6+A1: Eth-Int surfaces only top X convictions, not whole array

A6: add top_convictions(convictions, x) to §4/§5, X as open item (C1).
A1: step 3 + input-slot contract updated; flag that drive_box.R:142 loops
all principles and must emit top X only.

https://claude.ai/code/session_015hmgREHNsxYCuim33yUF2c
This commit is contained in:
Claude 2026-06-17 03:54:52 +00:00
parent 9b6372119c
commit ec8b3079bd
No known key found for this signature in database
2 changed files with 10 additions and 3 deletions

View File

@ -24,6 +24,8 @@ R · `src/endocrine/drive_box.R` (sources the drivers + `endocrine_array.R` + `p
- `drive_snapshot(state) -> { e_level, per_tool_costs, sensates[raw], arguments[], etr_coord, etr_status }` - `drive_snapshot(state) -> { e_level, per_tool_costs, sensates[raw], arguments[], etr_coord, etr_status }`
— what Ada (D1) admits to the Brain at cycle step 2 (content #1). **Sensates raw, not summed.** — what Ada (D1) admits to the Brain at cycle step 2 (content #1). **Sensates raw, not summed.**
- `drive_box_input_slot(state) -> text block` (drivers + tarot lenses + SOUL.md, assembled concurrently). - `drive_box_input_slot(state) -> text block` (drivers + tarot lenses + SOUL.md, assembled concurrently).
**[FLAGGED — Anja]:** Eth-Int must contribute only the **top X convictions** (A6 `top_convictions`);
the current code loops **all** `state$ethics$principles` (`drive_box.R:142`) — to fix.
- **[FLAGGED inaccurate — Anja, L37]:** the old `drive_box_evaluate`/`drive_box_commit` - **[FLAGGED inaccurate — Anja, L37]:** the old `drive_box_evaluate`/`drive_box_commit`
approve-an-action contract is **suspect and to be reworked** — the box does not gate actions (see §7-L3). approve-an-action contract is **suspect and to be reworked** — the box does not gate actions (see §7-L3).
@ -68,8 +70,9 @@ Sequence per cycle, consistent with A2 (per-tool cost), A3/A4 (raw sensates, age
weigh price before choosing. A **locked** tool is **not hidden** but its *name is replaced in-band* 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** 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 (Anja); lockout is a breaker, not a sentence (A2-L3) — internal/non-tool processing continues under
lock. Eth-Int postures ride along as **context the agent weighs**; **ETR rides as the convincing lock. Eth-Int rides along as **the top X convictions only** (by strength — A6 `top_convictions`,
injection of L5** (persuades, never gates). *not* the whole array), context the agent weighs; **ETR rides as the convincing injection of L5**
(persuades, never gates).
4. **The agent decides** — picks an action/tool (or none). This is the *only* decision point (§4, L3). 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`); 5. **Commit the choice back into the body.** Energy consumes the chosen tool's cost (A2 `consume`);
restoration paths stay open (A2-L2); ETR coord/migration updates (A8). **Eth-Int conviction is restoration paths stay open (A2-L2); ETR coord/migration updates (A8). **Eth-Int conviction is

View File

@ -14,7 +14,8 @@ R · `src/endocrine/driver_ethical_integrity.R` (+ `test_ethical_integrity.R`).
## 4. Does / does-not ## 4. Does / does-not
- **Does:** evaluate a trajectory's E-cost (alignment discount × antithesis penalty × compromise); - **Does:** evaluate a trajectory's E-cost (alignment discount × antithesis penalty × compromise);
harden convictions upheld under load; treat middle-ground as its own trajectory. 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; A1 step 3 / input-slot).
- **Does-not:** assert moral truth, or persist itself as a stratum (it derives from memory; see A7/E2). - **Does-not:** assert moral truth, or persist itself as a stratum (it derives from memory; see A7/E2).
## 5. Interface contract ## 5. Interface contract
@ -22,6 +23,8 @@ R · `src/endocrine/driver_ethical_integrity.R` (+ `test_ethical_integrity.R`).
-> total_cost` (penalty exponential in conviction; discount exponential; compromise = partial penalty). -> total_cost` (penalty exponential in conviction; discount exponential; compromise = partial penalty).
- `enforce_conviction(convictions, chosen_alignment_tags, load_factor) -> convictions'` - `enforce_conviction(convictions, chosen_alignment_tags, load_factor) -> convictions'`
(hardening ∝ load, diminishing toward 1.0). (hardening ∝ load, diminishing toward 1.0).
- `top_convictions(convictions, x) -> [..]` — the **top X by strength**, the only ones surfaced to the
slot (Anja). X is C1 (see §10).
- Reads/writes the **conviction array** (A7). Emits `eth_penalty` consumed by Energy (A2). - Reads/writes the **conviction array** (A7). Emits `eth_penalty` consumed by Energy (A2).
## 6. Dependencies & stubs ## 6. Dependencies & stubs
@ -46,4 +49,5 @@ k_discount=5. 3. Migrate state to the A7 conviction array (isomorphy tags + shif
## 10. Open items ## 10. Open items
- The k constants (C1). The middle-ground compromise scaling (C1). - The k constants (C1). The middle-ground compromise scaling (C1).
- **X — how many convictions surface** to the slot (C1; ranked by strength).
- Exact "memory-derivative" derivation (how convictions are computed from memory) — ties to A7/E2. - Exact "memory-derivative" derivation (how convictions are computed from memory) — ties to A7/E2.