Review r2: Close stale pal-e-app / pal-e-docs-app rename tickets
Verdict: APPROVED
Round 2 of board item #973 (
forgejo_admin/pal-e-platform#279). All four [BODY] refinements from review-973-2026-04-11 (round 1) are applied. Housekeeping scope is clean, dependencies are explicit, and the ticket fits comfortably in a single agent pass. Advance backlog → todo. (Execution order still gated on #278 per spawn prompt guidance, but review gate is satisfied.)Round 1 Findings Verification
| # | Round 1 Finding | Resolution in r2 body | Status |
|---|---|---|---|
| 1 | [BODY] pal-e-app#87 is already closed — treat as pointer-comment-only, not state change | What Broke table row marks #87 as <strong>already closed (2026-03-28)</strong>. Per-Ticket Action section says "NO state change. Add a single pointer comment." AC#2 says "<code>pal-e-app#87</code> (already closed) receives one pointer comment citing #278 — state unchanged." Test Expectation confirms "state remains <code>closed</code> (was closed 2026-03-28; this housekeeping pass does not reopen it)." | FIXED |
| 2 | [BODY] Cite #278 by full URL / number in Related section | Related section now lists <code>forgejo_admin/pal-e-platform#278</code> explicitly with a parenthetical describing its role as "the canonical hostname swap ticket." Body references #278 by number throughout Per-Ticket Action and Expected Behavior. | FIXED |
| 3 | [BODY] Drop AC #5 (<code>feedback_naming_convention</code> update) as out of scope | AC list no longer mentions <code>feedback_naming_convention</code> at all. AC count is now 4. Lineage section explicitly acknowledges: "(3) AC dropping the <code>feedback_naming_convention</code> lesson-capture (out of scope; that's a memory file, not a pal-e-docs note)." | FIXED |
| 4 | [BODY] Clarify AC #4 "no new tickets" vs "if anyone cares to file it" tension | Per-Ticket Action for #255 and #257 now says "<strong>Do not file a new Keycloak rename ticket from this housekeeping pass</strong> — that decision belongs to whoever executes #278." AC#4 explicitly says "Forward-facing decisions about Keycloak client rename, namespace rename, or frontend validation are explicitly <strong>deferred under #278</strong> — they are NOT this ticket's responsibility and are NOT filed as fresh tickets here." The "if anyone cares" language is gone. | FIXED |
Template Completeness
- [x] Type (Bug)
- [x] Lineage (includes explicit round-1 delta summary)
- [x] Repo
- [x] What Broke (now with a 5-row per-item state table)
- [x] Repro Steps
- [x] Expected Behavior (distinguishes close-as-wontfix from pointer-comment-only)
- [x] Environment
- [x] Per-Ticket Action (per-item decisions, wontfix rationale, deferral language)
- [x] Acceptance Criteria (4 ACs — #5 dropped per round 1)
- [x] Test Expectations (verification queries that will be machine-checked)
- [x] Constraints (tool choices named)
- [x] Checklist
- [x] Related (cites #278, #256, arch-domain-pal-e-docs, review-973-2026-04-11)
- [ ] User Story / Architecture sections not in body — labels carry the triangle on the board item (
story:superuser-maintain,arch:k8s-deploy). Acceptable per bug-template conventions.
Traceability
- [x]
story:superuser-maintainlabel — verified on board item #973. Housekeeping closures are superuser maintenance via MCP. - [x]
arch:k8s-deploylabel — present on board item. Conceptually valid. Note (non-blocking): no dedicatedarch-k8s-deploynote exists in pal-e-docs. Closest backing note isarch-domain-pal-e-docs. Creating a dedicated arch note is still out of scope for this housekeeping ticket. Round 1 already flagged this as a future separate ticket; not re-raising for r2. - [x]
scope:discoveredlabel — correct (discovered during 2026-04-11 routing review with Lucas). - [x]
type:buglabel — matches the body's "### Type Bug" header. - [x] Forgejo issue URL —
forgejo_admin/pal-e-platform#279, state=open, verified via API 2026-04-11. - [ ] Forgejo issue labels are empty (body-only labeling). Still not a blocker; triangle lives on board item. [LABEL] recommendation is optional polish, not required for approval.
File Targets
N/A — this ticket operates entirely on Forgejo issues and pal-e-docs board items via MCP. All targets are identifier-based (issue numbers, board item IDs). Re-verified as of 2026-04-11:
- [x]
pal-e-platform#234— state=open. Target valid. - [x]
pal-e-platform#255— state=open. Target valid. - [x]
pal-e-platform#257— state=open. Target valid. - [x]
pal-e-app#87— redirects topal-e-production#87, state=closed (closed_at 2026-03-28T17:01:43Z). Body correctly treats this as pointer-comment-only. - [x]
pal-e-app#88— redirects topal-e-production#88, state=open. Target valid. Note: the forgejo_admin/pal-e-app URL now 301s to pal-e-production; the dev agent should expectcurl -Lor use the canonical repo name when operating. Not a blocker — the MCPupdate_issue/comment_on_issuetools follow redirects. - [x] Board items #510 and #513 — both confirmed present on
board-pal-e-docs, columnbacklog, linking to the correct pal-e-app issue URLs.
Repo Placement
OK.
pal-e-platform is the correct umbrella repo for a cross-cutting housekeeping pass that closes tickets in both pal-e-platform and pal-e-app/pal-e-production. No repo code is touched.Dependencies
Single dependency:
forgejo_admin/pal-e-platform#278 (hostname swap), board item #972. State: open, backlog. The spawn prompt correctly gates execution on #278 landing first — this is an execution-order constraint, not a review-gate constraint. Review gate (backlog→todo) passes. Scheduling constraint (todo→in_progress) is a separate decision for Ava when #278 is in at least in_progress.No circular dependencies. No new dependencies introduced in r2.
Acceptance Criteria
4 ACs, each machine-verifiable:
- [x] AC#1 — "four tickets closed as wontfix with a comment citing #278 by full URL" — verifiable via Forgejo API.
- [x] AC#2 — "pal-e-app#87 receives one pointer comment, state unchanged" — verifiable via issue API + comments endpoint.
- [x] AC#3 — "board items #510 and #513 removed from board-pal-e-docs" — verifiable via
list_board_items. - [x] AC#4 — "no new tickets filed by this pass; forward-facing work deferred under #278" — verifiable by absence + explicit deferral language in body.
Test Expectations section adds 5 concrete verification queries the QA agent can run directly. Strong.
Blast Radius
Low. All operations are reversible in Forgejo (reopen + re-add board item) and touch no code, no CI, no runtime services. The only residual risk — closing a ticket whose intent is still live — is addressed by the per-ticket action table and the explicit deferral-under-#278 language. Round 1's "intent-survives-rename" concern is now resolved by the "do not file new tickets from this pass" instruction.
Decomposition Assessment
No decomposition needed. 5-minute rule check:
- File targets: 0 (API-only)
- Acceptance criteria: 4 (under the 5-AC threshold)
- Estimated agent work: ~2-3 minutes — 4
update_issuecalls (close+wontfix), 5comment_on_issuecalls (4 closing comments + 1 pointer comment on #87), 2remove_board_itemcalls. All independent and idempotent. - Repos touched: 1 umbrella (pal-e-platform) + cross-repo API calls (not a decomposition trigger).
Housekeeping ticket remains flat and well-scoped for a single agent pass.
Recommendation
APPROVED. No action needed in the body. All four round 1 [BODY] fixes are cleanly applied and verifiable in the current issue text. Advance board item #973 from
backlog to todo.Execution-order reminder (not a review gate, but relevant for Ava's scheduling): do not dispatch dev work on #973 until #278 is in at least
in_progress, per the original spawn prompt.Optional non-blocking polish (do NOT hold the ticket for these):
- [LABEL] (optional) Mirror board labels onto the Forgejo issue itself for consistency across surfaces.
- [SCOPE] (future) File a separate backlog ticket if
arch:k8s-deployis going to keep appearing on tickets, to create anarch-k8s-deploynote. Still not this ticket's job.