@gobing-ai/spur 0.3.61 → 0.3.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/config/config.global.yaml +64 -57
  3. package/config/corpus-baseline.json +601 -49
  4. package/config/plugin-scripts.json +2 -2
  5. package/config/rules/boundary/config-loading-ownership.yaml +21 -0
  6. package/config/workflows/history-anatomy.yaml +395 -0
  7. package/package.json +9 -9
  8. package/plugins/sp/README.md +19 -6
  9. package/plugins/sp/commands/dev-find-issue.md +25 -46
  10. package/plugins/sp/commands/dev-idea.md +3 -3
  11. package/plugins/sp/commands/dev-run.md +22 -3
  12. package/plugins/sp/lib/artifact-digest.generated.d.mts +7 -0
  13. package/plugins/sp/lib/artifact-digest.generated.mjs +48 -0
  14. package/plugins/sp/plugin.json +1 -1
  15. package/plugins/sp/references/environment-lens.md +66 -0
  16. package/plugins/sp/references/roles.md +5 -5
  17. package/plugins/sp/scripts/history-anatomy-cache.mjs +818 -0
  18. package/plugins/sp/scripts/history-anatomy-cache.ts +1014 -0
  19. package/plugins/sp/skills/dogfood-testing/references/report-template.md +30 -0
  20. package/plugins/sp/skills/history-anatomy/SKILL.md +67 -0
  21. package/plugins/sp/skills/history-anatomy/references/modes.md +82 -0
  22. package/plugins/sp/skills/history-anatomy/references/operations.md +80 -0
  23. package/plugins/sp/skills/history-anatomy/references/report-contract.md +183 -0
  24. package/plugins/sp/skills/spur-cli/references/agent.md +15 -6
  25. package/plugins/sp/skills/spur-cli/references/message.md +4 -2
  26. package/plugins/sp/skills/spur-dev/references/cross-cutting.md +6 -4
  27. package/plugins/sp/skills/spur-dev/references/dev-operations.md +2 -2
  28. package/plugins/sp/skills/spur-dev/references/execution-batch.md +14 -1
  29. package/plugins/sp/skills/spur-dev/references/execution-workflow.md +7 -0
  30. package/plugins/sp/skills/spur-dev/references/flag-glossary.md +25 -13
  31. package/spur.js +1958 -1133
  32. package/web/_astro/{BoardApp.CBIzcvqi.js → BoardApp.CKolAjUz.js} +102 -102
  33. package/web/_astro/BoardApp.DXD--ybM.js +1 -0
  34. package/web/_astro/{TaskDetail.D2N60cfE.js → TaskDetail.Bre7G4gC.js} +1 -1
  35. package/web/_astro/{arc.D-EfJJwf.js → arc.7luwOGiC.js} +1 -1
  36. package/web/_astro/{architectureDiagram-3BPJPVTR.CgvTTzqp.js → architectureDiagram-3BPJPVTR.F6KaHXp-.js} +1 -1
  37. package/web/_astro/{blockDiagram-GPEHLZMM.CnOohvvn.js → blockDiagram-GPEHLZMM.CCGHeRVi.js} +1 -1
  38. package/web/_astro/{c4Diagram-AAUBKEIU.BFcBGUy_.js → c4Diagram-AAUBKEIU.CpqewGmd.js} +1 -1
  39. package/web/_astro/channel.DxfOFf1l.js +1 -0
  40. package/web/_astro/{chunk-2J33WTMH.C-6MR-XY.js → chunk-2J33WTMH.CB9vKa5F.js} +1 -1
  41. package/web/_astro/{chunk-4BX2VUAB.BN4LP5AR.js → chunk-4BX2VUAB.ifGXoUA3.js} +1 -1
  42. package/web/_astro/{chunk-55IACEB6.tUJ_CTtZ.js → chunk-55IACEB6.VIaRo7l8.js} +1 -1
  43. package/web/_astro/{chunk-727SXJPM.BNCk-sxv.js → chunk-727SXJPM.DzPE41OS.js} +1 -1
  44. package/web/_astro/{chunk-AQP2D5EJ.BkpFIbNa.js → chunk-AQP2D5EJ.UF2QRXYF.js} +1 -1
  45. package/web/_astro/{chunk-FMBD7UC4.DcSZ87PN.js → chunk-FMBD7UC4.D2zXKa1R.js} +1 -1
  46. package/web/_astro/{chunk-ND2GUHAM.BkLvHFFf.js → chunk-ND2GUHAM.Cb9bDyvx.js} +1 -1
  47. package/web/_astro/{chunk-QZHKN3VN.HOdgszax.js → chunk-QZHKN3VN.nUKFBiLD.js} +1 -1
  48. package/web/_astro/{classDiagram-4FO5ZUOK.CWfRiY6b.js → classDiagram-4FO5ZUOK.DZg9K9mO.js} +1 -1
  49. package/web/_astro/{classDiagram-v2-Q7XG4LA2.CWfRiY6b.js → classDiagram-v2-Q7XG4LA2.DZg9K9mO.js} +1 -1
  50. package/web/_astro/{cose-bilkent-S5V4N54A.C6j4PxoN.js → cose-bilkent-S5V4N54A.D9STo90d.js} +1 -1
  51. package/web/_astro/{dagre-BM42HDAG.BATZG1II.js → dagre-BM42HDAG.D3IbwhHz.js} +1 -1
  52. package/web/_astro/{diagram-2AECGRRQ.B0f5yY6x.js → diagram-2AECGRRQ.BWTDxBe9.js} +1 -1
  53. package/web/_astro/{diagram-5GNKFQAL.Bewupqv0.js → diagram-5GNKFQAL.XnXlonHG.js} +1 -1
  54. package/web/_astro/{diagram-KO2AKTUF.C23r1tB2.js → diagram-KO2AKTUF.CywOngCO.js} +1 -1
  55. package/web/_astro/{diagram-LMA3HP47.DUErdBOR.js → diagram-LMA3HP47.DY1D21Iu.js} +1 -1
  56. package/web/_astro/{diagram-OG6HWLK6.BubmwAjb.js → diagram-OG6HWLK6.DQxb59KA.js} +1 -1
  57. package/web/_astro/{erDiagram-TEJ5UH35.BE_Qs5mv.js → erDiagram-TEJ5UH35.CF2U-pQZ.js} +1 -1
  58. package/web/_astro/{flowDiagram-I6XJVG4X.COWdbzon.js → flowDiagram-I6XJVG4X.BJK4M3in.js} +1 -1
  59. package/web/_astro/{ganttDiagram-6RSMTGT7.5EGYC4MK.js → ganttDiagram-6RSMTGT7.BSniMzdB.js} +1 -1
  60. package/web/_astro/{gitGraphDiagram-PVQCEYII.bUUV7iEw.js → gitGraphDiagram-PVQCEYII.Dxg-yRov.js} +1 -1
  61. package/web/_astro/index.BVXdIsZV.css +1 -0
  62. package/web/_astro/{infoDiagram-5YYISTIA.CbiInFvz.js → infoDiagram-5YYISTIA.BY4CgO_n.js} +1 -1
  63. package/web/_astro/{ishikawaDiagram-YF4QCWOH.CB7lrSsJ.js → ishikawaDiagram-YF4QCWOH.BmWDZtwF.js} +1 -1
  64. package/web/_astro/{journeyDiagram-JHISSGLW.rhGZgWt8.js → journeyDiagram-JHISSGLW.CpB1YWDP.js} +1 -1
  65. package/web/_astro/{kanban-definition-UN3LZRKU.DPeZD_lP.js → kanban-definition-UN3LZRKU.k-fukQX9.js} +1 -1
  66. package/web/_astro/{linear.l60Nyp5b.js → linear.BNNCobvI.js} +1 -1
  67. package/web/_astro/{mermaid.core.DmtMJcmL.js → mermaid.core.DnpzzuPU.js} +4 -4
  68. package/web/_astro/{mindmap-definition-RKZ34NQL.Cc47AcCn.js → mindmap-definition-RKZ34NQL.D9NnlLBu.js} +1 -1
  69. package/web/_astro/{pieDiagram-4H26LBE5.B8cN-S9g.js → pieDiagram-4H26LBE5.CKhoMiyC.js} +1 -1
  70. package/web/_astro/{quadrantDiagram-W4KKPZXB.DY1FN89L.js → quadrantDiagram-W4KKPZXB.BkAygRlm.js} +1 -1
  71. package/web/_astro/{requirementDiagram-4Y6WPE33.CnM6VbV8.js → requirementDiagram-4Y6WPE33.CX8ibmwc.js} +1 -1
  72. package/web/_astro/{sankeyDiagram-5OEKKPKP.B9DcGfNV.js → sankeyDiagram-5OEKKPKP.Dvurpa0Y.js} +1 -1
  73. package/web/_astro/{sequenceDiagram-3UESZ5HK.ymxaNlAY.js → sequenceDiagram-3UESZ5HK.veO8c2tk.js} +1 -1
  74. package/web/_astro/{stateDiagram-AJRCARHV.DDOJ3d8P.js → stateDiagram-AJRCARHV.DpMr4CO3.js} +1 -1
  75. package/web/_astro/{stateDiagram-v2-BHNVJYJU.Ck0Nb_KY.js → stateDiagram-v2-BHNVJYJU.CKjso86_.js} +1 -1
  76. package/web/_astro/{timeline-definition-PNZ67QCA.BNOvZwAN.js → timeline-definition-PNZ67QCA.DayoPp_2.js} +1 -1
  77. package/web/_astro/{vennDiagram-CIIHVFJN.D3k5ivSF.js → vennDiagram-CIIHVFJN.XNHf04O9.js} +1 -1
  78. package/web/_astro/{wardley-L42UT6IY.BylaxVqn.js → wardley-L42UT6IY.CpM_031g.js} +1 -1
  79. package/web/_astro/{wardleyDiagram-YWT4CUSO.HLNtFUm9.js → wardleyDiagram-YWT4CUSO.lIAjSkZJ.js} +1 -1
  80. package/web/_astro/{xychartDiagram-2RQKCTM6.B-WooKSU.js → xychartDiagram-2RQKCTM6.D8_2K6U1.js} +1 -1
  81. package/web/index.html +2 -2
  82. package/plugins/sp/commands/dev-history-load.md +0 -63
  83. package/plugins/sp/scripts/history-load.mjs +0 -268
  84. package/plugins/sp/scripts/history-load.ts +0 -400
  85. package/web/_astro/BoardApp.BtRfVADq.js +0 -1
  86. package/web/_astro/channel.kIu33Gui.js +0 -1
  87. package/web/_astro/index.Cestp9nh.css +0 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "note": "Accepted `spur task check` / `spur feature check` errors. This is a POLICY file, not a status dump: it is an INPUT to `bun run corpus-check`, so it must be committed — an untracked baseline means the gate behaves differently on every clone and CI, and the first person to meet 8 unexplained failures disables it. Do not move it under `.spur/` (gitignored, ephemeral run artifacts). The gate fails on any error NOT listed here, and ALSO on any entry that no longer reproduces, so this cannot rot into a silent suppression list. Every entry needs a real diagnosis, a reason, and a date — 'pre-existing, not investigated' is not a reason. SCOPE (2026-08-17, ADR-062 / task 0582): the sweep now covers EVERY configured task folder, not just the active one. The entries dated 2026-08-17 are that widening's honest backlog — all in docs/tasks{,2,3}, none in the active folder — and every one is a gate that postdates the task it fires on. They stay two-sided: if a legacy corpus is migrated and an error stops reproducing, the gate fails as stale and the entry must be removed. PER-CODE DIAGNOSIS FOR THE 2026-08-17 ENTRIES. § L1.schema-validation — These tasks predate DD-03, when `schema_version: 1` became a required frontmatter field; 79 of 128 files in docs/tasks lack it entirely, so the strictness gate reports `expected 1` against an absent field. The work is closed and correct; only the envelope is pre-schema. Backfilling across three archived corpora is a corpus migration, not a task repair. § L3.review-priority-table — The P1–P4 priority findings table became the required Review shape after these tasks closed; they carry the older prose form (`#### Verification (dev-verify) … **Verdict: PASS**` plus narrative findings). The review happened and its verdict is recorded — only the layout is pre-gate. Re-formatting closed reviews rewrites historical evidence to satisfy a later convention. § L3.solution-file-line — The `file:line` citation requirement postdates these tasks; their Solution sections describe changes in prose, naming modules rather than lines. Retrofitting citations means re-deriving line numbers for long-merged diffs — a guess dressed as evidence, which is precisely what feature L exists to prevent. § L3.required-section-placeholder — These reached `done` before the section matrix required a populated Testing/Solution at terminal status, so the section sits at its template placeholder. `spur task record` cannot fill them: these runs predate `.spur/run/<wbs>-verdict.json`, so no verdict artifact exists to transcribe. § L3.ac-empty — Acceptance Criteria was not a populated-at-close requirement when these ran, and several are spike, meta, and brainstorm tasks whose output is a decision or a document rather than a testable behavior. Authoring AC for closed exploratory work would be fiction written to satisfy a checker. § L2.missing-required-section — The section matrix gained these required sections (chiefly Review) after the tasks closed. Adding an empty required heading converts a legible historical record into a hollow one that then trips the placeholder gate instead. § L3.requirements-empty — Nine spike/meta/brainstorm tasks whose Requirements were never populated because their contract was a question to answer, not a behavior to build. The `unverifiable` diagnosis is accurate and accepted: they were never verified against requirements, and back-filling now would invent a contract the work was never held to. DEDUPE (2026-08-17, task 0582 R5 verify): the warning half was generated per-observed-finding rather than per key, so 2541 entries covered only 903 distinct keys. Reconciliation is key-addressed, so the extras were unreachable and the ratchet could see only a key's total disappearance, never a partial reduction. Collapsed to one entry per key; `duplicateBaselineKeys` now fails the gate so this cannot recur. ANCHOR-SUBJECT WAVE (2026-08-18, task 0583 R6): `L4.anchor-subject-mismatch` entries are the first sweep of the content-matching rule over historical citations, accepted at WARNING severity only. 0583 R6 promotes the code to error after the qualification migration is APPLIED and this residue is worked down; promotion is a reconcile-the-entry event because severity is part of the acceptance contract.",
2
+ "note": "Accepted `spur task check` / `spur feature check` errors. This is a POLICY file, not a status dump: it is an INPUT to `bun run corpus-check`, so it must be committed — an untracked baseline means the gate behaves differently on every clone and CI, and the first person to meet 8 unexplained failures disables it. Do not move it under `.spur/` (gitignored, ephemeral run artifacts). The gate fails on any error NOT listed here, and ALSO on any entry that no longer reproduces, so this cannot rot into a silent suppression list. Every entry needs a real diagnosis, a reason, and a date — 'pre-existing, not investigated' is not a reason. SCOPE (2026-08-17, ADR-062 / task 0582): the sweep now covers EVERY configured task folder, not just the active one. The entries dated 2026-08-17 are that widening's honest backlog — all in docs/tasks{,2,3}, none in the active folder — and every one is a gate that postdates the task it fires on. They stay two-sided: if a legacy corpus is migrated and an error stops reproducing, the gate fails as stale and the entry must be removed. PER-CODE DIAGNOSIS FOR THE 2026-08-17 ENTRIES. § L1.schema-validation — These tasks predate DD-03, when `schema_version: 1` became a required frontmatter field; 79 of 128 files in docs/tasks lack it entirely, so the strictness gate reports `expected 1` against an absent field. The work is closed and correct; only the envelope is pre-schema. Backfilling across three archived corpora is a corpus migration, not a task repair. § L3.review-priority-table — The P1–P4 priority findings table became the required Review shape after these tasks closed; they carry the older prose form (`#### Verification (dev-verify) … **Verdict: PASS**` plus narrative findings). The review happened and its verdict is recorded — only the layout is pre-gate. Re-formatting closed reviews rewrites historical evidence to satisfy a later convention. § L3.solution-file-line — The `file:line` citation requirement postdates these tasks; their Solution sections describe changes in prose, naming modules rather than lines. Retrofitting citations means re-deriving line numbers for long-merged diffs — a guess dressed as evidence, which is precisely what feature L exists to prevent. § L3.required-section-placeholder — These reached `done` before the section matrix required a populated Testing/Solution at terminal status, so the section sits at its template placeholder. `spur task record` cannot fill them: these runs predate `.spur/run/<wbs>-verdict.json`, so no verdict artifact exists to transcribe. § L3.ac-empty — Acceptance Criteria was not a populated-at-close requirement when these ran, and several are spike, meta, and brainstorm tasks whose output is a decision or a document rather than a testable behavior. Authoring AC for closed exploratory work would be fiction written to satisfy a checker. § L2.missing-required-section — The section matrix gained these required sections (chiefly Review) after the tasks closed. Adding an empty required heading converts a legible historical record into a hollow one that then trips the placeholder gate instead. § L3.requirements-empty — Nine spike/meta/brainstorm tasks whose Requirements were never populated because their contract was a question to answer, not a behavior to build. The `unverifiable` diagnosis is accurate and accepted: they were never verified against requirements, and back-filling now would invent a contract the work was never held to. DEDUPE (2026-08-17, task 0582 R5 verify): the warning half was generated per-observed-finding rather than per key, so 2541 entries covered only 903 distinct keys. Reconciliation is key-addressed, so the extras were unreachable and the ratchet could see only a key's total disappearance, never a partial reduction. Collapsed to one entry per key; `duplicateBaselineKeys` now fails the gate so this cannot recur. ANCHOR-SUBJECT WAVE (2026-08-18, task 0583 R6): `L4.anchor-subject-mismatch` entries are the first sweep of the content-matching rule over historical citations, accepted at WARNING severity only. 0583 R6 promotes the code to error after the qualification migration is APPLIED and this residue is worked down; promotion is a reconcile-the-entry event because severity is part of the acceptance contract. RECONCILED 2026-08-25 (task 0670, feature F61; decision ADR-083). § L4.anchor-subject-mismatch (2026-08-25) — Measured residue of the point-window matcher (ADR-083 probe 2): the cited line resolves and is in bounds but does not lexically name the requirement row's subject, because the matcher reads only the cited lines and a single-line anchor inside a symbol cannot contain that symbol's name. The citation is correct; the window is too narrow. Decision: dated legacy set, frozen pending feature F91's matcher decision; not a repair campaign and not a matcher change here. § L4.stale-line-anchor (2026-08-25) — Measured residue of anchors whose path cannot resolve from project root (bare or plugin-relative paths such as plugins/sp/scripts/history-load.ts, dev-find-issue.md:47, eval-pipeline.ts:204) or whose line range exceeds the file. The F91 anchor-qualification migration (task 0583) repaired the 2026-08-17 ambiguous set; these postdate that pass. Decision: dated legacy set, frozen pending F91 (ADR-083). § L3.unchecked-checklist (2026-08-25) — Recent closed tasks (0662, 0663, 0664, 0668) reached done/cancelled with planning checklist items never flipped; flipping post-close rewrites history (same family as the 2026-08-17 block). § L3.ac-empty (2026-08-25) — Task 0662 closed with placeholder-only Acceptance Criteria; authoring AC post-close for exploratory work invents a contract (same family as the 2026-08-17 block).",
3
3
  "entries": [
4
4
  {
5
5
  "kind": "feature",
@@ -81,14 +81,6 @@
81
81
  "reason": "Feature AC scenarios have no linked task (orphan scenarios) — see note § L4.orphan-scenarios.",
82
82
  "since": "2026-08-17"
83
83
  },
84
- {
85
- "kind": "feature",
86
- "id": "E6",
87
- "code": "L4.scenario-unverified",
88
- "severity": "warning",
89
- "reason": "Linked task lacks a PASS verdict with MET requirement — verification pending, see note § L4.scenario-unverified.",
90
- "since": "2026-08-17"
91
- },
92
84
  {
93
85
  "kind": "feature",
94
86
  "id": "E7",
@@ -97,14 +89,6 @@
97
89
  "reason": "Accepted backlog: L4.orphan-scenarios",
98
90
  "since": "2026-08-19"
99
91
  },
100
- {
101
- "kind": "feature",
102
- "id": "E9",
103
- "code": "L4.scenario-unverified",
104
- "severity": "warning",
105
- "reason": "Accepted clean-checkout limitation: E9 PASS verdict artifacts are runtime-only under .spur/run; tracked task Testing sections retain the verification evidence.",
106
- "since": "2026-08-22"
107
- },
108
92
  {
109
93
  "kind": "feature",
110
94
  "id": "F1",
@@ -423,14 +407,6 @@
423
407
  "reason": "Linked task lacks a PASS verdict with MET requirement — verification pending, see note § L4.scenario-unverified.",
424
408
  "since": "2026-08-17"
425
409
  },
426
- {
427
- "kind": "feature",
428
- "id": "M3",
429
- "code": "L4.scenario-unverified",
430
- "severity": "warning",
431
- "reason": "Linked task lacks a PASS verdict with MET requirement — verification pending, see note § L4.scenario-unverified.",
432
- "since": "2026-08-17"
433
- },
434
410
  {
435
411
  "kind": "feature",
436
412
  "id": "M3",
@@ -5703,14 +5679,6 @@
5703
5679
  "reason": "Accumulated anchor drift surfaced by task 0583's content-matching rule: the cited lines resolve and are in bounds but no longer name the requirement row's subject, because a later task edited the file and pushed the anchor onto unrelated code. Spot-verified true positives. Held at WARNING severity — promotion to error would fail the per-task `--strict-core` done-gate for 332 of 586 tasks, and that gate does not consult this baseline.",
5704
5680
  "since": "2026-08-18"
5705
5681
  },
5706
- {
5707
- "kind": "task",
5708
- "id": "0127",
5709
- "code": "L4.stale-line-anchor",
5710
- "severity": "warning",
5711
- "reason": "Anchor written with an incomplete path; qualification migration (task 0583) owns the mechanical repair — see note § L4.stale-line-anchor.",
5712
- "since": "2026-08-17"
5713
- },
5714
5682
  {
5715
5683
  "kind": "task",
5716
5684
  "id": "0128",
@@ -5726,14 +5694,6 @@
5726
5694
  "reason": "Done tasks carry unflipped planning checkboxes; flipping post-close rewrites history — remediation is separate work, see note § L3.unchecked-checklist.",
5727
5695
  "since": "2026-08-17"
5728
5696
  },
5729
- {
5730
- "kind": "task",
5731
- "id": "0128",
5732
- "code": "L4.stale-line-anchor",
5733
- "severity": "warning",
5734
- "reason": "Anchor written with an incomplete path; qualification migration (task 0583) owns the mechanical repair — see note § L4.stale-line-anchor.",
5735
- "since": "2026-08-17"
5736
- },
5737
5697
  {
5738
5698
  "kind": "task",
5739
5699
  "id": "0128",
@@ -12557,14 +12517,6 @@
12557
12517
  "reason": "Accumulated anchor drift, surfaced for the first time by task 0583's content-matching rule. The cited lines resolve and are in bounds, but no longer name the requirement row's subject — a later task edited the file and pushed the anchor onto unrelated code. Spot-verified true positives (an import block cited for a component's hooks; a severity-parsing block cited for `runL4Rollup`). Repairing 1,300+ historical citations is its own campaign; the rule ships at warning severity until then (0583 R6).",
12558
12518
  "since": "2026-08-18"
12559
12519
  },
12560
- {
12561
- "kind": "task",
12562
- "id": "0434",
12563
- "code": "L4.stale-line-anchor",
12564
- "severity": "warning",
12565
- "reason": "Anchor written with an incomplete path; qualification migration (task 0583) owns the mechanical repair — see note § L4.stale-line-anchor.",
12566
- "since": "2026-08-17"
12567
- },
12568
12520
  {
12569
12521
  "kind": "task",
12570
12522
  "id": "0435",
@@ -14979,6 +14931,606 @@
14979
14931
  "severity": "warning",
14980
14932
  "reason": "task scenarios sit at finer altitude than feature E5 AC; DD-09 subset rule fires — pre-existing, feature AC not extended",
14981
14933
  "since": "2026-08-21"
14934
+ },
14935
+ {
14936
+ "kind": "feature",
14937
+ "id": "A1",
14938
+ "code": "L4.evidence-not-recoverable",
14939
+ "severity": "warning",
14940
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
14941
+ "since": "2026-08-25"
14942
+ },
14943
+ {
14944
+ "kind": "feature",
14945
+ "id": "A2",
14946
+ "code": "L4.evidence-not-recoverable",
14947
+ "severity": "warning",
14948
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
14949
+ "since": "2026-08-25"
14950
+ },
14951
+ {
14952
+ "kind": "feature",
14953
+ "id": "F6",
14954
+ "code": "L4.evidence-not-recoverable",
14955
+ "severity": "warning",
14956
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
14957
+ "since": "2026-08-25"
14958
+ },
14959
+ {
14960
+ "kind": "feature",
14961
+ "id": "F7",
14962
+ "code": "L4.evidence-not-recoverable",
14963
+ "severity": "warning",
14964
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
14965
+ "since": "2026-08-25"
14966
+ },
14967
+ {
14968
+ "kind": "feature",
14969
+ "id": "F8",
14970
+ "code": "L4.evidence-not-recoverable",
14971
+ "severity": "warning",
14972
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
14973
+ "since": "2026-08-25"
14974
+ },
14975
+ {
14976
+ "kind": "feature",
14977
+ "id": "F81",
14978
+ "code": "L4.evidence-not-recoverable",
14979
+ "severity": "warning",
14980
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
14981
+ "since": "2026-08-25"
14982
+ },
14983
+ {
14984
+ "kind": "feature",
14985
+ "id": "F822",
14986
+ "code": "L4.evidence-not-recoverable",
14987
+ "severity": "warning",
14988
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
14989
+ "since": "2026-08-25"
14990
+ },
14991
+ {
14992
+ "kind": "feature",
14993
+ "id": "F9",
14994
+ "code": "L4.evidence-not-recoverable",
14995
+ "severity": "warning",
14996
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
14997
+ "since": "2026-08-25"
14998
+ },
14999
+ {
15000
+ "kind": "feature",
15001
+ "id": "G1",
15002
+ "code": "L4.evidence-not-recoverable",
15003
+ "severity": "warning",
15004
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
15005
+ "since": "2026-08-25"
15006
+ },
15007
+ {
15008
+ "kind": "feature",
15009
+ "id": "H1",
15010
+ "code": "L4.evidence-not-recoverable",
15011
+ "severity": "warning",
15012
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
15013
+ "since": "2026-08-25"
15014
+ },
15015
+ {
15016
+ "kind": "feature",
15017
+ "id": "I1",
15018
+ "code": "L4.evidence-not-recoverable",
15019
+ "severity": "warning",
15020
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
15021
+ "since": "2026-08-25"
15022
+ },
15023
+ {
15024
+ "kind": "feature",
15025
+ "id": "J",
15026
+ "code": "L4.evidence-not-recoverable",
15027
+ "severity": "warning",
15028
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
15029
+ "since": "2026-08-25"
15030
+ },
15031
+ {
15032
+ "kind": "feature",
15033
+ "id": "J1",
15034
+ "code": "L4.evidence-not-recoverable",
15035
+ "severity": "warning",
15036
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
15037
+ "since": "2026-08-25"
15038
+ },
15039
+ {
15040
+ "kind": "feature",
15041
+ "id": "M1",
15042
+ "code": "L4.evidence-not-recoverable",
15043
+ "severity": "warning",
15044
+ "reason": "No verdict artifact and the tracked ## Testing section carries no recoverable coverage evidence; tasks predate durable verification recording (F93 fallback state, task 0673).",
15045
+ "since": "2026-08-25"
15046
+ },
15047
+ {
15048
+ "kind": "task",
15049
+ "id": "0384",
15050
+ "code": "L4.anchor-subject-mismatch",
15051
+ "severity": "error",
15052
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15053
+ "since": "2026-08-25"
15054
+ },
15055
+ {
15056
+ "kind": "task",
15057
+ "id": "0660",
15058
+ "code": "L4.anchor-subject-mismatch",
15059
+ "severity": "error",
15060
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15061
+ "since": "2026-08-25"
15062
+ },
15063
+ {
15064
+ "kind": "task",
15065
+ "id": "0664",
15066
+ "code": "L4.anchor-subject-mismatch",
15067
+ "severity": "error",
15068
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15069
+ "since": "2026-08-25"
15070
+ },
15071
+ {
15072
+ "kind": "task",
15073
+ "id": "0542",
15074
+ "code": "L4.anchor-subject-mismatch",
15075
+ "severity": "error",
15076
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15077
+ "since": "2026-08-25"
15078
+ },
15079
+ {
15080
+ "kind": "task",
15081
+ "id": "0649",
15082
+ "code": "L4.anchor-subject-mismatch",
15083
+ "severity": "error",
15084
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15085
+ "since": "2026-08-25"
15086
+ },
15087
+ {
15088
+ "kind": "task",
15089
+ "id": "0624",
15090
+ "code": "L4.anchor-subject-mismatch",
15091
+ "severity": "error",
15092
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15093
+ "since": "2026-08-25"
15094
+ },
15095
+ {
15096
+ "kind": "task",
15097
+ "id": "0561",
15098
+ "code": "L4.anchor-subject-mismatch",
15099
+ "severity": "error",
15100
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15101
+ "since": "2026-08-25"
15102
+ },
15103
+ {
15104
+ "kind": "task",
15105
+ "id": "0570",
15106
+ "code": "L4.anchor-subject-mismatch",
15107
+ "severity": "error",
15108
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15109
+ "since": "2026-08-25"
15110
+ },
15111
+ {
15112
+ "kind": "task",
15113
+ "id": "0625",
15114
+ "code": "L4.anchor-subject-mismatch",
15115
+ "severity": "error",
15116
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15117
+ "since": "2026-08-25"
15118
+ },
15119
+ {
15120
+ "kind": "task",
15121
+ "id": "0632",
15122
+ "code": "L4.anchor-subject-mismatch",
15123
+ "severity": "error",
15124
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15125
+ "since": "2026-08-25"
15126
+ },
15127
+ {
15128
+ "kind": "task",
15129
+ "id": "0647",
15130
+ "code": "L4.anchor-subject-mismatch",
15131
+ "severity": "error",
15132
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15133
+ "since": "2026-08-25"
15134
+ },
15135
+ {
15136
+ "kind": "task",
15137
+ "id": "0629",
15138
+ "code": "L4.anchor-subject-mismatch",
15139
+ "severity": "error",
15140
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15141
+ "since": "2026-08-25"
15142
+ },
15143
+ {
15144
+ "kind": "task",
15145
+ "id": "0648",
15146
+ "code": "L4.anchor-subject-mismatch",
15147
+ "severity": "error",
15148
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15149
+ "since": "2026-08-25"
15150
+ },
15151
+ {
15152
+ "kind": "task",
15153
+ "id": "0642",
15154
+ "code": "L4.anchor-subject-mismatch",
15155
+ "severity": "error",
15156
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15157
+ "since": "2026-08-25"
15158
+ },
15159
+ {
15160
+ "kind": "task",
15161
+ "id": "0661",
15162
+ "code": "L4.anchor-subject-mismatch",
15163
+ "severity": "error",
15164
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15165
+ "since": "2026-08-25"
15166
+ },
15167
+ {
15168
+ "kind": "task",
15169
+ "id": "0638",
15170
+ "code": "L4.anchor-subject-mismatch",
15171
+ "severity": "error",
15172
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15173
+ "since": "2026-08-25"
15174
+ },
15175
+ {
15176
+ "kind": "task",
15177
+ "id": "0658",
15178
+ "code": "L4.anchor-subject-mismatch",
15179
+ "severity": "error",
15180
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15181
+ "since": "2026-08-25"
15182
+ },
15183
+ {
15184
+ "kind": "task",
15185
+ "id": "0641",
15186
+ "code": "L4.anchor-subject-mismatch",
15187
+ "severity": "error",
15188
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15189
+ "since": "2026-08-25"
15190
+ },
15191
+ {
15192
+ "kind": "task",
15193
+ "id": "0628",
15194
+ "code": "L4.anchor-subject-mismatch",
15195
+ "severity": "error",
15196
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15197
+ "since": "2026-08-25"
15198
+ },
15199
+ {
15200
+ "kind": "task",
15201
+ "id": "0662",
15202
+ "code": "L3.ac-empty",
15203
+ "severity": "error",
15204
+ "reason": "Task closed with placeholder-only Acceptance Criteria; authoring AC post-close invents a contract — see note § L3.ac-empty (2026-08-25).",
15205
+ "since": "2026-08-25"
15206
+ },
15207
+ {
15208
+ "kind": "task",
15209
+ "id": "0657",
15210
+ "code": "L4.anchor-subject-mismatch",
15211
+ "severity": "error",
15212
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15213
+ "since": "2026-08-25"
15214
+ },
15215
+ {
15216
+ "kind": "task",
15217
+ "id": "0659",
15218
+ "code": "L4.anchor-subject-mismatch",
15219
+ "severity": "error",
15220
+ "reason": "Point-window matcher residue (probe 2): cited line resolves and is in bounds but does not name the row subject because the matcher reads only the cited lines — see note § L4.anchor-subject-mismatch (2026-08-25), ADR-083.",
15221
+ "since": "2026-08-25"
15222
+ },
15223
+ {
15224
+ "kind": "task",
15225
+ "id": "0420",
15226
+ "code": "L4.stale-line-anchor",
15227
+ "severity": "warning",
15228
+ "reason": "Anchor path cannot resolve from project root (bare or plugin-relative) or line range exceeds file — see note § L4.stale-line-anchor (2026-08-25), ADR-083.",
15229
+ "since": "2026-08-25"
15230
+ },
15231
+ {
15232
+ "kind": "task",
15233
+ "id": "0569",
15234
+ "code": "L4.stale-line-anchor",
15235
+ "severity": "warning",
15236
+ "reason": "Anchor path cannot resolve from project root (bare or plugin-relative) or line range exceeds file — see note § L4.stale-line-anchor (2026-08-25), ADR-083.",
15237
+ "since": "2026-08-25"
15238
+ },
15239
+ {
15240
+ "kind": "task",
15241
+ "id": "0664",
15242
+ "code": "L3.unchecked-checklist",
15243
+ "severity": "warning",
15244
+ "reason": "Closed task carries planning checkboxes never flipped; flipping post-close rewrites history — see note § L3.unchecked-checklist (2026-08-25).",
15245
+ "since": "2026-08-25"
15246
+ },
15247
+ {
15248
+ "kind": "task",
15249
+ "id": "0663",
15250
+ "code": "L3.unchecked-checklist",
15251
+ "severity": "warning",
15252
+ "reason": "Closed task carries planning checkboxes never flipped; flipping post-close rewrites history — see note § L3.unchecked-checklist (2026-08-25).",
15253
+ "since": "2026-08-25"
15254
+ },
15255
+ {
15256
+ "kind": "task",
15257
+ "id": "0556",
15258
+ "code": "L4.stale-line-anchor",
15259
+ "severity": "warning",
15260
+ "reason": "Anchor path cannot resolve from project root (bare or plugin-relative) or line range exceeds file — see note § L4.stale-line-anchor (2026-08-25), ADR-083.",
15261
+ "since": "2026-08-25"
15262
+ },
15263
+ {
15264
+ "kind": "task",
15265
+ "id": "0570",
15266
+ "code": "L4.stale-line-anchor",
15267
+ "severity": "warning",
15268
+ "reason": "Anchor path cannot resolve from project root (bare or plugin-relative) or line range exceeds file — see note § L4.stale-line-anchor (2026-08-25), ADR-083.",
15269
+ "since": "2026-08-25"
15270
+ },
15271
+ {
15272
+ "kind": "task",
15273
+ "id": "0661",
15274
+ "code": "L4.stale-line-anchor",
15275
+ "severity": "warning",
15276
+ "reason": "Anchor path cannot resolve from project root (bare or plugin-relative) or line range exceeds file — see note § L4.stale-line-anchor (2026-08-25), ADR-083.",
15277
+ "since": "2026-08-25"
15278
+ },
15279
+ {
15280
+ "kind": "task",
15281
+ "id": "0549",
15282
+ "code": "L4.stale-line-anchor",
15283
+ "severity": "warning",
15284
+ "reason": "Anchor path cannot resolve from project root (bare or plugin-relative) or line range exceeds file — see note § L4.stale-line-anchor (2026-08-25), ADR-083.",
15285
+ "since": "2026-08-25"
15286
+ },
15287
+ {
15288
+ "kind": "task",
15289
+ "id": "0658",
15290
+ "code": "L4.stale-line-anchor",
15291
+ "severity": "warning",
15292
+ "reason": "Anchor path cannot resolve from project root (bare or plugin-relative) or line range exceeds file — see note § L4.stale-line-anchor (2026-08-25), ADR-083.",
15293
+ "since": "2026-08-25"
15294
+ },
15295
+ {
15296
+ "kind": "task",
15297
+ "id": "0567",
15298
+ "code": "L4.stale-line-anchor",
15299
+ "severity": "warning",
15300
+ "reason": "Anchor path cannot resolve from project root (bare or plugin-relative) or line range exceeds file — see note § L4.stale-line-anchor (2026-08-25), ADR-083.",
15301
+ "since": "2026-08-25"
15302
+ },
15303
+ {
15304
+ "kind": "task",
15305
+ "id": "0668",
15306
+ "code": "L3.unchecked-checklist",
15307
+ "severity": "warning",
15308
+ "reason": "Closed task carries planning checkboxes never flipped; flipping post-close rewrites history — see note § L3.unchecked-checklist (2026-08-25).",
15309
+ "since": "2026-08-25"
15310
+ },
15311
+ {
15312
+ "kind": "task",
15313
+ "id": "0662",
15314
+ "code": "L3.unchecked-checklist",
15315
+ "severity": "warning",
15316
+ "reason": "Closed task carries planning checkboxes never flipped; flipping post-close rewrites history — see note § L3.unchecked-checklist (2026-08-25).",
15317
+ "since": "2026-08-25"
15318
+ },
15319
+ {
15320
+ "kind": "task",
15321
+ "id": "0657",
15322
+ "code": "L4.stale-line-anchor",
15323
+ "severity": "warning",
15324
+ "reason": "Anchor path cannot resolve from project root (bare or plugin-relative) or line range exceeds file — see note § L4.stale-line-anchor (2026-08-25), ADR-083.",
15325
+ "since": "2026-08-25"
15326
+ },
15327
+ {
15328
+ "kind": "task",
15329
+ "id": "0659",
15330
+ "code": "L4.stale-line-anchor",
15331
+ "severity": "warning",
15332
+ "reason": "Anchor path cannot resolve from project root (bare or plugin-relative) or line range exceeds file — see note § L4.stale-line-anchor (2026-08-25), ADR-083.",
15333
+ "since": "2026-08-25"
15334
+ },
15335
+ {
15336
+ "kind": "feature",
15337
+ "id": "E1",
15338
+ "code": "L4.scenario-unverified",
15339
+ "severity": "warning",
15340
+ "reason": "Linked historical task 0474 has no canonical PASS verdict with MET requirements; accepted until evidence is recovered or rerun, with two-sided removal when it lands.",
15341
+ "since": "2026-08-26"
15342
+ },
15343
+ {
15344
+ "kind": "feature",
15345
+ "id": "F4",
15346
+ "code": "L4.scenario-unverified",
15347
+ "severity": "warning",
15348
+ "reason": "Linked historical task 0418 has no canonical PASS verdict with MET requirements; accepted until evidence is recovered or rerun, with two-sided removal when it lands.",
15349
+ "since": "2026-08-26"
15350
+ },
15351
+ {
15352
+ "kind": "feature",
15353
+ "id": "F91",
15354
+ "code": "L4.scenario-unverified",
15355
+ "severity": "warning",
15356
+ "reason": "Linked historical task 0582 has no canonical PASS verdict with MET requirements; accepted until evidence is recovered or rerun, with two-sided removal when it lands.",
15357
+ "since": "2026-08-26"
15358
+ },
15359
+ {
15360
+ "kind": "feature",
15361
+ "id": "G4",
15362
+ "code": "L4.scenario-unverified",
15363
+ "severity": "warning",
15364
+ "reason": "Linked historical task 0529 has no canonical PASS verdict with MET requirements; accepted until evidence is recovered or rerun, with two-sided removal when it lands.",
15365
+ "since": "2026-08-26"
15366
+ },
15367
+ {
15368
+ "kind": "feature",
15369
+ "id": "I3",
15370
+ "code": "L4.scenario-unverified",
15371
+ "severity": "warning",
15372
+ "reason": "Linked historical tasks 0539/0540 have no canonical PASS verdict with MET requirements; accepted until evidence is recovered or rerun, with two-sided removal when it lands.",
15373
+ "since": "2026-08-26"
15374
+ },
15375
+ {
15376
+ "kind": "feature",
15377
+ "id": "I81",
15378
+ "code": "L4.dogfood-missing",
15379
+ "severity": "warning",
15380
+ "reason": "Self-referential history-anatomy work has no tracked dogfood artifact yet; accepted pending feature verification, with two-sided removal when the artifact lands.",
15381
+ "since": "2026-08-26"
15382
+ },
15383
+ {
15384
+ "kind": "feature",
15385
+ "id": "I81",
15386
+ "code": "L4.scenario-unverified",
15387
+ "severity": "warning",
15388
+ "reason": "Linked tasks 0674/0680 predate canonical PASS recording for these scenarios; accepted until evidence is recovered or rerun, with two-sided removal when it lands.",
15389
+ "since": "2026-08-26"
15390
+ },
15391
+ {
15392
+ "kind": "feature",
15393
+ "id": "J4",
15394
+ "code": "L4.scenario-unverified",
15395
+ "severity": "warning",
15396
+ "reason": "Linked historical tasks 0374-0378 have no canonical PASS verdicts with MET requirements; accepted until evidence is recovered or rerun, with two-sided removal when it lands.",
15397
+ "since": "2026-08-26"
15398
+ },
15399
+ {
15400
+ "kind": "feature",
15401
+ "id": "K",
15402
+ "code": "L4.scenario-unverified",
15403
+ "severity": "warning",
15404
+ "reason": "Linked historical task 0525 has no canonical PASS verdict with MET requirements; accepted until evidence is recovered or rerun, with two-sided removal when it lands.",
15405
+ "since": "2026-08-26"
15406
+ },
15407
+ {
15408
+ "kind": "task",
15409
+ "id": "0342",
15410
+ "code": "L4.anchor-subject-mismatch",
15411
+ "severity": "error",
15412
+ "reason": "Current source line shifts exposed another closed-task point-window mismatch; preserve the historical citation pending the accepted F91 matcher/corpus migration (ADR-083).",
15413
+ "since": "2026-08-26"
15414
+ },
15415
+ {
15416
+ "kind": "task",
15417
+ "id": "0588",
15418
+ "code": "L4.anchor-subject-mismatch",
15419
+ "severity": "error",
15420
+ "reason": "Task 0685 intentionally removed generated demo specs from the tracked tree, invalidating a historical 0588 point anchor; preserve that evidence pending F91 corpus migration (ADR-083).",
15421
+ "since": "2026-08-26"
15422
+ },
15423
+ {
15424
+ "kind": "task",
15425
+ "id": "0609",
15426
+ "code": "L4.anchor-subject-mismatch",
15427
+ "severity": "error",
15428
+ "reason": "Task 0685 intentionally evolved the agent-wait surface and shifted 0609's historical point anchor; preserve that evidence pending F91 corpus migration (ADR-083).",
15429
+ "since": "2026-08-26"
15430
+ },
15431
+ {
15432
+ "kind": "task",
15433
+ "id": "0631",
15434
+ "code": "L4.anchor-subject-mismatch",
15435
+ "severity": "error",
15436
+ "reason": "The reserved 0685 DDL shifted migration-source line windows and exposed closed-task matcher residue; preserve historical citations pending F91 (ADR-083).",
15437
+ "since": "2026-08-26"
15438
+ },
15439
+ {
15440
+ "kind": "task",
15441
+ "id": "0639",
15442
+ "code": "L4.anchor-subject-mismatch",
15443
+ "severity": "error",
15444
+ "reason": "Current config-source line shifts exposed another closed-task point-window mismatch; preserve the historical citation pending F91 (ADR-083).",
15445
+ "since": "2026-08-26"
15446
+ },
15447
+ {
15448
+ "kind": "task",
15449
+ "id": "0645",
15450
+ "code": "L4.anchor-subject-mismatch",
15451
+ "severity": "error",
15452
+ "reason": "Current web-source line shifts exposed another closed-task point-window mismatch; preserve the historical citation pending F91 (ADR-083).",
15453
+ "since": "2026-08-26"
15454
+ },
15455
+ {
15456
+ "kind": "task",
15457
+ "id": "0655",
15458
+ "code": "L4.anchor-subject-mismatch",
15459
+ "severity": "error",
15460
+ "reason": "Current web-source line shifts exposed another closed-task point-window mismatch; preserve the historical citation pending F91 (ADR-083).",
15461
+ "since": "2026-08-26"
15462
+ },
15463
+ {
15464
+ "kind": "task",
15465
+ "id": "0665",
15466
+ "code": "L4.anchor-subject-mismatch",
15467
+ "severity": "error",
15468
+ "reason": "Current workflow-source line shifts exposed another closed-task point-window mismatch; preserve the historical citation pending F91 (ADR-083).",
15469
+ "since": "2026-08-26"
15470
+ },
15471
+ {
15472
+ "kind": "task",
15473
+ "id": "0666",
15474
+ "code": "L4.anchor-subject-mismatch",
15475
+ "severity": "error",
15476
+ "reason": "Current agent-source line shifts exposed another closed-task point-window mismatch; preserve the historical citation pending F91 (ADR-083).",
15477
+ "since": "2026-08-26"
15478
+ },
15479
+ {
15480
+ "kind": "task",
15481
+ "id": "0667",
15482
+ "code": "L4.anchor-subject-mismatch",
15483
+ "severity": "error",
15484
+ "reason": "Current workflow-source line shifts exposed another closed-task point-window mismatch; preserve the historical citation pending F91 (ADR-083).",
15485
+ "since": "2026-08-26"
15486
+ },
15487
+ {
15488
+ "kind": "task",
15489
+ "id": "0669",
15490
+ "code": "L4.anchor-subject-mismatch",
15491
+ "severity": "error",
15492
+ "reason": "Current history-anatomy source/test line shifts exposed closed-task point-window residue; preserve historical citations pending F91 (ADR-083).",
15493
+ "since": "2026-08-26"
15494
+ },
15495
+ {
15496
+ "kind": "task",
15497
+ "id": "0670",
15498
+ "code": "L4.anchor-subject-mismatch",
15499
+ "severity": "error",
15500
+ "reason": "Current ADR line shifts exposed another closed-task point-window mismatch; preserve the historical citation pending F91 (ADR-083).",
15501
+ "since": "2026-08-26"
15502
+ },
15503
+ {
15504
+ "kind": "task",
15505
+ "id": "0674",
15506
+ "code": "L4.anchor-subject-mismatch",
15507
+ "severity": "error",
15508
+ "reason": "Current history-anatomy source line shifts exposed another closed-task point-window mismatch; preserve the historical citation pending F91 (ADR-083).",
15509
+ "since": "2026-08-26"
15510
+ },
15511
+ {
15512
+ "kind": "task",
15513
+ "id": "0676",
15514
+ "code": "L4.anchor-subject-mismatch",
15515
+ "severity": "error",
15516
+ "reason": "Current history-anatomy source/test line shifts exposed closed-task point-window residue; preserve historical citations pending F91 (ADR-083).",
15517
+ "since": "2026-08-26"
15518
+ },
15519
+ {
15520
+ "kind": "task",
15521
+ "id": "0680",
15522
+ "code": "L4.anchor-subject-mismatch",
15523
+ "severity": "error",
15524
+ "reason": "Current history-anatomy source/test line shifts exposed closed-task point-window residue; preserve historical citations pending F91 (ADR-083).",
15525
+ "since": "2026-08-26"
15526
+ },
15527
+ {
15528
+ "kind": "task",
15529
+ "id": "0685",
15530
+ "code": "L4.missing-feature-id",
15531
+ "severity": "warning",
15532
+ "reason": "Standalone operator-design task completed with a canonical PASS but no parent feature existed; do not invent a post-hoc feature edge solely to silence the advisory.",
15533
+ "since": "2026-08-26"
14982
15534
  }
14983
15535
  ]
14984
15536
  }