Pressure-testing Ota candidates on GitButler: exact source spelling is evidence
GitButler exposed a cross-platform source-identity mismatch and proved that candidate evidence must respect exact repository path spelling.
The finding
Candidate evidence is not portable when Linux and macOS inspect different paths for the same Git revision. GitButler exposed exactly that failure.
Its checkout contains an uppercase Makefile and a lowercase claude.md symlink. On the case-insensitive macOS filesystem, registered paths with different spelling entered Ota's candidate evidence; Linux did not. The initial matrix looked green at the contract level while candidate identities differed.
The Core correction
Ota now requires every registered source-path component to match the exact spelling of the repository entry before it can enter candidate inventory or evidence. A path that resolves only through case folding is not source evidence.
The corrected GitButler run used upstream revision 2068a7811629950c05bd6f17429c5f2454f8ef4f and source-built Core 996090390d8544908bbb222614ece28f4dca8b4c. Linux and macOS produced byte-identical candidates:
- candidate identity:
sha256:5d3211d1a3e8a57702d71dfec0abc6a549b755379024ccfabe6f56d033ef6fa7; - projection identity:
sha256:064b9aed754ed8c7d57529327cb0ce2f4fbf03fc05a965971fd5316aadb425be; and - resulting contract identity:
sha256:7d409f2dcebd3900a3c625af6086077cabe743df095c95ee6f3d77e640474c39.
The candidate kept 43 findings unresolved and proposed no agent-safe authority. Strict completeness refused the candidate rather than allowing a detector label to become an execution claim.
What this does not prove
The run did not execute GitButler's Rust, Turbo, Tauri, Playwright, desktop, packaging, or release paths. It does not approve a candidate or complete V11.22 by itself; the accepted closure audit uses it as bounded conservative-detection evidence within the complete pressure set.
Evidence
Take action