Removes the Go source, Dockerfile, go.mod, and Kubernetes manifests. The
deployed service is untouched and the review desk still calls it over
window.SKILLS_REVIEW_VOTE_API; only the source leaves.
The runbook does not leave. vote-service/README.md moves to
docs/vote-service.md, because it carries the parts that are hard to
rediscover: why the ingress overwrites X-Forwarded-For and Caddy stamps
X-Client-IP instead, why the image is side-loaded into containerd rather
than pulled, and why the PVC pins the Deployment to one node.
This drops verify.mjs from 84 assertions to 83. The removed one read
vote-service/main.go for X-Forwarded-For and 'one active vote per skill'
-- the review desk's only anti-abuse control -- and there is no file left
to read. It is the first assertion this repository has ever lost.
Rather than lower the gate's floor and leave a bare number behind,
gate.sh now subtracts the number of entries in
.agents/context/assertion-removals.md from the baseline. A removal costs
a written reason in a tracked file, in the same commit, as a visible
diff. Tested at 82 assertions: still refused.
Also drops the 22 MB of PNG baselines under .agents/snapshots/before/ and
before-reduced-motion/. They pictured the hand-written site, which no
longer exists; visual-regression.mjs has no compare mode to diff them
against; and they are recoverable from d88d8b8.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1.2 KiB
Assertion removal ledger
scripts/verify.mjs may only lose an assertion by adding an entry here. The
gate counts the ## headings in this file and allows exactly that many
removals below the recorded floor — so a reduction is impossible without a
written reason landing in the same commit, as a visible diff.
Adding an entry is not a formality. An assertion pins a real contract; removing one means that contract is now unverified. Say where it moved, or say plainly that nothing checks it any more.
vote-service one-vote-per-IP contract
Removed: 2026-09-06, when vote-service/ was taken out of this repository.
What it asserted: that vote-service/main.go contained both
X-Forwarded-For and one active vote per skill — the review desk's only
anti-abuse control, one vote per visitor enforced server-side by source IP.
Why it went: there is no file left to read. The check was a substring match against source that now lives elsewhere.
Where it must be re-asserted: in whichever repository holds the service. The
deployed service still enforces the contract; nothing in this repository proves
it. If vote-service/ ever comes back here, restore the assertion and delete
this entry.