Repository navigation
fix(tools): recognize qualified ticket references (#438) - #845
Conversation
|
Pullfrog stalled — likely cause: The agent stopped emitting events for 120s and was killed by the activity-timeout watchdog. 100 events were processed before the failure. Recent agent stderr
|
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
|
Pullfrog stalled — likely cause: The agent stopped emitting events for 125s and was killed by the activity-timeout watchdog. 100 events were processed before the failure. Recent agent stderr
|
|
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes Reviewed the qualified-ticket matcher and its regression coverage, plus the subsequent redesign/main merge; no prior Pullfrog review was recorded for this PR.
-
Expanded ticket mentions — Accepted the configured ticket repository plus resolved issue number while preserving bare numeric and migrated identifiers.
-
Hardened matching boundaries — Escaped dynamic reference text and rejected numeric suffixes, alphabetic suffixes, wrong repositories, and owner-suffix matches.
-
Added behavioral coverage — Exercised accepted and rejected title/body forms, regex-significant repository slugs, and migrated identifier resolution through the delivery harness.
-
Integrated the current base — Merged
redesign/mainwithout changing either PR-owned file or the resulting two-file PR diff.
GPT Sol | 𝕏




Closes thomasluizon/orbit-tickets#438
The delivery gate rejected a body containing only
Closes thomasluizon/orbit-tickets#393. The linker now recognizes the repository fromtickets.repositorytogether with the resolved ticket number, including tickets with migrated identifiers. It retains the trailing alphanumeric boundary so#3931cannot match#393, and prevents qualified references from matching a different repository or an owner suffix.Bare references and migrated identifiers remain accepted. The comment explains that this gate checks a mention; a canonical cross-repository reference is still needed for GitHub closing semantics.
Validation
mentionsIssueregex, ran the same focused harness, and observed exit 1 with nine failed assertions, including the canonical body-only reference returningUNLINKED_PR. Numeric suffix rejection still passed. Restored the committed fix afterward.node .claude/hooks/test-hooks.mjs, 355 assertions passed.node tools/test-tools.mjs, 1,398 assertions passed, including both required regression cases.External interface evidence
No external fields were added. Confirmed the existing title/body input against
gh pr view 831 --repo thomasluizon/orbit-ui-mobile --json title,bodyon 2026-09-06. The complete response key set and types, with values replaced, is:{"body":"<string>","title":"<string>"}The observed body begins with the canonical closing reference used by the regression case. Ticket resolution and orchestrator configuration are repository-owned interfaces; the matcher uses their existing resolved number and configured repository.
Assumptions
#Nreferences for compatibility instead of rejecting existing deliveries; closing-link enforcement would change the gate's existing contract beyond accepting the canonical form.ORB-Nidentifier to the repository slug.tools/__tests__/verify-delivery.mjs, which the requiredtools/test-tools.mjsrunner already executes, instead of modifying the shared runner.