chore: take vote-service out of the repository root
verify-and-publish / gate (push) Successful in 14m4s
verify-and-publish / publish (push) Has been skipped

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>
This commit is contained in:
Marcos Paulo
2026-09-06 08:59:45 +00:00
parent d88d8b89eb
commit 9015e7bd1d
96 changed files with 122 additions and 504 deletions
+9 -4
View File
@@ -72,7 +72,12 @@ public/
## Companion service
`vote-service/` is a Go API on its own Kubernetes deploy cycle, reached by the
review desk over `window.SKILLS_REVIEW_VOTE_API`. The refactor does not touch
it. Keep the global, or replace it with a build-time `PUBLIC_VOTE_API` env var —
but if you do, update `vote-service/README.md` in the same change.
The vote API is a Go service on its own Kubernetes deploy cycle, reached by the
review desk over `window.SKILLS_REVIEW_VOTE_API`. Its source left this
repository on 2026-09-06; the deployed service is unchanged, and the review desk
still calls it. Keep the global, or replace it with a build-time
`PUBLIC_VOTE_API` env var — but if you do, update the service's own README in
the same change.
Its one-vote-per-IP assertion left `verify.mjs` with it. See
[`assertion-removals.md`](assertion-removals.md).
+26
View File
@@ -0,0 +1,26 @@
# 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.