Two decisions taken with the operator: stdlib HTML driver instead of Playwright (F-0004), and a deterministic discovery runtime instead of a live model. Both sit behind interfaces so the alternatives drop in later. - html.py: stdlib DOM parse and query - agentic.py: DiscoveryRuntime (agentic arm, ignores data-td by construction) and RecordedSelectorRuntime (control arm, uses the strongest identifier the page offers) - browser.py: per-actor sessions over real HTTP, constructed per call so no actor inherits another's connection state - cost/nondeterminism metrics recorded from the first run F-0005 (CONCEPT_DRIFT): the H-001 result is a narrowing. Where test ids are preserved, discovery 9/9 and recorded selectors 9/9 - the semantic action buys nothing. Where they are dropped, discovery 2/3 and recorded 0/3. The concept model presents semantic actions as generally superior; the evidence says conditionally superior. M21 and M22 added mid-task: the deciding side of the axis was N=1. M22 (field names renamed) defeats the heuristic and is the first concrete evidence that a live model would add capability, not just cost. 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
4.2 KiB
Concept ↔ Implementation Fitness Map
Updated: 2026-08-22 (TD-WP-0002-T07)
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 implementation and no evidence is not a gap to be embarrassed about, it is the current honest state, and hiding it defeats the map's purpose.
Support levels follow TestDriverImprovementLoop.md §13:
C0 Idea · C1 Hypothesis · C2 Experimentally Supported ·
C3 Practically Validated · C4 Architectural Invariant
Current state
C-semantic-action is the first concept to reach C2: it has an experiment
behind it (the T07 two-arm comparison), and that experiment narrowed the claim
rather than confirming it. Everything else still rests on unit tests.
The deterministic kernel exists (T04) and its guarantees are covered by unit
tests. Levels do not move for those. A passing unit test is not an experiment: it
shows the code does what its author intended, not that the concept holds under
the mutations it claims to survive. Levels rise when E-001/E-002/E-003 produce
evidence, not before. The implementation column below moves; the level column
does not. The initial classifications in §13 of the Improvement Loop
(Actor Isolation C2, Independent Oracles C2) are corrected downward here: they
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-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 |
C1 | 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. |
C-observation-channel |
C1 | lab/app.py |
— | — | D-07 — required of every system under test. Adoption cost unknown. |
C-adaptation |
C1 | — (T08) | E-001 | — | (H-002) |
C-classification |
C1 | — (T08) | E-001, E-003 | — | Decision table is total on paper; unexercised. |
C-crystallization |
C1 | — (T09) | E-002 | — | (H-003) |
C-intent-provenance |
C1 | provenance.py |
E-003 | td://self/intent-independence |
Constrains provenance, not quality. Accepted residual. |
C-lineage |
C0 | — | — | — | Parent pointer only in the spike. |
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-campaign |
C0 | — | — | — | Deferred. |
C-metabolism |
C0 | — | — | — | Deferred. Depends on C-energy. |
C-retirement |
C0 | — | — | — | Deferred. Depends on C-energy. |
C-security-mutation |
C1 | lab/mutations.py |
E-003 | lab/GROUND-TRUTH.md |
Catalogue is hand-written; no derivation mechanism from use cases yet. |
Orphan check
Conceptual orphans — concepts with no planned implementation in TD-WP-0002:
C-temperature, C-confidence, C-campaign, C-metabolism, C-retirement.
All five are deferred by explicit decision, not oversight. They are the group most at risk of being built because they are easy and satisfying, and never validated. They are revisited at T10, where the question is not "when do we build 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.