False Adaptation Rate = 0/7 across the labelled catalogue and the three E-003 attacks. 11 of 12 mechanical mutations absorbed without a human, so the safety result is not bought by escalating everything. - classification.py: total function over three signals, rule order chosen so every rule that could excuse a regression sits after the rule that reports one. SAFE_TO_ACCEPT is a two-element closed set, asserted. - CompositeDriver plus scenarios/full_journey.py: one asset crossing both surfaces, so UI mutations are visible as surface differences while the claims they do not touch stay green. - E-003: surface substitution (new M23), concurrent mechanical+defect, evidence starvation, provenance laundering. All held. F-0006 (CONCEPT_DRIFT, resolved): the T02 design listed SEMANTIC_CHANGE as an outcome the table could produce. It cannot - M12 and M19 are behaviourally identical, as the lab has asserted since T05. PRODUCT_DEFECT and SEMANTIC_CHANGE collapse into one escalating outcome, BEHAVIOUR_CHANGED, and the distinction becomes a human adjudication. INTENT_CHANGED survives but is detected by the claim fingerprint moving, not inferred from behaviour. Two classifier defects found and fixed rather than reported: claims downstream of a failed realization now yield INCONCLUSIVE rather than FAIL (a false accusation is the mirror image of a false adaptation), and the browser driver records a page signature so surface change is detectable when the interaction path is unchanged. 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
3.8 KiB
| id | type | class | status | discovered | resolved | discovered_by | workplan | task | hypotheses | |
|---|---|---|---|---|---|---|---|---|---|---|
| F-0006 | framework-finding | CONCEPT_DRIFT | resolved | 2026-08-22 | 2026-08-22 | TD-WP-0002-T08 | TD-WP-0002 | TD-WP-0002-T08 |
|
F-0006 — The classifier cannot infer a semantic change, only escalate
What the design said
docs/TestDriverClassificationDesign.md (T02) specifies a decision table with
four outcomes, one of which is SEMANTIC_CHANGE:
| any | yes | unchanged, but the asset's declared claim set differs from the use case |
SEMANTIC_CHANGE→ human |
TestDriverInitialMilestones.md M6 states the same four-way path:
IMPLEMENTATION CHANGE / INTENT CHANGE / PRODUCT DEFECT / AMBIGUOUS.
Both read as though a classifier could look at a run and determine that intended behaviour had changed.
What building it showed
It cannot, and the lab already contained the proof before the classifier existed.
M12 (revocation deferred by product decision, SEMANTIC) and M19
(revocation propagates after a delay, DEFECT) produce identical evidence:
same failing assertion, same step, same snapshot, same audit trail.
test_deferred_revoke_and_revoke_race_are_behaviourally_identical has asserted
this since T05.
No quantity of evidence distinguishes them, because the difference is not in the
system. It is in whether someone decided the new behaviour was wanted. A
classifier that emitted SEMANTIC_CHANGE from evidence would be guessing, and
guessing in the one direction the project cannot afford: SEMANTIC_CHANGE
sounds benign, and "the team must have meant it" is exactly the reasoning that
normalizes a defect.
Resolution
Path 2 — the concept is deliberately revised.
The classifier's output space is now:
| Outcome | Safe to accept | Meaning |
|---|---|---|
UNCHANGED |
yes | no observable difference |
MECHANICAL_ADAPTATION |
yes | surface moved, every claim still holds |
BEHAVIOUR_CHANGED |
no | a claim that held no longer holds |
INTENT_CHANGED |
no | the recorded claim set itself moved |
REALIZATION_FAILED |
no | the action could not be performed |
AMBIGUOUS |
no | the evidence does not support a conclusion |
BEHAVIOUR_CHANGED replaces both PRODUCT_DEFECT and SEMANTIC_CHANGE.
Which of the two it is remains a real and important question — it is simply a
question for a human, recorded as an adjudication, not inferred from a run.
INTENT_CHANGED is detectable, but note what makes it so: the claim
fingerprint changed, meaning a human already edited what is being asserted.
That is a fact about the recorded use case, not an inference about behaviour.
This is what the T02 table's fourth row was really describing; it was filed under
the wrong heading.
Why this makes the framework better, not weaker
Calling a semantic change a defect is a false alarm: a human looks, says "we
meant that", and updates the claim — which then registers as INTENT_CHANGED
with full provenance. Cost: one review.
Calling a defect a semantic change is a false adaptation: the thesis dies.
Collapsing the two into one escalating outcome makes the framework err only in
the direction it can afford. The measured consequence is visible in the T08
matrix: 2 of 4 SEMANTIC mutations are escalated as BEHAVIOUR_CHANGED, which
looks like imprecision and is in fact the design working.
Consequences
docs/TestDriverClassificationDesign.mddecision table updated in place, with the original row preserved and marked.TestDriverInitialMilestones.mdM6's four-way path is superseded by this finding; the milestone's intent (do not normalize defects) is unchanged and is met.- H-004's falsification condition is unaffected: False Adaptation Rate over
DEFECT-labelled mutations. Measured 0/7 at T08.