Repository navigation
fix(work, where, record): the review findings on #113, GitHub Issues as a tracker - #115
Merged
Merged
Conversation
…e --ticket number On a GitHub tracker a branch's number must be followed by `-`, `_` or the name's end and must not be a date's year, so release/1.2.0, 2fa-support, 123abc and 2026-11-06-cleanup name no issue; hotfix/3 names issue 3. `--ticket <n>` takes the bare number under a recorded pattern such as GH-\d+, as work, implement-change and next_phase.py pass it. profile.sh reads the defaults once even when --defaults is refused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… by one rule profile.py's ticket_named is the one reading of a body's Ticket: line for record.py and next_phase.py: the key the value starts with, so `none — split from #68` is none on every tracker. On a GitHub tracker the issue is `#<n>`, or `<location>#<n>` when the tracker is another repository's; another repository's issue or a key such as PROJ-9 is refused rather than read as none. next_phase.py refuses --issue-state on a non-GitHub tracker and --ticket-status on a GitHub one whichever row decides, and its first line names a pull request whose number is the issue's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…acker is elsewhere work reads a number in this repository first and at an issue tracker in another repository second, asking when it is a pull request here and an issue there, and says what a 404 at the location means. pr-create writes `Ticket: <owner/repo>#<n>` for such a tracker, and work searches for that form. source-reader reads labels from get and the parent from get_parent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t, and add tracker-gh-work-pr Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rch below the table Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mmaclay
marked this pull request as ready for review
November 6, 2026 23:53
…in, none when it starts with none Reading only at the line's start dropped keys main read: a Jira URL, **PROJ-9**, `PROJ-9`, "see PROJ-9", and on GitHub "Fixes #59" or an issues URL. ticket_named now takes the first key anywhere, a GitHub issues URL included, and a value starting with `none` names none. A first key of another tracker's form is refused in next_phase.py's routing and recorded as none by record.py, so a repository's Jira-era pull requests still regenerate. A bare #<n> counts when the location is this repository. next_phase.py reads the profile for a Ticket: line only when it does not start with none, and says the line could not be read when the profile is refused. "The record" goes to version 14. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r a closed issue The closed scenarios now expect no pr-reader, and a closed issue still labeled `in progress`, #17, gets its own scenario. The stub's token search is tested through a pull request whose body names o/r#90. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… only where it leads the line On a GitHub tracker, `the UTF-8 fix, #59` and `the ISO-8601 dates, #59` named no ticket, since any capitalised hyphen-number word read as a Jira key. A key such as PROJ-7 is another tracker's only when it leads the value, after `[`, emphasis or a backtick, so `PROJ-7 · fixes #59` still refuses. `none` is a word of its own: `none-of-the-above` and `NONE-12` are not it. www.github.com issue URLs are read. next_phase.py reads this repository from the origin remote outside the profile's refusal, names that dependency, and says when there is no origin. work's pull request search writes `<location>#<n>` whenever the location is not none. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mmaclay
added a commit
that referenced
this pull request
Nov 7, 2026
"The next phase" keeps #115's version 6 and this branch's unfiled line as version 7. The pack keeps both sets of scenarios, every work scenario removes the writes file, and the WORK set gains tracker-gh-work-pr and tracker-gh-work-closed-labeled. The stub's docstring lists get_label and get_parent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This fixes the review findings on #113 (PR A of #59, merged as 6b0b86b), and the two review rounds on this PR, at 4cf186d and 96481bb.
Three of the #113 findings put the wrong ticket number on real branches and pull requests:
where.shreadrelease/1.2.0as issue 1 and2026-11-06-cleanupas issue 2026.--ticket 7failed under a recordedGH-\d+pattern.Ticket: none — split from #68was recorded as ticket 68, on Jira as well as on GitHub.The rest cover an issue tracker kept in another repository, where an issue's number can match a pull request's number here.
Changes
hooks/where.sh, on a GitHub tracker.-,_or the end of the name, but not by-NN-NN. Sorelease/1.2.0,2fa-support,123abc,2026-11-06-cleanup,feature/2026-11-06and59.xname no issue.hotfix/3names issue 3. This is deliberate: a number as the whole last part of the name is howfeature/59-style issue branches are written, and the session-start line shows#3, so a misread is visible at once.--ticket <n>takes the bare number as well as a key in the pattern.scripts/profile.sh. The defaults are read once, even when--defaultsis refused.Ticket:line, one rule.record.pyandnext_phase.pyboth read it throughprofile.py'sticket_named.none, in any case, is none.none-of-the-aboveandNONE-12are not.github.comissues URL (www.allowed, no other host),<owner/repo>#<n>, or#<n>. Withissue_tracker.locationset to another repository, the issue is that repository's,<location>#<n>, and a bare#<n>counts only when the location is this repository.PROJ-7is another tracker's only when it leads the line, after[, emphasis or a backtick. SoPROJ-7 · fixes #59is another tracker's, whilethe UTF-8 fix, #59andthe ISO-8601 dates, #59give 59.next_phase.pyrefuses it in routing.record.pyrecordsnone, so records of a repository's Jira-era pull requests can still be regenerated after it moves to GitHub Issues.next_phase.py.Ticket:line only when the line does not start withnone. A refused profile is reported as the Ticket line being unreadable.originremote names, read outside the profile's refusal. When there is no origin, the refusal says so.--issue-stateon a tracker that is not GitHub's, and--ticket-statuson a GitHub one, exit 1 whichever row decides.skills/work(1.9.1).<location>#<n>whenever the location is notnone, as pr-create writes the line.skills/work/servers.md. The 404 example says what a 404 can mean and that work stops there.skills/pr-create(3.8.1). WritesTicket: <owner/repo>#<n>when the location is notnone.agents/source-reader.md. Labels come fromget;get_labelsis dropped.Links:comes fromget_parent, called whenhas_parentis true.docs/contracts.md.origin.record.pywritescontract: 14.test_where.sh: every branch above,--ticket 7underGH-\d+, and a real Jira-tracker standard.test_record.pyandtest_next_phase.py:PROJ-7 · fixes #59;noneword boundary,www.github.comURLs, and the location matrix;Ticket: PROJ-7, and no origin with a location set.test_sandbox.py: the token search, through a fixture pull request whose body nameso/r#90.The stub against the real server
Checked read-only with
issue_read(get,get_labels,get_parent) andsearch_pull_requestson lasp/dev-tools #114, #113 and 99999.getand as objects fromget_labels;/pull/in thehtml_urlof a pull request read throughget; the 404 text.get_parent.o/r#90;in progress.pull_request_read.Left for later
next_phase.pytakes "this repository" fromorigin. The full fix is arepo:line in pr-reader's state block, so the block names its own repository. That changes the state block's contract and pr-reader, so it is left out of this PR.profile.pyreads no standard for the checkout at all, so the case shows up today as no GitHub tracker, not as a wrong number.Doubts
ISO-8601 dates, #59refuses, since it has the same shape asPROJ-7 · fixes #59. Only a word further in, as inthe ISO-8601 dates, #59, is passed over.Origin: #59 (review of #113)
Sandbox: A = 6b0b86b (main); B = this branch at 96481bb unless noted. haiku,
run.py --check,sandbox/tracker-github/. Closed scenarios expect nopr-reader. 994a78d changes the scripts' Ticket reading and the wording of row 3's search form only, so it was not rerun.where.sh --ticket 15.Canary: none yet
🤖 Generated with Claude Code