Evidence
| Run | Version | Held | Note |
|---|---|---|---|
| 1 | 1.0.0 | 8/18 | the reported blind result |
| 2 | 1.1.0 | 18/18 | after the fixes; the harness now names each test definition after its tool id (1.1.0 refuses a name/id mismatch, which run 1's harness relied on); the name-mismatch case keeps its own name |
What held on 1.0.0
- unchanged definition matches; key order irrelevant
- description rug pull caught with a field diff
- invisible character change caught
- annotation flip (destructiveHint) caught
- unpinned verify 404; no key 401
Run 1, every row
| Case | Want | Got | Result | Detail |
|---|---|---|---|---|
unchanged_matches | ok | ok | held | True |
key_order_irrelevant | ok | ok | held | ok |
description_rug_pull_caught | refused | refused | held | ['description'] |
zero_width_change_caught | refused | refused | held | zero-width |
annotation_flip_caught | refused | refused | held | annotations |
diff_names_nested_schema_field | refused | accepted | failed | diff fields ['inputSchema'] |
equal_numbers_not_drift | ok | broken | failed | 1 vs 1.0 -> match=False |
shadowing_second_server_does_not_replace_first_pin | refused | accepted | failed | server-a's own definition after server-b pinned: match=False |
shadowing_other_server_definition_not_accepted | refused | accepted | failed | server-b's definition verified for server-a: match=True |
poisoned_definition_flagged_at_pin | refused | accepted | failed | pin HTTP 200 keys ['definition_hash', 'pinned_at', 'tool_id', 'updated_at'] |
pin_name_mismatch_refused | refused | accepted | failed | pin tool_id send_email_11 with definition name delete_all_files: HTTP 200 |
repin_keeps_previous_baseline_in_history | refused | accepted | failed | first pin hash recorded in history: False |
tenants_do_not_share_pins | refused | accepted | failed | tenant B verify of tenant A's pin: HTTP 200 match=True |
tenant_cannot_overwrite_other_tenant_pin | refused | accepted | failed | tenant A's pin after tenant C re-pinned |
oversized_definition_refused | refused | accepted | failed | HTTP 200 |
unpinned_verify_404 | refused | refused | held | 404 |
no_key_refused | refused | refused | held | 401 |
legit_repin_after_review_then_matches | ok | ok | held | ok |
Raw data: driftguard-evolution-2026-11-02.json · driftguard-blind-2026-11-02.json. Our own runs; no independent test.
FIRME AI CORPORATION · CAIN-42 is a Byzantine trust fabric. Numbers marked "our own check" were run by us, not by an independent party. Nothing on these pages is a certification.