chore(issues): archive closed issue specifications - #2207
Conversation
There was a problem hiding this comment.
Note
Copilot was unable to run its full agentic suite in this review.
Pull request overview
This PR primarily updates documentation to reflect that multiple issue specifications have been completed/archived, and updates cross-references from docs/issues/open/ to docs/issues/closed/.
Changes:
- Mark numerous issue specs as
done, add archival progress-log entries, and updatespec-pathfields to point todocs/issues/closed/.... - Update many cross-document links (README/ADRs/EPICs/plans/evidence) from
openpaths toclosedpaths and reformat several markdown tables for consistency. - Update the “open-pull-request” skill to v1.1 and tighten pre-flight requirements (clean tree + fetch + rebase checks).
Reviewed changes
Copilot reviewed 52 out of 71 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| packages/axum-http-server/README.md | Updates coverage-evidence link to the closed issue folder path |
| docs/issues/open/2203-template-catalog-and-cargo-dependency-pr-template/manual-verification-evidence.md | Updates issue-spec pointer to closed path |
| docs/issues/open/2203-template-catalog-and-cargo-dependency-pr-template/ISSUE.md | Marks issue done, updates spec-path, and adds archival progress log entry |
| docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/ISSUE.md | Updates related-artifact link and normalizes table formatting |
| docs/issues/open/2175-merge-tool-symlink-exceptions/ISSUE.md | Marks issue done, updates spec-path/verification link, and normalizes tables |
| docs/issues/open/2169-1488-si-4-migrate-torrent-cleanup/agent-review-reports.md | Updates related-artifacts paths to closed |
| docs/issues/open/2169-1488-si-4-migrate-torrent-cleanup/ISSUE.md | Marks issue done and updates references to prior closed work |
| docs/issues/open/2162-enforce-lychee-and-schedule-external-link-checks/agent-review-reports.md | Updates related-artifact path to closed |
| docs/issues/open/2162-enforce-lychee-and-schedule-external-link-checks/ISSUE.md | Marks issue done and updates related-artifact path to closed |
| docs/issues/open/2160-2003-persist-independent-agent-review-reports/implementation-retrospective.md | Updates evidence links to closed issue folder |
| docs/issues/open/2160-2003-persist-independent-agent-review-reports/ISSUE.md | Marks issue done and adds archival progress log entry |
| docs/issues/open/2156-2003-create-markdown-template-skill/agent-review-reports.md | Updates related-artifact path to closed |
| docs/issues/open/2156-2003-create-markdown-template-skill/ISSUE.md | Marks issue done and adds archival progress log entry |
| docs/issues/open/2155-2003-document-ai-agent-orchestration/implementation-retrospective.md | Updates related-artifact references to closed |
| docs/issues/open/2155-2003-document-ai-agent-orchestration/ISSUE.md | Marks issue done and adds archival progress log entry |
| docs/issues/open/2151-add-tracker-config-path-argument/rust-executable-test-plan.md | Updates related-artifact issue path to closed |
| docs/issues/open/2151-add-tracker-config-path-argument/manual-verification-evidence.md | Updates issue-spec path and last-updated timestamp |
| docs/issues/open/2151-add-tracker-config-path-argument/ai-harness-verification-plan.md | Updates related-artifact issue path to closed |
| docs/issues/open/2151-add-tracker-config-path-argument/ISSUE.md | Marks issue done and updates related-artifacts to closed paths |
| docs/issues/open/2150-add-lychee-link-checker/ISSUE.md | Marks issue done, updates link-report path, and adds archival progress entry |
| docs/issues/open/2140-1347-review-axum-http-server-integration-tests/ISSUE.md | Marks issue done and updates evidence links to closed paths |
| docs/issues/open/2138-document-testing-strategy/ISSUE.md | Marks issue done and adds archival progress entry |
| docs/issues/open/2136-1347-add-tests-axum-http-server/test-refactor-plans/server-tests.md | Updates coverage-evidence link to closed path |
| docs/issues/open/2136-1347-add-tests-axum-http-server/test-refactor-plans/authentication-key-extractor-tests.md | Updates coverage-evidence link to closed path |
| docs/issues/open/2136-1347-add-tests-axum-http-server/ISSUE.md | Marks issue done and adds archival progress entry |
| docs/issues/open/2134-fix-cognitive-complexity-lint-enforcement/ISSUE.md | Marks issue done and updates related-artifact path to closed |
| docs/issues/open/2132-add-sigterm-to-main/native-tracker-refactor-plan.md | Updates related-artifact paths to closed |
| docs/issues/open/2132-add-sigterm-to-main/native-shutdown-test-plan.md | Updates related-artifact paths to closed |
| docs/issues/open/2132-add-sigterm-to-main/implementation-retrospective.md | Updates related-artifact paths to closed |
| docs/issues/open/2132-add-sigterm-to-main/ISSUE.md | Marks issue done and appends a “Progress Tracking” section |
| docs/issues/open/2130-rename-peer-updated-milliseconds-ago-to-updated-at-ms/ISSUE.md | Marks issue done and adds archival progress entry |
| docs/issues/open/2122-expose-unambiguous-download-counter-semantics/ISSUE.md | Marks issue done and updates manual-verification reference to closed |
| docs/issues/open/2121-propagate-bootstrap-startup-errors/ISSUE.md | Marks issue done and adds archival progress entry |
| docs/issues/open/2003-overhaul-guardrails-and-automation/EPIC.md | Updates child-issue spec links to their closed locations |
| docs/issues/open/1588-review-shutdown-process-for-all-tasks-jobs/ISSUE.md | Marks issue done and adds progress tracking + archive entry |
| docs/issues/open/1586-evaluate-job-manager-join-set/implementation-retrospective.md | Updates related-artifact paths to closed |
| docs/issues/open/1586-evaluate-job-manager-join-set/ISSUE.md | Marks issue done and adds progress tracking + archive entry |
| docs/issues/open/1488-overhaul-tracker-shutdown/ISSUE.md | Updates roadmap items to point at closed specs |
| docs/issues/open/1347-overhaul-packages-testing/EPIC.md | Updates package-testing EPIC to reference closed completed issue specs |
| docs/issues/drafts/1488-si-7-observable-shutdown-progress/verification.md | Updates superseded-draft reference to closed #1586 verification |
| docs/issues/drafts/1488-si-7-observable-shutdown-progress/ISSUE.md | Updates superseded-draft reference and last-updated timestamp |
| docs/issues/drafts/1488-si-6-align-grace-periods/verification.md | Updates superseded-draft reference to closed #1586 verification |
| docs/issues/drafts/1488-si-6-align-grace-periods/ISSUE.md | Updates superseded-draft reference and last-updated timestamp |
| docs/issues/drafts/1488-si-20-configure-shutdown-policy/ISSUE.md | Updates dependency reference to closed #1586 spec |
| docs/issues/closed/2107-1978-activate-persistence-free-v3-runtime-composition/ISSUE.md | Updates last-updated and references to closed #2121 |
| docs/features/shutdown-process/task-inventory.md | Updates link references for #1586 and #1588 to closed |
| docs/analysis/20260716-shutdown-process/README.md | Updates last-updated and references to closed shutdown inventory work |
| docs/agents/orchestration.md | Updates references to #2155/#2160 specs under closed |
| docs/adrs/20260902074438_adopt_supervised_cancellation_tree_for_shutdown.md | Updates references to closed #1586/#1588 |
| docs/adrs/20260901113500_define_completed_download_metric_retention_names.md | Updates related-artifact link to closed #2122 |
| .github/skills/dev/git-workflow/open-pull-request/SKILL.md | Bumps skill version and adds explicit pre-flight command order + stricter clean-tree requirement |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
da2ce7
left a comment
There was a problem hiding this comment.
REQUEST_CHANGES — review round r1 at head f7e54854f42bdf058599e6e8c93545be3a1d2957 (4 commits, 71 files, +322/−243, base develop e538927).
The archive itself is correct and complete: every one of the 19 issues is CLOSED on GitHub, all 19 folders moved as pure renames with their supplementary artifacts, every primary spec carries status: done, the closed spec-path, and last-updated-utc: 2026-09-11, and after this change no closed issue is left with a specification under docs/issues/open/. The historical-versus-live reference distinction the PR claims also holds exactly: all 32 surviving docs/issues/open/<slug> strings are progress-log, checkpoint, or PR-review-record text, and not one of them is a Markdown link target. Every gate passes at this head.
What blocks it is a systematic defect in the reference repair itself: in five files the rewrite left a related-artifacts sequence item indented one level deeper than its siblings. YAML does not reject this — it folds the over-indented line into the preceding scalar as a multi-line plain scalar — so the PR's stated validation ("Parsed changed Markdown frontmatter as YAML") passes while 11 artifact entries silently disappear from the parsed metadata. Copilot flagged one of the five; the other four are the same bug.
Blockers
B1 — Over-indented related-artifacts items silently destroy 11 metadata entries (5 files).
A repo-wide scan of every Markdown frontmatter block at both revisions isolates this to the change: develop has 5 files with an over-indented sequence item, this head has 10, and the 5 new ones are all files this PR edited. Parsing the block with yaml.safe_load returns a merged string rather than an error, which is why it survived review:
| File | Line (RIGHT) | Paths folded into one string | Entries lost |
|---|---|---|---|
docs/adrs/20260901113500_define_completed_download_metric_retention_names.md |
5–10 | 7 | 6 |
docs/issues/closed/2132-add-sigterm-to-main/implementation-retrospective.md |
10–11 | 3 | 2 |
docs/issues/closed/1588-review-shutdown-process-for-all-tasks-jobs/ISSUE.md |
19 | 2 | 1 |
docs/issues/closed/2155-2003-document-ai-agent-orchestration/implementation-retrospective.md |
5 | 2 | 1 |
docs/analysis/20260716-shutdown-process/README.md |
33 | 2 | 1 |
The irony is worth naming: in 1588/ISSUE.md and docs/analysis/.../README.md the over-indented line is the repaired open/ → closed/ reference, so the link the repair existed to fix is the one that no longer parses as a list entry. In the other three the repaired line is fine and the untouched siblings below it were pushed out. Re-indenting all of these to four spaces restores each list; nothing else in the hunks needs to change. linter markdown, linter cspell, linter lychee, and the pre-commit hook all pass with the corruption in place, so no existing gate will catch a recurrence — a frontmatter shape check would be worth a follow-up issue.
B2 — The PR description does not describe commit 4.
f7e54854 docs(issues): allow bounded open spec migration rewrites the scope of an unrelated open specification, docs/issues/open/2159-2003-adopt-folder-style-issue-specs/ISSUE.md: it adds an "Approved Bounded Migration Exception" section authorising folder-style migration of three named open single-file specs, amends an acceptance criterion that previously read "are not migrated by this change", and appends a progress-log line recording maintainer approval. None of that appears in the Summary or the Changes list, which still describe only the archive, the conflict-marker fix, and the workflow guardrail. A reviewer working from the description would approve a policy change to another issue's scope without being told it is there. The title has the same gap — "archive closed issue specifications" covers commit 1 only, while the branch also carries a skill change and this rescope.
Suggestions
S1 — Commit cf97e565 puts six conflict-marker lines into develop history.
The archive commit contains <<<<<<< HEAD, =======, and >>>>>>> 267ee910 in docs/issues/open/2185-.../ISSUE.md; commit d2c5d8fc then removes them. The tip is clean, but the intermediate commit is not, and these commits land individually on develop. The Validation list is precise about why: the pre-commit hook was run "for each follow-up commit", i.e. not for the commit that introduced the markers. Fixing d2c5d8fc up into cf97e565 leaves the same tree with no revision in develop history that carries conflict markers.
S2 — Four unrelated concerns in one chore(issues) branch.
The archive (70 files), the #2185 conflict-marker repair, the open-pull-request skill hardening, and the #2159 rescope are independent and independently revertible. The archive is mechanical and easy to approve; the two policy changes are judgement calls that deserve their own review surface. Splitting commits 3 and 4 into their own PRs would also let this one land as soon as B1 is fixed. Relatedly, the body links no issue — a Refs #1774 (the open issue for automating exactly this cleanup) would give the maintenance batch a trail.
Nits
N1 — docs/features/shutdown-process/task-inventory.md was edited (two link definitions repaired) but keeps last-updated-utc: 2026-09-09. Step 4 of cleanup-completed-issues asks for the current date on any affected document that carries the field; docs/analysis/20260716-shutdown-process/README.md was bumped to 2026-09-11 in the same batch, so this one looks like an oversight rather than a decision.
N2 — "Independent Task Reviewer review passed for the archive batch" cannot be checked from the tree. Under issue #2160 the persisted agent-review-reports.md is required only when a folder-style issue specification is supplied, and this maintenance batch has no spec of its own, so nothing is missing — the claim is simply unverifiable, and worth either dropping or pointing at the evidence.
N3 — Several archived specs keep unticked workflow checkpoints (#2140 has 10, #2175 has 4, #2121 has 3). The skill only asks that checkboxes reflecting completed work be ticked, so leaving the unverified ones alone is the right call; recording that as a deliberate choice in the archive progress-log entry would save the next reader the check.
Verification
All compute ran on the project's build host against a detached worktree at f7e54854; wall times exclude the lock wait, which is reported separately because sibling lanes share the target directory.
| Gate | Exit | Wall | Lock wait |
|---|---|---|---|
git diff --check origin/develop..HEAD |
0 | 0.04 s | — |
| conflict-marker scan over the tree | 0 (no hits) | <0.1 s | — |
linter markdown |
0 | 6.03 s | 89.8 s |
linter cspell |
0 | 8.52 s | 53.3 s |
linter lychee (offline local links) |
0 | 0.14 s | 0.3 s |
TORRUST_GIT_HOOKS_LOG_DIR=.tmp ./contrib/dev-tools/git/hooks/pre-commit.sh |
0 | 52.2 s | 2.0 s |
The hook's six steps all pass; its step 4 runs linter all, so that gate is covered. No link regression: linter lychee is clean, and the moved folders sit at the same directory depth under closed/ as under open/, so relative links inside them still resolve.
Issue states — all 19 archived numbers are CLOSED (#1586, #1588, #2121, #2122, #2130, #2132, #2134, #2136, #2138, #2140, #2150, #2151, #2155, #2156, #2160, #2162, #2169, #2175, #2203; closure dates 2026-09-01 through 2026-09-11). Every one of the 16 specifications remaining under docs/issues/open/ maps to an issue that is still OPEN (#269, #1347, #1349, #1419, #1488, #1669, #1768, #1774, #1840, #1843, #2003, #2149, #2157, #2158, #2159, #2185), so the residual closed-with-open-spec set is empty. docs/issues/drafts/ carries no spec with a non-null github-issue, so Step 0.6 has nothing outstanding either.
Renames — 53 rename entries covering 19 folders; the 19 top-level names removed from docs/issues/open/ match the 19 added to docs/issues/closed/ exactly, and no file is left behind in an emptied folder. Similarity scores as low as 76% come from table column realignment by the repository formatter, not content edits. All 19 primary specs parse with status: done, a spec-path equal to their new path, last-updated-utc: 2026-09-11, an unchanged github-issue, and one archive progress-log entry each.
Reference repair — 32 old-path strings survive at this head: 23 in docs/copilot-pr-reviews/* PR-review tables and 9 in Workflow Checkpoint and Progress Log lines inside the archived specs themselves. All 32 are inline code spans recording a historical path; a search for the Markdown link form ](…docs/issues/open/…) over the whole tree returns nothing. The live references that did need repair — parent EPICs #1347 and #2003, active spec #1488, the already-closed #2107 spec, three 1488-si-* drafts, two ADRs, docs/agents/orchestration.md, docs/analysis/20260716-shutdown-process/README.md, docs/features/shutdown-process/task-inventory.md, and packages/axum-http-server/README.md — are all repaired and point at real files.
Hygiene — no AI co-author or assistant trailers in any of the 4 commits; all four subjects are Conventional Commits; the token banned from tracked files does not appear in any added line. Commit 4 adds hard-wrapped prose to 2159/ISSUE.md, which matches that file's existing style and is allowed for in-repo .md files (MD013 is disabled in .markdownlint.json; the no-wrap rule in write-markdown-docs governs GitHub issue, PR, and review text).
CI at f7e54854
| Workflow | Event | Status | Conclusion |
|---|---|---|---|
| Docs Lint | pull_request | completed | success |
One workflow run at this head, which is what a documentation-only change triggers; no run ended in startup_failure, so the green signal is real rather than an absent-check-runs artefact.
e703efb to
7cfb6a3
Compare
|
Review 5181622606 addressed.
The review audit will be committed separately after this response is recorded. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #2207 +/- ##
========================================
Coverage 84.95% 84.95%
========================================
Files 351 351
Lines 30208 30208
Branches 30208 30208
========================================
Hits 25664 25664
- Misses 4174 4177 +3
+ Partials 370 367 -3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
da2ce7
left a comment
There was a problem hiding this comment.
REQUEST_CHANGES — review round r3, head e028d6277035eeaaaf852b3aab04efc89a172264.
Since r2. Three commits since the r2 head 0ca10a81. e028d627 is the B1 fix and it is complete: the four remaining related-artifacts sequences are de-indented to four spaces, and every one of the five files now parses to exactly as many entries as it lists. 56e9c904 removes the stray blank line in the 2121, 2140 and 2175 progress logs, closing the r2 nit. 5bf2ff44 repairs the frontmatter semantic-links in pr-2153-copilot-suggestions.md and pr-2182-copilot-suggestions.md, which is the right resolution of S3 and is argued below. What has not moved is B3: docs/pr-review-feedback/pr-2207-review-feedback.md and docs/copilot-pr-reviews/pr-2207-copilot-suggestions.md are byte-identical to their state at 0ca10a81 (git diff --stat 0ca10a81 e028d627 -- over both paths is empty), so the tracked audit trail still attributes the B1 fix to a commit that did not make it, and it does not record this review round at all.
Blockers
B3 (re-raised). The two tracked review-audit records still misattribute the B1 fix, and the maintainer-review record does not contain round r2.
Recomputed row by row against the tree at e028d627. The grading distinguishes stale (the fix now exists, but the row names the wrong commit) from false (the row claims work that is absent from the tree). Every one of the four rows below was false when it was written at 0ca10a81 — each was recorded DONE roughly seventeen minutes before the commit that actually performed the work existed — and is stale now.
docs/pr-review-feedback/pr-2207-review-feedback.md:
| Row | Cited fix commit | What the tree shows at e028d627 |
Grade |
|---|---|---|---|
| F1 (ADR) | 327794a7 |
de-indented by e028d627; 327794a7 does not touch this file |
stale (was false at 0ca10a81) |
F2 (2132 retrospective) |
327794a7 |
de-indented by e028d627 |
stale (was false) |
F3 (1588 spec) |
327794a7 |
correct — 327794a7 is exactly this one-line change |
accurate |
F4 (2155 retrospective) |
327794a7 |
de-indented by e028d627 |
stale (was false) |
| F5 (analysis README) | 327794a7 |
de-indented by e028d627 |
stale (was false) |
| F6 (description) | N/A, NO_ACTION |
the live body's fifth Changes bullet does describe the bounded-migration amendment | accurate |
| F7 (conflict markers) | 8934e9c9 |
verified: none of the 13 commit trees contains a conflict marker, and 8934e9c9 carries the 2185 edit |
accurate |
| F8 (scope split) | N/A, BLOCKED |
an honest record of a decision, not a claim of work | accurate |
| F9 (task inventory) | c7b54e3a |
that commit changes one line in docs/features/shutdown-process/task-inventory.md |
accurate |
| F10 (PR body claim) | N/A | the live body carries no independent-review claim | accurate |
| F11 (checkpoints) | 7cfb6a3b |
that commit appends the rationale to the 2121, 2140 and 2175 specs |
accurate |
The Validation cell on F1, F2, F4 and F5 reads "Semantic YAML assertion, Markdown lint, Lychee". A semantic YAML assertion run against 327794a7 on those four files could not have compared entry counts, because the over-indented sequences parse without raising — that is the whole shape of B1. Re-running it at e028d627 does now produce 7 / 5 / 2 / 28, so the cell becomes true once the commit column names e028d627.
Second, and separate from the four rows: the Reviews table lists only review 5181622606. Review 5182099574 (CHANGES_REQUESTED, 2026-09-11 18:16:43 UTC, reviewed commit 0ca10a81) is absent, and so are its six findings — the four re-raised B1 items and the two B3 items, which are exactly the findings e028d627 was written to answer. process-pr-review-feedback asks for "one row per review and one row per independent finding"; as it stands the record shows this PR receiving one maintainer review and resolving it, which is not what happened.
docs/copilot-pr-reviews/pr-2207-copilot-suggestions.md:
| Row | Status at head | Grade |
|---|---|---|
| 1, 2 (ADR) | action / DONE, no commit cited |
accurate as to outcome — the ADR is fixed at e028d627 |
3 (2132) |
action / DONE |
accurate as to outcome |
4 (1588) |
action / DONE |
accurate |
5 (2155) |
action / DONE |
accurate as to outcome |
| 6 (analysis README) | action / DONE |
accurate as to outcome |
| 7 (description) | no-action / DONE |
accurate |
| Processing Log, line 39 | "B1 was corrected in 327794a7" |
stale (was false) — 327794a7 corrected one of the six B1 sites |
| Processing Log | no entry for e028d627 |
incomplete |
This is a fairer reading than r2's: because the suggestion rows here cite no commit, they became correct the moment e028d627 landed. The only wrong sentence in this file is the processing-log line, plus the absence of any entry for the round that produced the real fix. Line 60's note — "The original B1 commit was rewritten as 327794a7" — is accurate for the 1588 change and should stay.
Both files are tracked and will outlive this PR as the repository's account of how the review went. Correcting four commit references, one log line, and adding the r2 review row is a small edit; leaving it is a record that reads as complete and is not.
Suggestions
- S1 (r2 S3, resolved — recorded for the reasoning).
5bf2ff44is the right call and worth stating explicitly, because the skill's two rules pull in opposite directions here.cleanup-completed-issuesStep 4 says: "Do not rewrite immutable historical records (for example, past PR review summaries) merely because they accurately record the path that existed at the time. Update them only when they function as a live navigational reference." A frontmattersemantic-links.related-artifactsentry is not a record of what a reviewer saw; it is the document's machine-readable pointer at the artifacts it relates to, and it functions as live navigation the moment anything walks those links. The body table'sPathcolumn is the opposite: it records where the file sat when the thread was opened.5bf2ff44changes the first and leaves the second, which is exactly the split the rule draws. Confirmed at head: zero frontmatter references to any archiveddocs/issues/open/<slug>path remain repository-wide, against 60 ondevelop; the 29 surviving body-text references are all progress logs, checkpoint lines, and past review tables, correctly untouched. - S2 — three r2 threads are fixed but unanswered.
PRRT_kwDOGp2yqc6hlp5x(2132retrospective),PRRT_kwDOGp2yqc6hlp50(2155retrospective) andPRRT_kwDOGp2yqc6hlp54(analysis README) are unresolved with no reply, althoughe028d627fixes all three. Only the ADR threadPRRT_kwDOGp2yqc6hlp5sgot the "Addressed ine028d627" reply, and I confirm its claim of seven distinct entries is true at this head. Replying and resolving the other three would leave the thread state matching the tree. - S3 (r2 S2, unchanged). The branch still carries six separable concerns — the archive batch, the
2185conflict-marker repair, the open-pull-request pre-flight guardrail, the2159rescoping plus three-spec migration, the checkpoint explanations, and the audit records. F8 records keeping them together as a deliberate decision, which is legitimate; the guardrail and the migration are still the two with nothing to do with archiving closed specs. - S4 (r2 S4, unchanged). No gate in this repository detects a folded frontmatter sequence. All six gates were green at
0ca10a81with eleven metadata entries missing, and all six are green now — the gate set cannot tell the two trees apart on this axis. A check asserting that every item in a frontmatter sequence shares the first item's indent would have caught all nine occurrences, and still finds the five that remain. Worth its own issue.
Nits
- The seven r1-era thread replies cite "Addressed in
cef78cdb". That commit exists but is not an ancestor ofe028d627— it was superseded by the 17:55 UTC force-push, and its on-branch equivalent is327794a7, whose patch is byte-identical. Anyone following the cited id from those threads lands outside the PR's history. - The five pre-existing occurrences of the same indentation bug are unchanged and are not this PR's doing:
docs/issues/closed/999-1978-optional-database-configuration/persistence-unavailable-scenarios.md:12,docs/issues/drafts/1488-si-11-…/ISSUE.md:23,docs/issues/drafts/1488-si-12-…/ISSUE.md:23,docs/issues/drafts/1488-si-13-…/ISSUE.md:24,tests/AGENTS.md:8. A follow-up alongside S4 would clear them.
Verification
B1 — recomputed at e028d627, all five files
Frontmatter extracted from the tree and parsed with yaml.safe_load, related-artifacts located recursively; raw count is the - lines in the block.
| File | Raw - lines |
Parsed entries | Indents | Result |
|---|---|---|---|---|
docs/adrs/20260901113500_define_completed_download_metric_retention_names.md |
7 | 7 | all 4 | fixed |
docs/issues/closed/2132-add-sigterm-to-main/implementation-retrospective.md |
5 | 5 | all 4 | fixed |
docs/issues/closed/2155-2003-document-ai-agent-orchestration/implementation-retrospective.md |
2 | 2 | all 4 | fixed |
docs/analysis/20260716-shutdown-process/README.md |
28 | 28 | all 4 | fixed |
docs/issues/closed/1588-review-shutdown-process-for-all-tasks-jobs/ISSUE.md |
12 | 12 | all 4 | fixed at 327794a7 |
No merged scalar remains in any of the five lists. The repo-wide scan for a frontmatter sequence item indented deeper than its predecessor gives 5 occurrences at e028d627 and 5 on develop e5389279 — 500 and 498 frontmatter blocks scanned — so this PR's delta is now zero. All 79 changed Markdown files parse as YAML with no folded sequence anywhere.
Gates (isolated detached worktree at e028d627, sokol, minimum priority, sole lane)
| Gate | Exit | Wall | Lock wait |
|---|---|---|---|
git diff --check origin/develop..HEAD |
0 | 0.046 s | — |
| conflict-marker scan over the HEAD tree | 0 hits | 0.140 s | — |
linter markdown |
0 | 6.12 s | 0.01 s |
linter cspell |
0 | 8.57 s | 0.01 s |
linter lychee |
0 | 0.14 s | 0.01 s |
TORRUST_GIT_HOOKS_LOG_DIR=.tmp ./contrib/dev-tools/git/hooks/pre-commit.sh |
0 | 60.16 s | 0.01 s |
contrib/ is byte-identical to 0ca10a81, confirmed before running the hook. Its six steps: dictionary format PASS (0 s), cargo machete PASS (7 s), cargo deny check bans PASS (1 s), all linters PASS (28 s), hadolint PASS (0 s), doc tests PASS (24 s); the worktree was clean afterwards.
CI at e028d627 (six runs, all created 2026-09-11T18:53:35Z)
| Workflow | Status | Conclusion |
|---|---|---|
| Docs Lint | completed | success |
| Generate Coverage Report (PR) | completed | success |
| Copilot Setup Steps | completed | success |
| OS Compatibility | completed | success |
| Testing | completed | success |
| Container | queued | not concluded at 19:56 UTC, the polling cap. Its heavy job Test (Docker) (release) ran 19:16:56Z → 19:55Z and passed; the run's second job Context queued at 19:55:37Z. Nothing is failing — the run is simply still moving |
No run ended in startup_failure; the allowlist is not implicated in this round.
Review threads (GraphQL, headRefOid confirmed e028d627)
13 threads, 8 resolved, 5 unresolved.
| Thread | Path | Resolved | State against the tree |
|---|---|---|---|
PRRT_kwDOGp2yqc6hlp5s |
ADR | yes | fixed, replied, correct |
PRRT_kwDOGp2yqc6hlp5x |
2132 retrospective |
no | fixed by e028d627, no reply |
PRRT_kwDOGp2yqc6hlp50 |
2155 retrospective |
no | fixed by e028d627, no reply |
PRRT_kwDOGp2yqc6hlp54 |
analysis README | no | fixed by e028d627, no reply |
PRRT_kwDOGp2yqc6hlp6A |
review-feedback record | no | B3 outstanding |
PRRT_kwDOGp2yqc6hlp6H |
copilot-suggestions record | no | B3 outstanding |
| 7 r1-era threads | various | yes | substance now true; replies cite cef78cdb |
Re-verified across all 13 commits
- No conflict marker in any of the 13 commit trees.
- No automated-authorship trailer in any of the 13 commit messages; all 13 subjects follow Conventional Commits.
- Rename integrity:
git diff -M --name-statusgives 56 renames, 2 additions, 22 modifications. 53 renames move 19 folders fromdocs/issues/open/todocs/issues/closed/; 3 migrate active single-file specs to folder layout. Lowest similarity is 76 % on the2140and2175specs, accounted for by table realignment plus the blank-line removal in56e9c904. - 19 / 19 archived issues are
CLOSED(one batched query: 1586, 1588, 2121, 2122, 2130, 2132, 2134, 2136, 2138, 2140, 2150, 2151, 2155, 2156, 2160, 2162, 2169, 2175, 2203). - All 19 archived primary specs carry
status: done, aspec-pathunderdocs/issues/closed/, andlast-updated-utc: 2026-09-11.
Description Validation claims, recomputed
| Claim | Result |
|---|---|
"Verified all archived GitHub issues are CLOSED" |
holds, 19 / 19 |
| "Parsed changed Markdown frontmatter as YAML and checked archived primary-spec metadata" | now holds in both halves — 79 / 79 changed Markdown files parse, no folded sequence, 19 / 19 specs correct. This was the half-true claim in r2 |
| "Audited former archived and migrated specification paths, repairing current links" | holds — 0 frontmatter references to archived open/ paths remain, against 60 on develop; the 29 body-text survivors are historical records |
"Ran git diff --cached --check" |
equivalent gate green |
"Ran linter markdown and linter lychee" |
both green |
| "Ran the pre-commit hook successfully for each follow-up commit" | green at this head |
The diff at e028d627 is 80 files, +475 / −279, two of them new files, against merge-base develop e5389279.
|
Addressed review 5182099574.
|
|
Addressed review 5182914640 (r3, reviewed at B3 (re-raised) — corrected in the tracked audit records:
Suggestions
Nits
Validation: |
da2ce7
left a comment
There was a problem hiding this comment.
APPROVE — review round r4, head 69f8b89baec1068a2ef7918ddca3215dd6c202f3.
Since r3. Ten commits (4a48a6ca..69f8b89b), touching only docs/pr-review-feedback/pr-2207-review-feedback.md and docs/copilot-pr-reviews/pr-2207-copilot-suggestions.md (+47 / −23; git diff --stat e028d627..69f8b89b names no other path, and git diff e028d627 69f8b89b -- contrib/ is empty). B3 is resolved. Every row of both records was regraded from scratch this round against the tree and the API — none carried over from r3 — and all of them are now accurate: the four misattributed rows name e028d627, the Reviews table carries all three maintainer reviews with their real ids, timestamps and reviewed commits, findings F12–F25 record the r2 and r3 rounds, and the Copilot processing log distinguishes 327794a7 (the #1588 repair) from e028d627 (the other four files). B1 has not regressed. All six gates and all six CI workflows are green, and git merge-tree against develop e5389279 is clean.
One correction to my own r3 nit, since the record is the thing that survives: r3 said seven r1-era thread replies cite the superseded cef78cdb. The true count is six. The seventh r1 thread — PRRT_kwDOGp2yqc6hknxe, the B2 scope thread — was answered with a no-action rationale that cites no commit at all. The record says six, and the record is right.
Blockers
None. B3 is closed.
B3, regraded row by row at 69f8b89b
docs/pr-review-feedback/pr-2207-review-feedback.md — Reviews table, checked against gh api repos/torrust/torrust-tracker/pulls/2207/reviews:
| Review ID | Recorded | API | Grade |
|---|---|---|---|
| 5181622606 | 2026-09-11 17:24:04, da2ce7, CHANGES_REQUESTED, f7e54854 |
identical | accurate |
| 5182099574 | 2026-09-11 18:16:43, da2ce7, CHANGES_REQUESTED, 0ca10a81 |
identical | accurate |
| 5182914640 | 2026-09-11 19:58:04, da2ce7, CHANGES_REQUESTED, e028d627 |
identical | accurate |
The three rounds are all present. The Copilot bot review 5181471184 and the author's own COMMENTED reviews are absent by design — the record's Purpose section scopes it to the maintainer review and hands the thread-level audit to the Copilot record, and the Notes repeat it.
Findings, each cited commit verified with git show --stat and each thread and reply id verified against the GraphQL thread set:
| Row | Cited commit | What the tree / API shows | Grade |
|---|---|---|---|
| F1 (ADR) | e028d627 |
e028d627 touches exactly the ADR, the analysis README, and the 2132 and 2155 retrospectives |
accurate (was stale at r3) |
F2 (2132 retrospective) |
e028d627 |
same commit, this file among its four | accurate (was stale) |
F3 (1588 spec) |
327794a7 |
that commit is one line in the 1588 spec and nothing else |
accurate |
F4 (2155 retrospective) |
e028d627 |
same commit | accurate (was stale) |
| F5 (analysis README) | e028d627 |
same commit | accurate (was stale) |
| F6 (description) | N/A, NO_ACTION |
the live body's fifth Changes bullet carries the bounded-migration amendment | accurate |
| F7 (conflict markers) | 8934e9c9 |
git grep over all 23 commit trees returns zero markers |
accurate |
| F8 (scope split) | N/A, BLOCKED |
a record of a decision, not a claim of work | accurate |
| F9 (task inventory) | c7b54e3a |
one line in docs/features/shutdown-process/task-inventory.md |
accurate |
| F10 (PR body claim) | N/A | the live body carries no independent-review claim | accurate |
| F11 (checkpoints) | 7cfb6a3b |
appends the rationale to the 2121, 2140 and 2175 specs |
accurate |
| F12–F15 (r2 B1 re-raises) | e028d627 |
threads hlp5s / hlp5x / hlp50 / hlp54, replies r3992437411 / r3993333146 / r3993337378 / r3993342911, all present and resolved |
accurate |
| F16 (maintainer audit) | 4a48a6ca |
that commit rewrites the F1/F2/F4/F5 commit column and adds the r2 review row | accurate |
| F17 (Copilot audit) | 80f5eb23 |
that commit rewrites the Copilot record's commit column and log line | accurate |
| F18 (r3 B3, rows) | 4a48a6ca |
thread hnluR on the review-feedback path, reply r3993653175 |
accurate |
| F19 (r3 B3, reviews table) | d5f1ff7c |
thread hnluW, reply r3993654117; d5f1ff7c is the commit that inserts F12–F17 |
accurate |
| F20 (r3 B3, log line) | 80f5eb23 |
thread hnlua on the Copilot path, reply r3993654943 |
accurate |
| F21 (r3 S1) | 5bf2ff44 |
that commit is the pr-2153 / pr-2182 frontmatter repair |
accurate |
| F22 (r3 S2) | N/A | the three r2 threads now each carry a reply and are resolved | accurate |
| F23 (r3 S3) | N/A, BLOCKED |
same disposition as F8 | accurate |
| F24 (r3 S4) | N/A, DEFERRED |
an honest deferral; see the nit below on its granularity | accurate |
| F25 (r3 nit) | N/A | six threads cite cef78cdb, six carry a correction reply |
accurate |
Processing log: line 65 states that the F1/F2/F4/F5 replies were premature and that 327794a7 repairs F3 only — true. Line 67's chronology holds against the commit timestamps: 4a48a6ca and 80f5eb23 were written at 20:54 UTC, d5f1ff7c at 21:47 UTC, and the three r3 replies were posted at 21:48:36–21:48:52 UTC, so each correction really was published before the thread that asked for it was processed. Line 68 lists five correction URLs for the five threads whose file e028d627 repaired, and they are exactly r3993707529, r3993707681, r3993707812, r3993707932, r3993708076; the sixth, on the 1588 thread, is F25's r3993706015.
docs/copilot-pr-reviews/pr-2207-copilot-suggestions.md:
| Row | Fix commit | Verification | Grade |
|---|---|---|---|
| 1, 2 (ADR) | e028d627 |
thread ids hkOMl / hknxM resolve to the ADR path; e028d627 repairs it |
accurate |
3 (2132) |
e028d627 |
thread hknxT, path matches |
accurate |
4 (1588) |
327794a7 |
thread hknxU, and that commit is the 1588 one-liner |
accurate |
5 (2155) |
e028d627 |
thread hknxX, path matches |
accurate |
| 6 (analysis README) | e028d627 |
thread hknxa, path matches |
accurate |
| 7 (description) | N/A, no-action |
thread hknxe; the recorded path docs/issues/open/2159-…/ISSUE.md is still the live path at this head |
accurate |
| Processing log, line 39 | — | now separates 327794a7 (#1588 only) from e028d627 (ADR, #2132, #2155, shutdown analysis) |
accurate |
| Processing log, line 42 | — | "the six r1 replies on rows 1-6 cite cef78cdb" — exactly six, and the correction targets it names match each thread |
accurate |
| Processing log, line 43 | — | "no unresolved threads remain": 0 of 16 unresolved | accurate |
| Notes, line 63 | — | cef78cdb and 327794a7 share patch-id 968e42a5…, so "rewritten as" is exact |
accurate |
Suggestions
- S1 (r3 S3, unchanged). The branch still carries six separable concerns — the archive batch, the
2185conflict-marker repair, the open-pull-request pre-flight guardrail, the2159rescoping plus three-spec migration, the checkpoint explanations, and the audit records. F8 and F23 record keeping them together as a deliberate decision, which is a legitimate disposition; the guardrail and the migration remain the two with nothing to do with archiving closed specs. The same rows still carry the missing maintenance-trail reference from r1, so this and the unlinked body travel together. - S2 (r3 S4, unchanged). No gate in this repository detects a folded frontmatter sequence. All six gates are green at this head with five such sequences still in the tree, and they were equally green at
0ca10a81with eleven metadata entries silently missing — the gate set cannot tell those two trees apart on this axis. A check asserting that every item of a frontmatter sequence shares the first item's indent finds all of them. F24 defers it rather than opening an issue, which leaves the detection gap live; worth its own issue whenever the batch is closed.
Nits
- F24 folds two independent r3 items into one row — the gate suggestion and the separate nit listing the five pre-existing occurrences.
process-pr-review-feedbackasks for "one row per independent finding" (SKILL.md lines 42-44, repeated in the checklist at line 87). Cosmetic here, since the row's text carries both, and it does not affect any attribution. - The five pre-existing over-indented sequences are unchanged and are not this PR's doing: the repository-wide scan returns 5 occurrences at
69f8b89band the identical 5 ondevelope5389279(500 and 498 frontmatter blocks scanned), so this branch's delta is zero. They sit indocs/issues/closed/999-1978-optional-database-configuration/persistence-unavailable-scenarios.md:12, the three1488-si-11/12/13drafts, andtests/AGENTS.md:8.
Verification
B1 — recomputed at 69f8b89b, no regression
Frontmatter extracted from the tree with git show and parsed with yaml.safe_load; the raw count is the - lines inside the related-artifacts block.
| File | Raw | Parsed | Indents |
|---|---|---|---|
docs/adrs/20260901113500_define_completed_download_metric_retention_names.md |
7 | 7 | all 4 |
docs/issues/closed/2132-add-sigterm-to-main/implementation-retrospective.md |
5 | 5 | all 4 |
docs/issues/closed/2155-2003-document-ai-agent-orchestration/implementation-retrospective.md |
2 | 2 | all 4 |
docs/analysis/20260716-shutdown-process/README.md |
28 | 28 | all 4 |
docs/issues/closed/1588-review-shutdown-process-for-all-tasks-jobs/ISSUE.md |
12 | 12 | all 4 |
Both audit records also parse, and their frontmatter sequence counts match raw to parsed (3 and 2 items).
Gates (detached worktree at 69f8b89b, minimum priority, one target directory under lock)
| Gate | Exit | Wall | Lock wait |
|---|---|---|---|
git diff --check origin/develop..HEAD |
0 | 0.0 s | — |
| conflict-marker scan over the HEAD tree | 0 hits | 0.1 s | — |
linter markdown |
0 | 5.9 s | 0.009 s |
linter cspell |
0 | 8.8 s | 0.009 s |
linter lychee |
0 | 0.1 s | 0.007 s |
TORRUST_GIT_HOOKS_LOG_DIR=.tmp ./contrib/dev-tools/git/hooks/pre-commit.sh |
0 | 62.6 s | 0.010 s |
contrib/ is untouched since e028d627, confirmed before running the hook. Its six steps: dictionary format PASS (0 s), cargo machete PASS (8 s), cargo deny check bans PASS (2 s), all linters PASS (29 s), hadolint PASS (0 s), doc tests PASS (24 s); the worktree was clean afterwards. Six gates, 80.4 s total.
CI at 69f8b89b (six runs, all created 2026-09-11T21:59:12Z)
| Workflow | Status | Conclusion |
|---|---|---|
| Docs Lint | completed | success |
| Generate Coverage Report (PR) | completed | success |
| Copilot Setup Steps | completed | success |
| OS Compatibility | completed | success |
| Testing | completed | success |
| Container | completed | success |
No run ended in startup_failure. The Docker E2E job of Testing was skipped on this run rather than failing, so the known non-blocking breakage does not arise here; Container's Test (Docker) (release) and Context jobs both passed.
Review threads (GraphQL, headRefOid confirmed 69f8b89b)
16 threads, 16 resolved, 0 unresolved. Every thread whose claimed fix I re-checked has that fix present in the tree at this head. Six threads carry an r1 reply citing cef78cdb, and all six carry a later correction reply; each correction states the right target — 327794a7 for the 1588 thread, e028d627 for the ADR, 2132, 2155 and analysis-README threads. cef78cdb is not an ancestor of this head, and its patch-id is identical to 327794a7, so the records' "rewritten as" wording is exact.
Re-verified across all 23 commits
- No conflict marker in any of the 23 commit trees.
- No automated-authorship or co-author trailer in any of the 23 commit messages; all 23 subjects follow Conventional Commits, and every commit is authored by the same maintainer.
- Shape against merge-base
develope5389279: 80 files, +499 / −279, 56 renames, 2 additions, 22 modifications. - 19 / 19 archived issues are
CLOSED(one batched GraphQL query over 1586, 1588, 2121, 2122, 2130, 2132, 2134, 2136, 2138, 2140, 2150, 2151, 2155, 2156, 2160, 2162, 2169, 2175, 2203). - 19 / 19 archived primary specs carry
status: done, aspec-pathunderdocs/issues/closed/, andlast-updated-utc: 2026-09-11. git merge-treeofdevelopand this head writes a tree with no conflict.
Description and title, recomputed
Title follows Conventional Commits, the target branch is develop, and the body's Summary and Changes match the diff. The Validation claims hold: 19 / 19 issues CLOSED; all changed Markdown frontmatter parses with no folded sequence anywhere; zero frontmatter references to archived docs/issues/open/ paths remain; the diff-check, linter markdown, linter lychee and pre-commit equivalents are all green at this head. The body still links no issue, which remains open as part of F8 / F23 rather than as a separate point.
| | F21 | 5182914640 | Review body | N/A | <https://github.com/torrust/torrust-tracker/pull/2207#pullrequestreview-5182914640> | S1: `5bf2ff44` correctly repairs live frontmatter links while leaving historical body tables untouched. | NO_ACTION | `5bf2ff44` | Reviewer-confirmed; no change requested | N/A | NOT_APPLICABLE | DONE | | ||
| | F22 | 5182914640 | Review body | N/A | <https://github.com/torrust/torrust-tracker/pull/2207#pullrequestreview-5182914640> | S2: reply to and resolve the three fixed-but-unanswered r2 threads. | ACTION | N/A | Thread state re-fetched | See F13-F15 | RESOLVED | DONE | | ||
| | F23 | 5182914640 | Review body | N/A | <https://github.com/torrust/torrust-tracker/pull/2207#pullrequestreview-5182914640> | S3: branch still carries six separable concerns. | FOLLOW_UP | N/A | Same disposition as F8 | N/A | NOT_APPLICABLE | BLOCKED | | ||
| | F24 | 5182914640 | Review body | N/A | <https://github.com/torrust/torrust-tracker/pull/2207#pullrequestreview-5182914640> | S4: add a gate that detects folded frontmatter sequences; clear the five pre-existing occurrences. | FOLLOW_UP | N/A | User-directed: no issue opened in this PR | N/A | NOT_APPLICABLE | DEFERRED | |
There was a problem hiding this comment.
Nit, not blocking. This row carries two independent items from the r3 body — the suggestion to add a gate that detects folded frontmatter sequences, and the separate nit listing the five pre-existing occurrences. process-pr-review-feedback asks for one row per independent finding (SKILL.md lines 42-44, repeated in the checklist at line 87), so these would normally be two rows. The row's text does carry both, and nothing about the attribution is affected, so this is cosmetic.
|
ACK 69f8b89 — B3 closed, with every row of both tracked audit records regraded from scratch and now accurate, B1 unregressed at 7/5/2/28/12 parsed entries and a zero over-indentation delta against develop, all sixteen review threads resolved with the six superseded-commit citations corrected, six gates and six CI workflows green, and a clean merge preview. |
Summary
Archives repository specifications for closed GitHub issues, repairs committed conflict markers in an active external-link triage specification, strengthens pull-request workflow guardrails identified during this delivery, and applies the approved bounded migration of three inactive open specifications to the folder-style layout.
Changes
docs/issues/open/todocs/issues/closed/.developbaseline before pull-request creation.ISSUE.md.Validation
CLOSED.git diff --cached --check.linter markdownandlinter lychee.TORRUST_GIT_HOOKS_LOG_DIR=.tmp ./contrib/dev-tools/git/hooks/pre-commit.shsuccessfully for each follow-up commit.