@gobing-ai/spur 0.3.60 → 0.3.62
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/config/config.example.yaml +2 -2
- package/config/config.global.yaml +68 -57
- package/config/corpus-baseline.json +505 -57
- package/config/plugin-scripts.json +2 -2
- package/config/rules/boundary/config-loading-ownership.yaml +21 -0
- package/config/workflow-composition-baseline.json +1 -1
- package/config/workflows/history-anatomy.yaml +366 -0
- package/config/workflows/wayfinder-resolution.yaml +4 -6
- package/package.json +1 -1
- package/plugins/README.md +5 -4
- package/plugins/sp/README.md +22 -9
- package/plugins/sp/agents/super-planner.md +1 -1
- package/plugins/sp/commands/dev-find-issue.md +25 -46
- package/plugins/sp/commands/dev-pr-review.md +1 -1
- package/plugins/sp/commands/dev-run.md +22 -3
- package/plugins/sp/commands/dev-wrap.md +2 -2
- package/plugins/sp/commands/dev-wrapall.md +2 -2
- package/plugins/sp/lib/artifact-digest.generated.d.mts +7 -0
- package/plugins/sp/lib/artifact-digest.generated.mjs +48 -0
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/references/roles.md +17 -14
- package/plugins/sp/scripts/history-anatomy-cache.mjs +669 -0
- package/plugins/sp/scripts/history-anatomy-cache.ts +818 -0
- package/plugins/sp/scripts/surface-drift-inventory.ts +51 -17
- package/plugins/sp/scripts/validate-commands.ts +11 -4
- package/plugins/sp/skills/code-verification/SKILL.md +1 -1
- package/plugins/sp/skills/code-verification/references/verdict-schema.md +1 -1
- package/plugins/sp/skills/history-anatomy/SKILL.md +67 -0
- package/plugins/sp/skills/history-anatomy/references/modes.md +82 -0
- package/plugins/sp/skills/history-anatomy/references/operations.md +67 -0
- package/plugins/sp/skills/history-anatomy/references/report-contract.md +133 -0
- package/plugins/sp/skills/issue-finding/SKILL.md +1 -1
- package/plugins/sp/skills/next-router/references/routing-table.md +1 -1
- package/plugins/sp/skills/pr-reviewing/SKILL.md +2 -2
- package/plugins/sp/skills/spec-decomposition/references/decomposition.md +1 -1
- package/plugins/sp/skills/spur-cli/references/init.md +1 -1
- package/plugins/sp/skills/spur-cli/references/tasks/l3-guard-cheatsheet.md +1 -1
- package/plugins/sp/skills/spur-cli/references/workflows/operations.md +1 -1
- package/plugins/sp/skills/spur-cli/references/workflows.md +4 -4
- package/plugins/sp/skills/spur-dev/SKILL.md +4 -4
- package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +4 -4
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +11 -11
- package/plugins/sp/skills/spur-dev/references/done-housekeeping.md +1 -1
- package/plugins/sp/skills/spur-dev/references/execution-batch.md +17 -4
- package/plugins/sp/skills/spur-dev/references/execution-workflow.md +8 -1
- package/plugins/sp/skills/spur-dev/references/feature-link-helper.md +3 -2
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +25 -13
- package/plugins/sp/skills/spur-dev/references/gate-checklists.md +1 -1
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +5 -2
- package/plugins/sp/skills/spur-dev/references/planning-workflow.md +2 -2
- package/schemas/spur-config.schema.json +1 -1
- package/spur.js +1278 -890
- package/web/_astro/BoardApp.Z9jMwI9G.js +1 -0
- package/web/_astro/BoardApp.rkWGVwwK.js +178 -0
- package/web/_astro/{TaskDetail.B0l1uzsB.js → TaskDetail.B7ODt_bA.js} +1 -1
- package/web/_astro/{arc.DPruHC3P.js → arc.C5QRz6AQ.js} +1 -1
- package/web/_astro/{architectureDiagram-3BPJPVTR.CuOqAck6.js → architectureDiagram-3BPJPVTR.CHptn8gZ.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.Cxb7HDIA.js → blockDiagram-GPEHLZMM.b1nEDkDw.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.Dw7wa-0S.js → c4Diagram-AAUBKEIU.BWj8S_Qq.js} +1 -1
- package/web/_astro/channel.BJtn6CGV.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.MECQitzo.js → chunk-2J33WTMH.q0BBuE1n.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.p3ofhIGE.js → chunk-4BX2VUAB.DP2KDkAU.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.BmQGsPZP.js → chunk-55IACEB6.CkCId72p.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.CwrK23OA.js → chunk-727SXJPM.oHWzxMot.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.CUKI_QXp.js → chunk-AQP2D5EJ.DkkgxfMP.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.7AtDgShM.js → chunk-FMBD7UC4.lmFJDvRK.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM.f_YJbTs3.js → chunk-ND2GUHAM.52jt0eHK.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.0q7V3gEg.js → chunk-QZHKN3VN.Cg8KEFoD.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.C_hG3HMK.js → classDiagram-4FO5ZUOK.BuOUhxcD.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.C_hG3HMK.js → classDiagram-v2-Q7XG4LA2.BuOUhxcD.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.vsaaaEMy.js → cose-bilkent-S5V4N54A.BRUU8E_0.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.BN7XFqQ4.js → dagre-BM42HDAG.GDbfFYVV.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.ED6AfryZ.js → diagram-2AECGRRQ.CvIDBeJF.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.Dxllzg8R.js → diagram-5GNKFQAL.DMgJjWOX.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.RuWppieD.js → diagram-KO2AKTUF.njjl-0AP.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.CL32Xn6s.js → diagram-LMA3HP47.CcCqgP8M.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.CUneEhqB.js → diagram-OG6HWLK6.Btqd-YVE.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.DI-92Lec.js → erDiagram-TEJ5UH35.BbhML_Xo.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.69Aqa1FF.js → flowDiagram-I6XJVG4X.CkvsIgY8.js} +1 -1
- package/web/_astro/{ganttDiagram-6RSMTGT7.DdpClZpa.js → ganttDiagram-6RSMTGT7.m8IWD_wW.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.xqWfkvB4.js → gitGraphDiagram-PVQCEYII.5z87HXO-.js} +1 -1
- package/web/_astro/index.nWve6EHS.css +1 -0
- package/web/_astro/{infoDiagram-5YYISTIA.B3G5sfKm.js → infoDiagram-5YYISTIA.Bvyvsd7Q.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.ahVNsoAQ.js → ishikawaDiagram-YF4QCWOH.DdWVYO87.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.PmFHLc-X.js → journeyDiagram-JHISSGLW.C3kOlYH1.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.Co1qOPTd.js → kanban-definition-UN3LZRKU.CfKTUHVC.js} +1 -1
- package/web/_astro/{linear.DoHZ-iRt.js → linear.CMDHnzgX.js} +1 -1
- package/web/_astro/{mermaid.core.DNRElYN2.js → mermaid.core.DN7-WrsP.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.CdfJZidJ.js → mindmap-definition-RKZ34NQL.DcQxLvqG.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.C1A8dby4.js → pieDiagram-4H26LBE5.Nu-Inbw6.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.NmZqjG_c.js → quadrantDiagram-W4KKPZXB.Dck2EChs.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.tY36zYtK.js → requirementDiagram-4Y6WPE33.C--E5XuW.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.rOEGZYjo.js → sankeyDiagram-5OEKKPKP.B_0iRNna.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.Dpnw3S9J.js → sequenceDiagram-3UESZ5HK.PKuKr9mk.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.DGpvQ3Wz.js → stateDiagram-AJRCARHV.ClhGHb-O.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.CbwQdEfu.js → stateDiagram-v2-BHNVJYJU.Bv6BBnvg.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.DAYUpUJT.js → timeline-definition-PNZ67QCA.BZm2ZvAH.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.C7JCCd6-.js → vennDiagram-CIIHVFJN.Dt6yZXry.js} +1 -1
- package/web/_astro/{wardley-L42UT6IY.BGgwOH5_.js → wardley-L42UT6IY.rUs-E00M.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.oIZqzI2l.js → wardleyDiagram-YWT4CUSO.BcWgv4cA.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.DohcJzqm.js → xychartDiagram-2RQKCTM6.DH-M-cX9.js} +1 -1
- package/web/index.html +2 -2
- package/plugins/sp/commands/dev-history-load.md +0 -63
- package/plugins/sp/scripts/history-load.mjs +0 -268
- package/plugins/sp/scripts/history-load.ts +0 -400
- package/web/_astro/BoardApp.BJs3l7O8.js +0 -179
- package/web/_astro/BoardApp.D8InuCYx.js +0 -1
- package/web/_astro/channel.XCf1DcsL.js +0 -1
- package/web/_astro/index.DJl2RAVZ.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",
|
|
@@ -447,6 +423,102 @@
|
|
|
447
423
|
"reason": "Accepted backlog: L4.orphan-scenarios",
|
|
448
424
|
"since": "2026-08-19"
|
|
449
425
|
},
|
|
426
|
+
{
|
|
427
|
+
"kind": "feature",
|
|
428
|
+
"id": "B1",
|
|
429
|
+
"code": "L4.dogfood-missing",
|
|
430
|
+
"severity": "warning",
|
|
431
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
432
|
+
"since": "2026-08-24"
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"kind": "feature",
|
|
436
|
+
"id": "B3",
|
|
437
|
+
"code": "L4.dogfood-missing",
|
|
438
|
+
"severity": "warning",
|
|
439
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
440
|
+
"since": "2026-08-24"
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
"kind": "feature",
|
|
444
|
+
"id": "E5",
|
|
445
|
+
"code": "L4.dogfood-missing",
|
|
446
|
+
"severity": "warning",
|
|
447
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
448
|
+
"since": "2026-08-24"
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
"kind": "feature",
|
|
452
|
+
"id": "F",
|
|
453
|
+
"code": "L4.dogfood-missing",
|
|
454
|
+
"severity": "warning",
|
|
455
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
456
|
+
"since": "2026-08-24"
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"kind": "feature",
|
|
460
|
+
"id": "F31",
|
|
461
|
+
"code": "L4.dogfood-missing",
|
|
462
|
+
"severity": "warning",
|
|
463
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
464
|
+
"since": "2026-08-24"
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
"kind": "feature",
|
|
468
|
+
"id": "F82",
|
|
469
|
+
"code": "L4.dogfood-missing",
|
|
470
|
+
"severity": "warning",
|
|
471
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
472
|
+
"since": "2026-08-24"
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
"kind": "feature",
|
|
476
|
+
"id": "G4",
|
|
477
|
+
"code": "L4.dogfood-missing",
|
|
478
|
+
"severity": "warning",
|
|
479
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
480
|
+
"since": "2026-08-24"
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
"kind": "feature",
|
|
484
|
+
"id": "H11",
|
|
485
|
+
"code": "L4.dogfood-missing",
|
|
486
|
+
"severity": "warning",
|
|
487
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
488
|
+
"since": "2026-08-24"
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
"kind": "feature",
|
|
492
|
+
"id": "I",
|
|
493
|
+
"code": "L4.dogfood-missing",
|
|
494
|
+
"severity": "warning",
|
|
495
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
496
|
+
"since": "2026-08-24"
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
"kind": "feature",
|
|
500
|
+
"id": "I4",
|
|
501
|
+
"code": "L4.dogfood-missing",
|
|
502
|
+
"severity": "warning",
|
|
503
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
504
|
+
"since": "2026-08-24"
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
"kind": "feature",
|
|
508
|
+
"id": "I5",
|
|
509
|
+
"code": "L4.dogfood-missing",
|
|
510
|
+
"severity": "warning",
|
|
511
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
512
|
+
"since": "2026-08-24"
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
"kind": "feature",
|
|
516
|
+
"id": "J",
|
|
517
|
+
"code": "L4.dogfood-missing",
|
|
518
|
+
"severity": "warning",
|
|
519
|
+
"reason": "Feature remains verifying; direct linked tasks touch self-referential workflow infrastructure, but no dogfood report exists. Accepted as pre-A4 corpus debt only; the strict feature completion gate still requires real dogfood evidence.",
|
|
520
|
+
"since": "2026-08-24"
|
|
521
|
+
},
|
|
450
522
|
{
|
|
451
523
|
"kind": "task",
|
|
452
524
|
"id": "0001",
|
|
@@ -5607,14 +5679,6 @@
|
|
|
5607
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.",
|
|
5608
5680
|
"since": "2026-08-18"
|
|
5609
5681
|
},
|
|
5610
|
-
{
|
|
5611
|
-
"kind": "task",
|
|
5612
|
-
"id": "0127",
|
|
5613
|
-
"code": "L4.stale-line-anchor",
|
|
5614
|
-
"severity": "warning",
|
|
5615
|
-
"reason": "Anchor written with an incomplete path; qualification migration (task 0583) owns the mechanical repair — see note § L4.stale-line-anchor.",
|
|
5616
|
-
"since": "2026-08-17"
|
|
5617
|
-
},
|
|
5618
5682
|
{
|
|
5619
5683
|
"kind": "task",
|
|
5620
5684
|
"id": "0128",
|
|
@@ -5630,14 +5694,6 @@
|
|
|
5630
5694
|
"reason": "Done tasks carry unflipped planning checkboxes; flipping post-close rewrites history — remediation is separate work, see note § L3.unchecked-checklist.",
|
|
5631
5695
|
"since": "2026-08-17"
|
|
5632
5696
|
},
|
|
5633
|
-
{
|
|
5634
|
-
"kind": "task",
|
|
5635
|
-
"id": "0128",
|
|
5636
|
-
"code": "L4.stale-line-anchor",
|
|
5637
|
-
"severity": "warning",
|
|
5638
|
-
"reason": "Anchor written with an incomplete path; qualification migration (task 0583) owns the mechanical repair — see note § L4.stale-line-anchor.",
|
|
5639
|
-
"since": "2026-08-17"
|
|
5640
|
-
},
|
|
5641
5697
|
{
|
|
5642
5698
|
"kind": "task",
|
|
5643
5699
|
"id": "0128",
|
|
@@ -12213,14 +12269,6 @@
|
|
|
12213
12269
|
"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).",
|
|
12214
12270
|
"since": "2026-08-18"
|
|
12215
12271
|
},
|
|
12216
|
-
{
|
|
12217
|
-
"kind": "task",
|
|
12218
|
-
"id": "0416",
|
|
12219
|
-
"code": "L4.stale-line-anchor",
|
|
12220
|
-
"severity": "warning",
|
|
12221
|
-
"reason": "Anchor written with an incomplete path; qualification migration (task 0583) owns the mechanical repair — see note § L4.stale-line-anchor.",
|
|
12222
|
-
"since": "2026-08-17"
|
|
12223
|
-
},
|
|
12224
12272
|
{
|
|
12225
12273
|
"kind": "task",
|
|
12226
12274
|
"id": "0416",
|
|
@@ -12469,14 +12517,6 @@
|
|
|
12469
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).",
|
|
12470
12518
|
"since": "2026-08-18"
|
|
12471
12519
|
},
|
|
12472
|
-
{
|
|
12473
|
-
"kind": "task",
|
|
12474
|
-
"id": "0434",
|
|
12475
|
-
"code": "L4.stale-line-anchor",
|
|
12476
|
-
"severity": "warning",
|
|
12477
|
-
"reason": "Anchor written with an incomplete path; qualification migration (task 0583) owns the mechanical repair — see note § L4.stale-line-anchor.",
|
|
12478
|
-
"since": "2026-08-17"
|
|
12479
|
-
},
|
|
12480
12520
|
{
|
|
12481
12521
|
"kind": "task",
|
|
12482
12522
|
"id": "0435",
|
|
@@ -14891,6 +14931,414 @@
|
|
|
14891
14931
|
"severity": "warning",
|
|
14892
14932
|
"reason": "task scenarios sit at finer altitude than feature E5 AC; DD-09 subset rule fires — pre-existing, feature AC not extended",
|
|
14893
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": "0102",
|
|
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": "0384",
|
|
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": "0660",
|
|
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": "0664",
|
|
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": "0542",
|
|
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": "0649",
|
|
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": "0624",
|
|
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": "0561",
|
|
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": "0570",
|
|
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": "0625",
|
|
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": "0632",
|
|
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": "0647",
|
|
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": "0629",
|
|
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": "0648",
|
|
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": "0642",
|
|
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": "0661",
|
|
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": "0638",
|
|
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": "0658",
|
|
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": "0641",
|
|
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": "0628",
|
|
15202
|
+
"code": "L4.anchor-subject-mismatch",
|
|
15203
|
+
"severity": "error",
|
|
15204
|
+
"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.",
|
|
15205
|
+
"since": "2026-08-25"
|
|
15206
|
+
},
|
|
15207
|
+
{
|
|
15208
|
+
"kind": "task",
|
|
15209
|
+
"id": "0662",
|
|
15210
|
+
"code": "L3.ac-empty",
|
|
15211
|
+
"severity": "error",
|
|
15212
|
+
"reason": "Task closed with placeholder-only Acceptance Criteria; authoring AC post-close invents a contract — see note § L3.ac-empty (2026-08-25).",
|
|
15213
|
+
"since": "2026-08-25"
|
|
15214
|
+
},
|
|
15215
|
+
{
|
|
15216
|
+
"kind": "task",
|
|
15217
|
+
"id": "0657",
|
|
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": "0659",
|
|
15226
|
+
"code": "L4.anchor-subject-mismatch",
|
|
15227
|
+
"severity": "error",
|
|
15228
|
+
"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.",
|
|
15229
|
+
"since": "2026-08-25"
|
|
15230
|
+
},
|
|
15231
|
+
{
|
|
15232
|
+
"kind": "task",
|
|
15233
|
+
"id": "0420",
|
|
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": "0569",
|
|
15242
|
+
"code": "L4.stale-line-anchor",
|
|
15243
|
+
"severity": "warning",
|
|
15244
|
+
"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.",
|
|
15245
|
+
"since": "2026-08-25"
|
|
15246
|
+
},
|
|
15247
|
+
{
|
|
15248
|
+
"kind": "task",
|
|
15249
|
+
"id": "0664",
|
|
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": "0663",
|
|
15258
|
+
"code": "L3.unchecked-checklist",
|
|
15259
|
+
"severity": "warning",
|
|
15260
|
+
"reason": "Closed task carries planning checkboxes never flipped; flipping post-close rewrites history — see note § L3.unchecked-checklist (2026-08-25).",
|
|
15261
|
+
"since": "2026-08-25"
|
|
15262
|
+
},
|
|
15263
|
+
{
|
|
15264
|
+
"kind": "task",
|
|
15265
|
+
"id": "0556",
|
|
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": "0570",
|
|
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": "0661",
|
|
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": "0549",
|
|
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": "0658",
|
|
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": "0567",
|
|
15306
|
+
"code": "L4.stale-line-anchor",
|
|
15307
|
+
"severity": "warning",
|
|
15308
|
+
"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.",
|
|
15309
|
+
"since": "2026-08-25"
|
|
15310
|
+
},
|
|
15311
|
+
{
|
|
15312
|
+
"kind": "task",
|
|
15313
|
+
"id": "0668",
|
|
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": "0662",
|
|
15322
|
+
"code": "L3.unchecked-checklist",
|
|
15323
|
+
"severity": "warning",
|
|
15324
|
+
"reason": "Closed task carries planning checkboxes never flipped; flipping post-close rewrites history — see note § L3.unchecked-checklist (2026-08-25).",
|
|
15325
|
+
"since": "2026-08-25"
|
|
15326
|
+
},
|
|
15327
|
+
{
|
|
15328
|
+
"kind": "task",
|
|
15329
|
+
"id": "0657",
|
|
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": "task",
|
|
15337
|
+
"id": "0659",
|
|
15338
|
+
"code": "L4.stale-line-anchor",
|
|
15339
|
+
"severity": "warning",
|
|
15340
|
+
"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.",
|
|
15341
|
+
"since": "2026-08-25"
|
|
14894
15342
|
}
|
|
14895
15343
|
]
|
|
14896
15344
|
}
|