Skip to content

fix(tools): recognize qualified ticket references (#438) - #845

Merged
thomasluizon merged 2 commits into
redesign/mainfrom
fix/ticket-438-linker
Sep 6, 2026
Merged

thomasluizon merged 2 commits into
redesign/mainfrom
fix/ticket-438-linker

Conversation

@thomasluizon

Copy link
Copy Markdown
Owner

Closes thomasluizon/orbit-tickets#438

The delivery gate rejected a body containing only Closes thomasluizon/orbit-tickets#393. The linker now recognizes the repository from tickets.repository together with the resolved ticket number, including tickets with migrated identifiers. It retains the trailing alphanumeric boundary so #3931 cannot 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

  • Syntax checks passed for both changed modules; all commit hooks passed.
  • Focused delivery harness: 117 assertions passed.
  • Mutation proof: restored the original mentionsIssue regex, ran the same focused harness, and observed exit 1 with nine failed assertions, including the canonical body-only reference returning UNLINKED_PR. Numeric suffix rejection still passed. Restored the committed fix afterward.
  • Hooks harness: node .claude/hooks/test-hooks.mjs, 355 assertions passed.
  • Full tools harness after restoring the fix: 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,body on 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

  • Retained bare #N references for compatibility instead of rejecting existing deliveries; closing-link enforcement would change the gate's existing contract beyond accepting the canonical form.
  • Used the resolved GitHub ticket number for qualified references instead of appending a migrated ORB-N identifier to the repository slug.
  • Added cases to tools/__tests__/verify-delivery.mjs, which the required tools/test-tools.mjs runner already executes, instead of modifying the shared runner.

@pullfrog

pullfrog Bot commented Sep 6, 2026 •

Copy link
Copy Markdown

Pullfrog stalled — likely cause: provider usage limit reached

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
timestamp=2026-09-06T21:26:19.948Z level=ERROR run=0fc2188e message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f87629f9effetPmiCjD9QZqSHq small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:26:22.392Z level=ERROR run=0fc2188e message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f87629f9effetPmiCjD9QZqSHq small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:26:26.813Z level=ERROR run=0fc2188e message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f87629f9effetPmiCjD9QZqSHq small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:26:35.344Z level=ERROR run=0fc2188e message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f87629f9effetPmiCjD9QZqSHq small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:26:51.764Z level=ERROR run=0fc2188e message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f87629f9effetPmiCjD9QZqSHq small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:27:24.377Z level=ERROR run=0fc2188e message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f87629f9effetPmiCjD9QZqSHq small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:28:28.807Z level=ERROR run=0fc2188e message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f87629f9effetPmiCjD9QZqSHq small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"

Pullfrog  | Rerun failed job ➔ | View workflow run | via Pullfrog | Using GPT Sol | 𝕏

@vercel

vercel Bot commented Sep 6, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
orbit-ui-mobile-web Ignored Ignored Sep 6, 2026 9:31pm UTC

Request Review

@pullfrog

pullfrog Bot commented Sep 6, 2026

Copy link
Copy Markdown

Pullfrog stalled — likely cause: provider usage limit reached

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
timestamp=2026-09-06T21:32:34.934Z level=ERROR run=bb9542db message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f875ce036ffeFqCWXkezeEpVBl small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:32:37.546Z level=ERROR run=bb9542db message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f875ce036ffeFqCWXkezeEpVBl small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:32:42.038Z level=ERROR run=bb9542db message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f875ce036ffeFqCWXkezeEpVBl small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:32:50.551Z level=ERROR run=bb9542db message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f875ce036ffeFqCWXkezeEpVBl small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:33:07.235Z level=ERROR run=bb9542db message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f875ce036ffeFqCWXkezeEpVBl small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:33:39.732Z level=ERROR run=bb9542db message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f875ce036ffeFqCWXkezeEpVBl small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"
timestamp=2026-09-06T21:34:44.471Z level=ERROR run=bb9542db message="stream error" providerID=openai modelID=gpt-5.6-sol session.id=ses_f875ce036ffeFqCWXkezeEpVBl small=false agent=build mode=primary error.error="AI_APICallError: The usage limit has been reached"

Pullfrog  | Rerun failed job ➔ | View workflow run | via Pullfrog | Using GPT Sol | 𝕏

@sonarqubecloud

sonarqubecloud Bot commented Sep 6, 2026

Copy link
Copy Markdown

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ 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/main without changing either PR-owned file or the resulting two-file PR diff.

Pullfrog  | View workflow run | Using GPT Sol | 𝕏

@thomasluizon
thomasluizon merged commit fad5c56 into redesign/main Sep 6, 2026
27 checks passed
@thomasluizon
thomasluizon deleted the fix/ticket-438-linker branch September 6, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant