T10: gate review and first compression pass
All four gate criteria met. False Adaptation Rate 0/7 with 12 of 13 mechanical mutations absorbed. 178 tests pass. TD-WP-0002 finished. Fitness loop closed via F-0003: actor isolation was a property of scenarios written to expose it, not of runs. Actors now carry an automatic private marker and the runner examines all of them on every scenario, with two permanent regressions behind it. Compression - six abstractions removed, each declared and never used: Verdict.SUSPICIOUS (a verdict no oracle could emit), Step.expect_refusal, ActorIsolationError, World.seed, EvidencePack.latest, Trajectory.method. F-0008: Temperature may be redundant. Crystallization was built without it ever being consulted; measured stability of realization did the work, and is observed rather than declared. Gated for removal alongside energy.py. INTENT_CHANGED and REALIZATION_FAILED had never run. Both now have purpose-built cases and a test that fails if a seventh outcome is added without one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 1629012@bnt-lap001 Assistant-Session: 78d4fb13-8a1e-474b-87a3-9b9261c49a39
This commit is contained in:
parent
4f4219d8f7
commit
1b9860a8ee
40 changed files with 1074 additions and 46 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# Concept ↔ Implementation Fitness Map
|
||||
|
||||
**Updated:** 2026-08-23 (TD-WP-0002-T09)
|
||||
**Updated:** 2026-08-23 (TD-WP-0002-T10)
|
||||
|
||||
Traces each important concept to the implementation, experiment and evidence that
|
||||
support it. **Unsupported entries are the point of this map** — a concept with no
|
||||
|
|
@ -29,7 +29,7 @@ were aspirational, not evidenced.
|
|||
| Concept | Level | Implementation | Experiment | Evidence | Open question |
|
||||
|---|---|---|---|---|---|
|
||||
| `C-use-case` | C1 | `intent.py` | — | — | Is a use case expressible without leaking mechanics? |
|
||||
| `C-actor-isolation` | C1 | `world.py` | E-001 | `td://self/actor-isolation` | **F-0003** — only observable when the scenario plants canaries. |
|
||||
| `C-actor-isolation` | **C2** | `world.py`, `runner.py` | E-001 | `td://self/actor-isolation`, examined every run | **F-0003 resolved** — automatic canaries; observable on every scenario. |
|
||||
| `C-semantic-action` | **C2** | `actions.py`, `agentic.py` | E-001 (partial) | T07 arm comparison | **F-0005** — supported only where stable identifiers are absent. Narrower than the concept model claims. |
|
||||
| `C-oracle-independence` | **C2** | `runner.py`, `oracles.py` | E-001, E-003 | — | Independence of components ≠ independence of belief. (H-004) |
|
||||
| `C-evidence-pack` | C1 | `evidence.py` | — | `td://self/evidence-reproducibility` | Verdicts are reproducible from S3 alone, on passing and failing runs. |
|
||||
|
|
@ -39,9 +39,9 @@ were aspirational, not evidenced.
|
|||
| `C-crystallization` | **C2** | `crystallization.py` | E-002 | T09 agreement matrix | Fidelity supported; **F-0007** — the economic case is unmeasurable with a token-free runtime. |
|
||||
| `C-intent-provenance` | C1 | `provenance.py` | E-003 | `td://self/intent-independence` | Constrains provenance, not quality. Accepted residual. |
|
||||
| `C-lineage` | C1 | `scenario.py`, generated headers | E-002 | generated module docstring | Parent pointer plus provenance in the artefact; no graph. |
|
||||
| `C-energy` | C0 | `energy.py`, capture only | — | — | Dormant by decision. (H-005) |
|
||||
| `C-temperature` | C0 | — | — | — | Deferred. No implementation planned in TD-WP-0002. |
|
||||
| `C-confidence` | C0 | — | — | — | Deferred. |
|
||||
| `C-energy` | C0 | `energy.py`, capture only | — | none | Dormant. **Gated**: if the next workplan ends with no decision having used the history, remove. |
|
||||
| `C-temperature` | **C0 — under review** | — | — | none | **F-0008** — crystallization was built without it; measured stability did the work. Gated for removal. |
|
||||
| `C-confidence` | C0 | — | — | none | Declared, unimplemented, never consulted. Same position as `C-temperature` without a built alternative. |
|
||||
| `C-campaign` | C0 | — | — | — | Deferred. |
|
||||
| `C-metabolism` | C0 | — | — | — | Deferred. Depends on C-energy. |
|
||||
| `C-retirement` | C0 | — | — | — | Deferred. Depends on C-energy. |
|
||||
|
|
@ -58,6 +58,13 @@ validated. They are revisited at T10, where the question is not "when do we buil
|
|||
these" but "does the evidence justify keeping them in the model at all".
|
||||
|
||||
**Implementation orphans** — none. Every module in `src/testdriver/` traces to a
|
||||
concept above. `energy.py` is the one to watch: it exists solely to capture
|
||||
events for a dormant hypothesis, and if T10 finds no use for the history it
|
||||
should be removed rather than kept out of sentiment.
|
||||
concept above.
|
||||
|
||||
**Removed at T10** (compression pass — see the gate review § 3):
|
||||
`Verdict.SUSPICIOUS`, `Step.expect_refusal`, `ActorIsolationError`,
|
||||
`World.seed`, `EvidencePack.latest()`, `Trajectory.method`. Each was declared and
|
||||
never used; `SUSPICIOUS` was additionally a verdict no oracle could emit.
|
||||
|
||||
**Gated for removal**: `C-temperature` (F-0008) and `energy.py`. Both survive the
|
||||
current review on the strength of being cheap, not of being used. If the next
|
||||
workplan closes without a decision consulting either, they go.
|
||||
|
|
|
|||
|
|
@ -2,12 +2,13 @@
|
|||
id: F-0003
|
||||
type: framework-finding
|
||||
class: FRAMEWORK_LIMITATION
|
||||
status: open
|
||||
status: resolved
|
||||
discovered: "2026-08-22"
|
||||
discovered_by: TD-WP-0002-T06
|
||||
workplan: TD-WP-0002
|
||||
task: TD-WP-0002-T06
|
||||
carried_to: TD-WP-0002-T10
|
||||
resolved: "2026-08-23"
|
||||
resolved_in: TD-WP-0002-T10
|
||||
---
|
||||
|
||||
# F-0003 — Actor isolation is only observable if the scenario plants canaries
|
||||
|
|
@ -55,9 +56,31 @@ system.
|
|||
Worth stating plainly rather than counting four green self-tests as four
|
||||
equivalent proofs. They are not equivalent.
|
||||
|
||||
## Candidate resolutions
|
||||
## Resolution (T10)
|
||||
|
||||
Not resolved now; deciding cheaply here would be guessing.
|
||||
Candidate 3 — **both**.
|
||||
|
||||
Every `Actor` is seeded at construction with an automatic private marker
|
||||
(`Actor.canary`), and `Runner._isolation_violations` examines every actor on
|
||||
**every** scenario, recording the verdict as S3 evidence. An isolation violation
|
||||
now leaves a trace whether or not anyone thought to look for one.
|
||||
|
||||
Two permanent regressions stand behind it:
|
||||
|
||||
- `tests/test_reference_scenario.py::test_every_run_records_a_verdict_on_isolation`
|
||||
- `tests/selfverification/test_checks_can_fail.py::test_a_leak_is_caught_without_the_test_planting_anything`
|
||||
— an actor holding another's marker is caught by the ordinary run, with the
|
||||
harness planting nothing.
|
||||
|
||||
The second limitation stands as recorded: oracle independence is enforced by
|
||||
construction, so it is verified once rather than per run. That asymmetry is real
|
||||
and is now stated in the fitness map rather than hidden behind two equally green
|
||||
self-tests.
|
||||
|
||||
This finding closed the first Concept–Implementation Fitness Loop — see
|
||||
`history/2026-08-23-td-wp-0002-gate-review.md` § 4.
|
||||
|
||||
## Candidate resolutions considered
|
||||
|
||||
1. **Automatic canaries** — the runtime seeds each actor with a unique private
|
||||
marker at construction and the isolation check runs on every Evidence Pack,
|
||||
|
|
|
|||
70
research/findings/F-0008-temperature-may-be-redundant.md
Normal file
70
research/findings/F-0008-temperature-may-be-redundant.md
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
---
|
||||
id: F-0008
|
||||
type: framework-finding
|
||||
class: UNNECESSARY_COMPLEXITY
|
||||
status: open
|
||||
discovered: "2026-08-23"
|
||||
discovered_by: TD-WP-0002-T10
|
||||
workplan: TD-WP-0002
|
||||
task: TD-WP-0002-T10
|
||||
carried_to: next workplan
|
||||
---
|
||||
|
||||
# F-0008 — Temperature may be redundant; measured stability did the work
|
||||
|
||||
## Observation
|
||||
|
||||
`Temperature` (`HOT` / `WARM` / `COOL` / `COLD`) is one of the more prominent
|
||||
ideas in `INTENT.md` and the Concept Model. It is supposed to govern which
|
||||
verification mode an asset uses, and it is the mechanism by which "tests
|
||||
crystallize as software cools".
|
||||
|
||||
The spike built crystallization end to end. **Temperature was never consulted,
|
||||
never implemented, and never missed.**
|
||||
|
||||
What actually triggered freezing was `assess_stability`: the same realization
|
||||
path observed across several consecutive runs. Nothing declared the surface cold;
|
||||
the surface was observed to have stopped moving.
|
||||
|
||||
## The argument for removal
|
||||
|
||||
The two mechanisms answer the same question, and only one of them can be wrong:
|
||||
|
||||
| | Temperature | Measured stability |
|
||||
|---|---|---|
|
||||
| source | declared by a human | observed from runs |
|
||||
| upkeep | must be maintained and kept honest | none |
|
||||
| failure mode | says `COLD` while the surface churns | none — it is the churn |
|
||||
| already built | no | yes |
|
||||
|
||||
A declared temperature is a claim about the system that nobody verifies. The
|
||||
project's own first heuristic — *do not let a declaration substitute for
|
||||
evidence* — argues against keeping it.
|
||||
|
||||
## The argument for keeping it
|
||||
|
||||
Two cases measured stability cannot cover:
|
||||
|
||||
1. **Forward-looking scope.** A team knows a rewrite lands next month.
|
||||
Temperature can say `HOT` before any run has observed instability, where
|
||||
measured stability would happily freeze an asset the day before it breaks.
|
||||
2. **Cheap prioritisation.** Deciding *where to spend effort* across many
|
||||
capabilities may want a coarse label without running anything.
|
||||
|
||||
Neither case arose in the spike, and neither is evidenced.
|
||||
|
||||
## Recommendation
|
||||
|
||||
Do not delete yet; do not build either. Carry `Temperature` as **explicitly
|
||||
unvalidated** in the fitness map, and set a gate: if the next workplan completes
|
||||
without any decision consulting it, remove it from the concept model.
|
||||
|
||||
Recorded now because the compression review's purpose is to catch concepts that
|
||||
survive on the strength of being attractive rather than useful, and Temperature
|
||||
is currently the clearest instance in the corpus.
|
||||
|
||||
## Related
|
||||
|
||||
`Confidence`, `Campaign`, `Metabolism` and `Retirement` are in the same position —
|
||||
declared, unimplemented, never consulted — but Temperature is the one with a
|
||||
built alternative already doing its job, which makes it the decidable case.
|
||||
Loading…
Add table
Add a link
Reference in a new issue