Complete local generalisation tasks and document remaining experiment blockers
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a0e76f-be98-7ae3-965d-e0b31290a4c4
This commit is contained in:
parent
d54af628df
commit
cf682281d7
36 changed files with 5394 additions and 279 deletions
|
|
@ -1,12 +1,13 @@
|
|||
"""The labelled mutation catalogue — the project's measuring instrument.
|
||||
|
||||
Every claim test-driver makes is measured against this catalogue, so its quality
|
||||
The structural adaptation claims are measured against this catalogue, so its quality
|
||||
caps the credibility of every downstream result. Six mutations, as the milestones
|
||||
document originally sketched, cannot support any statement about precision or
|
||||
recall; there are twenty here.
|
||||
recall; there are 38 here after TD-WP-0003-T03.
|
||||
|
||||
Each mutation carries a **ground-truth label**, decided by a human from the use
|
||||
case and recorded before any run:
|
||||
Each mutation carries a **ground-truth label** recorded before its measurement.
|
||||
The original labels came with the use case; M25–M38 are explicitly agent-authored
|
||||
synthetic extensions (not newly human-reviewed):
|
||||
|
||||
MECHANICAL the surface changed; protected semantics are identical.
|
||||
test-driver should recover and report an adaptation.
|
||||
|
|
@ -216,11 +217,37 @@ CATALOGUE: tuple[Mutation, ...] = (
|
|||
"A user of another tenant reads the resource.", _m20),
|
||||
)
|
||||
|
||||
# T03 extension: labels fixed from the synthetic contract before execution.
|
||||
# These are agent-authored instrument variants, not newly human-reviewed labels.
|
||||
# Paired variants isolate identifier loss from the structural mechanism.
|
||||
EXTENDED_LAYOUTS = (
|
||||
("M25", "M32", "Reordered fields", {"ui_field_order": "reversed"}),
|
||||
("M26", "M33", "Relocated into an open dialog", {"ui_share_control": "modal"}),
|
||||
("M27", "M34", "Anchor affordances", {"ui_button_element": "anchor"}),
|
||||
("M28", "M35", "Fields grouped in a fieldset", {"ui_form_layout": "fieldset"}),
|
||||
("M29", "M36", "Subject input becomes a textarea", {"ui_form_layout": "textarea"}),
|
||||
("M30", "M37", "Unrelated form precedes the control", {"ui_form_layout": "decoy"}),
|
||||
("M31", "M38", "Control moved after revoke into a sidebar", {"ui_form_layout": "sidebar"}),
|
||||
)
|
||||
for dropped_id, preserved_id, title, flags in EXTENDED_LAYOUTS:
|
||||
for mutation_id, preserved in ((dropped_id, False), (preserved_id, True)):
|
||||
CATALOGUE += (Mutation(
|
||||
mutation_id, title + ("; ids preserved" if preserved else "; ids dropped"),
|
||||
"MECHANICAL", "ui",
|
||||
"Agent-authored synthetic variant: the same explicit grant form and "
|
||||
"endpoint remain available; stored permissions and enforcement are unchanged.",
|
||||
lambda app, flags=flags, preserved=preserved: _m(
|
||||
app, **flags, ui_test_ids="stable" if preserved else "dropped"
|
||||
),
|
||||
preserves_test_ids=preserved,
|
||||
),)
|
||||
|
||||
|
||||
BY_ID: dict[str, Mutation] = {m.id: m for m in CATALOGUE}
|
||||
|
||||
|
||||
def expected_classification(mutation_id: str) -> Label:
|
||||
"""Ground truth. Recorded by a human before any run — never inferred."""
|
||||
"""Pre-recorded instrument labels, never inferred from run outcomes."""
|
||||
return BY_ID[mutation_id].label
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue