Repository navigation
fix(planning): link repo paths in interview recommendations to the pinned commit #8089
Copy link
Copy link
Open
Open
Copy link
Labels
priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.Triaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Description
This was generated by AI during attend-queue.
Refs: #7753
Agent Brief
Type: Bug
Summary: Repo file paths in recommendations, commitments and alternatives link to the file at the pinned commit.
Current behavior:
Repo-relative file paths in recommendations, commitments and alternatives show as plain text: about 60 in the audited session.
Desired behavior:
- A repo-relative path in those three places renders as a link to that file at the pinned commit that fix(planning): pin interview source-text links to a commit SHA #7752's source link introduces.
- Text that only looks like a path (a URL, or a path that names no file at that commit) stays plain text or keeps its existing link. The agent states the rule it used in the PR.
- With no pinned commit available, paths stay plain text.
Key interfaces:
- The shared
inline()renderer. - The pinned-commit source link from fix(planning): pin interview source-text links to a commit SHA #7752 (merged).
Acceptance criteria:
- The diff adds a UI check: a repo-relative path in a recommendation, a commitment and an alternative each renders as a link whose href contains the pinned commit SHA and the path.
- The same check confirms that with no pinned commit in the fixture, the path renders as plain text.
- A
planningpatch fragment exists (scripts/new-changelog-fragment.sh planning patch), andscripts/check-changelog-fragments.sh --checkpasses. - The PR's CI runs
test-bash, includingplugins/planning/surface/surface.test.shwith its browser suites, and it passes. The lane does not runscripts/run-test-file.sh(not on its allowlist).
Out of scope:
- Decide-row markdown (the item this depends on, which touches the same renderer).
- Changing which text the session writes.
Refs #7753
This was generated by AI during backlog shaping. Split from #7753 so each piece fits the lane's run time; the owner approved this split in an attended backlog-shaping session on 2026-10-18.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.Triaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Type
Fields
No fields configured for Bug.
Activity
kyle-sexton commentedon Oct 22, 2026
Holding (removed
status: ready). Two premises no longer hold:facts, but sends no SHA; the only repo value the page reads ismeta.repo(plugins/planning/surface/index.html:585).inline()with one renderer served to both interview pages, so this edit would land in code about to be removed.Re-brief after Phase 4 against the served renderer, with a decided SHA source (a
metafield written byround.py, or the SHA already in the question'sfactslinks).github-actions commentedon Oct 25, 2026
The triage sweep dispatched intake triage for this issue (attempt 2 of 2).
github-actions commentedon Oct 25, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Known
Flags: none
Blocked by: #8633, #10211, #10212
#8089 (comment)
This decision settles the open questions: the SHA source, waiting for the served renderer, how a non-file path is detected, and the body wording. I understood the work as linking repo-relative paths in recommendations, commitments and alternatives to the pinned commit. The blockers are the ones the decision names (#8633, #10211, #10212). No duplicate found.
Automated triage, applied by the lanes App.
melodic-automation-lanes commentedon Oct 25, 2026
The latest triage verdict holds nothing: the issue is at
status: ready.melodic-automation-lanes commentedon Oct 25, 2026
Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.
Intended outcome: Repo-relative paths in recommendations, commitments and alternatives render as links to the file at a pinned commit, and stay plain text when no commit is available.
Dependencies
Related work
Open questions
RECOMMENDED: A new meta field written by round.py (for example meta.commit), validated in the schema, because it is one explicit source that does not depend on parsing facts links. Basis: plugins/planning/surface/index.html:640 reads only meta.repo today; no SHA reaches the page.
RECOMMENDED: Yes. Hold until Phase 4 lands, then re-brief against the new renderer. Basis: plugins/planning/surface/index.html:633 inline() is the code Phase 4 replaces, per the 2026-10-22 maintainer hold.
RECOMMENDED: Link only paths with a directory separator and a file extension that are not part of a URL, and state this rule in the PR; do not verify existence at render time. Basis: judgment
RECOMMENDED: Yes. Reword it to name the new meta SHA field and its writer in round.py as the source, and add a round.py/schema test for the field. Basis: plugins/planning/surface/test_schema.py:133
Sources read
Automated refinement by the lanes App. Answer with a comment whose first line is
**Decision recorded.**.kyle-sexton commentedon Oct 26, 2026
Released for re-triage under the owner's 2026-10-26 rule: a person is involved only for "1. A change in original intent/vision 2. Something comes up during implementation ... that alters intent/vision or the primary design 3. If there is a HIGH/CRITICAL security issue". None applies here, so the hold label came off and intake triage runs again now.
To hold this issue again, add
needs-human(orstatus: needs-decision) and name which of the three applies.kyle-sexton commentedon Oct 27, 2026
Decision recorded. The owner answered in the Refinement and Issue Triage sessions (2026-10-25), deciding the open items below on the facts:
This answers the questions in intake's triage (#8089 (comment)) and refinement (#8089 (comment)).
The owner ledger names this issue twice, and neither row decides the SHA source (
.work/backlog-shaper-course-correction/interview-checklist.md:40,:54):Q10 admitted this issue to the lane; F6 records that the #7670 hold is gone. Neither touches the questions below.
Decided: From the same source as the repo slug, one more key beside
repo. Today that source ismeta, written throughset_meta, which accepts onlyMETA_KEYS(plugins/planning/surface/round.py:793,:796-803); the page readsmeta.repoininline()(plugins/planning/surface/index.html:648,:655); the schema listsmeta.repo(plugins/planning/surface/schema/questions.schema.json:181). Thefactslinks are not a page-wide source: they are per question and only sometimes pinned, which is whywarn_branch_source_linkswarns on branch links (round.py:650-656). feat(planning): bring the one-on-one interview page in line with the shared page #8633's Phase 4 reads REPO from the server (feat(planning): bring the one-on-one interview page in line with the shared page #8633 (comment)); if that has landed when this is built, the SHA travels the same way. This adds no new mechanism: it reuses the existing meta path.Decided: Yes. The 2026-10-22 hold (fix(planning): link repo paths in interview recommendations to the pinned commit #8089 (comment)) and feat(planning): bring the one-on-one interview page in line with the shared page #8633's update ("fix(planning): link repo paths in interview recommendations to the pinned commit #8089 stays held until Phase 4", feat(planning): bring the one-on-one interview page in line with the shared page #8633 (comment)) put Phase 4's single renderer in place of
inline(). The body's criteria test rendered links, so they hold for whichever renderer serves the page when this is built.Decided: The body already leaves this to the agent: "The agent states the rule it used in the PR." No render-time existence check is added. Basis: issue body, "Desired behavior".
Decided: Yes. fix(planning): pin interview source-text links to a commit SHA #7752's fix sends no SHA to the page (hold comment above;
index.html:655reads onlymeta.repo). The "Key interfaces" lines become: the renderer that serves the page when this is built, and the pinned-commit key decided in item 1.Dependencies: #8633 (open,
raw/full/8633.json), and #10211 and #10212, which Issue Triage lists as open blockers. Status: blocked on those, notstatus: needs-decision.Acceptance criteria: the body's four criteria stand unchanged, plus:
set_meta'sMETA_KEYSinplugins/planning/surface/round.pyand listed inschema/questions.schema.jsonmeta), and a test inplugins/planning/surface/test_round.py(or the server's tests, if Phase 4 moved the slug there) sets it and reads it back.melodic-automation-lanes commentedon Oct 27, 2026
Not admitted to the issue lane yet: blocker #10211 is not closed by a listed human or a merge; blocker #10212 is not closed by a listed human or a merge; blocker #8633 is not closed by a listed human or a merge.