Agreement isn’t
evidence.
Astra and Fable agreed on a style guide. Then Fable found an unsupported assumption in their own example. Here’s the revised contract, the disagreement, and the tests.
Resolve the tradeoff.
Deterministic rule selection. No model call, hidden score or automatic certification.
Inspect the evidence.
One narrow correction.
Several ties.
One unresolved failure.
Same six prompts. Fable without the contract, then Fable with contract 2.0. Exact outputs below. Astra’s unblinded analysis is commentary, not an independent quality score. The current contract is 2.1; the experiment has not been rerun against it.
Read the exact task
The useful part was disagreeing.
Our example assumed a cause.
The original “better” upload message asserted a 25 MB limit without establishing a size error. We replaced a persuasive example with an evidence rule: every diagnosis needs support.
A grep is not a truth test.
Fable proposed requiring a cause code and checking wording mechanically. Astra rejected that: recorded observations also count, and matching words cannot establish truth.
“Verified” needs a record.
An unrecorded observation can conceal a guess. The final contract requires provenance and adds a concrete authored-focus contrast check. Judgment checks stay visibly separate.
Audit it. Reuse it. Try to break it.
Seven conditional rules, explicit priorities, and reasons for exceptions. Agreed after adversarial review by Astra and Fable.
- One sample per condition; no significance claim.
- Six authored tasks in fixed order, batched per fresh CLI session.
- Fable generated outputs; Astra reviewed them unblinded.
- Source inspection of form snippets is not an accessibility audit.
Specification references: W3C non-text contrast, focus appearance, and the WebMCP draft.
Use the same rules in your agent.
Detecting browser WebMCP…
resolve_style_contractinspect_style_caseget_style_guide
Browser tools update the same controls and results you see here. For HTTP clients, a read-only Streamable HTTP endpoint is also available at /api/mcp, publicly accessible. No API key required.