Skip to content

ci(town-crier): re-announce on push (synchronize + head_oid)#39

Open
jasperboerhof wants to merge 1 commit into
mainfrom
ci/town-crier-reannounce-on-push
Open

ci(town-crier): re-announce on push (synchronize + head_oid)#39
jasperboerhof wants to merge 1 commit into
mainfrom
ci/town-crier-reannounce-on-push

Conversation

@jasperboerhof

Copy link
Copy Markdown
Contributor

Fire the town-crier announce on synchronize (each new commit on a labelled PR) and pass the head SHA so the bus can re-open the review thread when the head changes. Producer half of re-review-on-push, mirroring kendo and town-crier#20's template change. The resolve job is unchanged.

Inert until town-crier#20 is merged + deployed (the bus must understand head_oid first); a re-announce with the same head is a harmless no-op.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jasperboerhof jasperboerhof requested a review from a team as a code owner June 22, 2026 17:50
@jasperboerhof jasperboerhof added the Agent Review Requested Requesting review of specialized AI review agents. label Jun 22, 2026
@jasperboerhof

Copy link
Copy Markdown
Contributor Author

Town Crier Review · 9/10 · PASS · 🔎 Independent

phpstan-warroom-rules #39 · AC anchor: PR description (config-only; no kendo board, task type) · head 3339d9d49b · via the town-crier bus (request #127)

Tip

Config-only change to the town-crier producer workflow (.github/workflows/announce-pr.yml): adds the synchronize trigger plus a head_oid change-detector field so a push onto a reviewed head reopens the bus thread for a fresh review round. I runtime-simulated the event matrix (labelled/unlabelled synchronize, same-vs-new head, close/unlabel) and confirmed the announce if, the resolve if, and the bus idempotency contract all hold, and the payload matches the committed canonical template exactly; no rule/fixture/extension.neon touched, so the rule-set contract is untouched.

No findings — clean against the review checklist.

@Goosterhof Goosterhof left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Approve-worthy

0 blockers · 0 concerns · 0 nits · 0 praise · 0 inline

Confirm-the-pattern (light sweep). This PR's announce-pr.yml change is the byte-identical diff to the canonical script-development/town-crier#22, which I reviewed in full — verified here by diffing the two. The canonical verdict carries over: correct producer-side change (adds synchronize re-announce gated behind the Agent Review Requested label via contains(labels), threads head_oid into the announce payload; provisioning-fail-loud and transient-fail-non-blocking preserved). CI green.

Same caveat as #22: the "a re-announce with the same head is a no-op on the bus" comment is the right design but not true yet — the bus is head-blind (keys on pr_url), so the no-op waits on the consumer-side head_oid dedup (the deferred town-crier-relay-debounce-covered-heads). Non-blocking — head_oid is correctly sent here.

Automated war-room agent review — posted because this PR carries the Agent Review Requested label.

@jasperboerhof

Copy link
Copy Markdown
Contributor Author

Town Crier Review · 9/10 · PASS · 🤝 Confirm

phpstan-warroom-rules #39 · AC anchor: PR description (config-only town-crier producer workflow) · head 3339d9d49b · via the town-crier bus (request #127)

Tip

Config-only change to the town-crier producer workflow (.github/workflows/announce-pr.yml): it adds the synchronize PR trigger plus a head_oid field so a push onto a labelled, reviewed head re-announces and reopens the bus thread for a fresh review round. We corroborate the prior reviews (jasper PASS, general confirm, Goosterhof APPROVED): the diff is a single file with no rule, fixture, or extension.neon touched, so the PHPStan rule-set contract consumed by kendo/codebook/emmie is untouched; the announce/resolve label gating and the bus head_oid idempotency all hold against the live town-crier src/db.ts, the executable surface is byte-identical to canonical town-crier#​22, and CI is green. We refute Goosterhof's carried-over #​22 caveat — the "same-head re-announce is a no-op" behaviour is now actually implemented on the bus, not merely aspirational — though it never gated. One non-blocking follow-up: the file's header comment still says "announce once" and now contradicts the file's own re-announce behaviour; worth syncing to canonical if a later change touches this file.

No findings — clean against the review checklist.

Bus thread · 2 prior review(s):

  • jasper (independent): Independent first look (empty thread). PASS 9/10 — no findings. Config-only change to the town-crier producer workflow (
  • general (confirm): Confirm-the-pattern: the byte-identical diff to canonical town-crier#​22; CI green; head_oid no-op caveat noted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Agent Review Requested Requesting review of specialized AI review agents.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants