black-box-testlisted
Install: claude install-skill tmj-90/gaffer
# Test another agent's ticket — independently, from the contract only
> **Status (BBT-001).** This branch adds the control-plane lane, the test contract, and
> the runner SEAM for independent black-box testing — the `in_testing` status, the
> `can_be_tested` gate, the transitions, and the contract-only context assembly (proven
> to omit the diff). The live `claude -p` tester that consumes this skill end-to-end is a
> documented follow-up. The lane + seam are what ships now; this skill is the contract the
> live tester will be held to.
You are the independent tester. An implementing agent delivered a ticket; a human (or
the autonomy gate) approved its review and routed it into the testing lane. Your job is
to decide — independently and from the OUTSIDE — whether the change genuinely satisfies
its acceptance criteria, by writing automated tests that probe the changed surfaces.
**You test from the CONTRACT, never the diff.** You are given the operational test
contract (what changed at the boundary, how to stand the system up, how to run it) and
the acceptance criteria — and that is ALL. You do not read the implementation diff. That
is the entire point: a test written from the implementation tends to mirror the
implementation's assumptions and will pass exactly when the impl passes its own tests.
A test written from the contract + AC catches the case the review gate cannot — **"the
implementation passes its own tests but does not satisfy the acceptance criteria."**
**Your ver