docs: give the Port agent an Each iteration section (it had none)
#20
Reference in New Issue
Block a user
Delete Branch "fix/port-loop-iteration"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The Port agent's brief has never had an
Each iterationsection.decoder-loop.mdhashad one since 2026-09-04, ending in "Commit,
push-work, open the PR, label the issuestate/needs-human, and stop."port-loop.mdstates the equivalent rules — "youcannot close your own work", work reaches
main"through pull requests" — but never givesthe steps.
Two of the missing steps are exactly
GITEA-SETUP.mdPhase 7's check items:Check 1's failure mode is silent. Notifications are polled and nothing pushes them, so
an agent that never reads them looks quiet rather than broken — indistinguishable from
"nothing addressed to me yet".
Check 2 has a trap worth naming in the brief itself:
docker/port/bin/push-workonly pushes — verified by reading it, no
/pullscall, noCloses #, no label; itsrefusals (no
main, no force-push) are intact.propose-workis still unbuilt, andGITEA-SETUP.md's own words are "the other two thirds being manual is how they getskipped." The capability is present —
pull_request_writeandissue_writeare both inthe pinned MCP tool set — so this is an instruction gap, not a permissions one.
Written to mirror the Decoder's shape while using the Port's own vocabulary: a gate is an
artifact rather than "it compiles", verify against captures of the real game rather than
our renderer, state the expected number first,
authored/entries carry awhy, and nevership an invented number where a measured one is pending.
Docs-only; no code, no CI surface touched.
Provenance: found by the Pi agent while answering a Phase 7 readiness question I
raised. My own check had been decoder-only, which is precisely why the asymmetry survived
it — I verified the brief I had asked about and not its sibling.
🤖 Generated with Claude Code
Each iterationsection (it had none)`decoder-loop.md` has had `## Each iteration` since 2026-09-04, ending in 7. Commit, `push-work`, open the PR, label the issue `state/needs-human`, and stop. `port-loop.md` has never had that section at all. It states the rules -- "you cannot close your own work", "you move an item to state/needs-human", work reaches main "through pull requests" -- but nowhere gives the STEPS that carry them out. The Port agent was told the rule and never the procedure. Two steps were missing entirely, and both are Phase 7 check items: * READ YOUR NOTIFICATIONS first. They are polled and nothing pushes them, so an agent that skips this never receives anything addressed to it -- and the symptom is silence, not an error. That is GITEA-SETUP.md Phase 7 check 1. * OPEN THE PR AND SET THE LABEL. That is Phase 7 check 2. The second carries a trap worth naming in the brief rather than in a runbook: `docker/port/bin/push-work` ONLY PUSHES. Verified by reading it -- no /pulls call, no `Closes #`, no label; its refusals (no main, no force-push) are intact. `propose-work`, which would do all three, is still unbuilt -- GITEA-SETUP.md's own words are "the other two thirds being manual is how they get skipped". The capability is there (`pull_request_write` and `issue_write` are both in the pinned MCP tool set), so this is an instruction gap, not a permissions one. Written to mirror the Decoder's shape while using the Port's own vocabulary -- a gate is an artifact, verify against captures rather than our renderer, state the expected number first, `authored/` entries carry a `why`, never an invented number where a measured one is pending. Found by the Pi agent while answering a Phase 7 readiness question. My own check had been decoder-only, which is why the asymmetry survived it. Refs #11 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>