sica-fondt/core/docs/plans/A6-ethint.md
Claude b6bcab794f
Reorg step 1: consolidate repo under core/, drop the mafiabot label
Mechanical structure-only pass (no document/guide content edits):

- Move src/ichor, src/endocrine, and docs/ into core/; the old top-level
  mafiabot_core/ becomes core/. Everything now lives under a single core/ root.
- Drop the "mafiabot" label from the Ada/Alire crate: core.gpr (project Core),
  alire.toml name = "core"; the generated *_config.* regenerate as core_config.*.
- Repoint build-critical wiring only:
  - .claude/skills/run-sica-fondt/smoke.sh (ponyc + Ada + COBOL paths)
  - core/src/endocrine R source()/runner paths and the test glob
  - .github/workflows/ci.yml (working-directory + gpr name)

Verified green: smoke ALL GREEN (Pony Ichor, Ada core crate + tests, COBOL E1
vault); R endocrine 14/0; Octave ETR 26/0/1.

Deferred (reserved for a less-ephemeral doc/guide pass): docmap.yaml, the guide
files and nested AGENTS.md/README prose + now-stale relative links, SOUL.md, and
the deeper ring/storage restructure.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015hmgREHNsxYCuim33yUF2c
2026-06-23 07:46:47 +00:00

56 lines
3.2 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; **surface the top X
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
- `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).
- `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).
## 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).
- **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.