sica-fondt/docs/plans/A6-ethint.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

50 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# A6 — Eth-Int (Ethical Integrity) driver
## 1. Component
Driver 3: character as an **economic constraint field** — a cost-map, not a moral oracle. Produces
the E-cost of responding to reality: alignment discounts, antithetical penalties, conviction hardening.
## 2. Status / certainty
Structure WORKING (`driver_ethical_integrity.R`, 87 L); numbers DISOWNED (body §5). Per arch §6 it is
**not a stored stratum — a memory-derivative** (entries with memory-weighted shifting numerics).
## 3. Language & location
R · `src/endocrine/driver_ethical_integrity.R` (+ `test_ethical_integrity.R`). Its state = the
**Conviction array** (A7).
## 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.
- **Does-not:** assert moral truth, or persist itself as a stratum (it derives from memory; see A7/E2).
## 5. Interface contract
- `evaluate_trajectory_costs(convictions, action_tags, alignment_tags, base_energy, compromise_factor)
-> total_cost` (penalty exponential in conviction; discount exponential; compromise = partial penalty).
- `enforce_conviction(convictions, chosen_alignment_tags, load_factor) -> convictions'`
(hardening ∝ load, diminishing toward 1.0).
- Reads/writes the **conviction array** (A7). Emits `eth_penalty` consumed by Energy (A2).
## 6. Dependencies & stubs
A7 conviction array — *stub:* a flat list `{id, conviction, antithesis}` (today's shape). Energy (A2)
consumes its penalty — *stub:* return the scalar. Testable today against the flat array.
## 7. Invariants / laws (numbers C1 until tested)
- **L1 (C4):** antithetical action → cost rises **exponentially** in conviction; multiple violations **add**
(can exceed E capacity → physically impossible).
- **L2 (C4):** alignment → exponential **discount** ("flow state").
- **L3 (C4):** **middle-ground** is a separate trajectory with **partial** penalties to both poles,
weighed against the polar options.
- **L4 (C4):** conviction **hardens under load**; G1 stress raises the **shift-rate** (A7).
- **L5 (C1):** all k's (penalty/discount/compromise) — refit invariants-first.
## 8. Build steps
1. Lock L1L4 as tests (extend `test_ethical_integrity.R`). 2. Refit the k's — drop old k_penalty=5 /
k_discount=5. 3. Migrate state to the A7 conviction array (isomorphy tags + shift-rates). 4. Wire G1.
## 9. Tests
`Rscript src/endocrine/test_ethical_integrity.R`.
## 10. Open items
- The k constants (C1). The middle-ground compromise scaling (C1).
- Exact "memory-derivative" derivation (how convictions are computed from memory) — ties to A7/E2.