@codedrifters/configulator 0.0.235 → 0.0.236

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/lib/index.js CHANGED
@@ -10588,7 +10588,7 @@ var requirementsWriterBundle = {
10588
10588
  // src/agent/bundles/requirements-reviewer.ts
10589
10589
  var requirementsReviewerSubAgent = {
10590
10590
  name: "requirements-reviewer",
10591
- description: "Audits and deprecates existing requirement documents (BR, FR, NFR, TR, ADR, SEC, DR, INT, OPS, UX, MT). In `req:review` mode, runs the 11-check audit (structural compliance, categorization, traceability, cross-reference integrity, sequence integrity, content quality, registry sync, decision-authority compliance, tier classification, cross-referencing conventions) and produces a report grouped by Critical / Warning / Info. In `req:deprecate` mode, transitions target documents to `Deprecated` or `Superseded`, updates the category index row, and files `req:write` follow-ups for every back-reference so the writer can rewrite them. One phase per session.",
10591
+ description: "Audits and deprecates existing requirement documents (BR, FR, NFR, TR, ADR, SEC, DR, INT, OPS, UX, MT). In `req:review` mode, runs the 12-check audit (structural compliance, categorization, traceability, cross-reference integrity, sequence integrity, content quality, registry sync, decision-authority compliance, tier classification, cross-referencing conventions, stale `Proposed` ADR/TR decisions) and produces a report grouped by Critical / Warning / Info (plus a dedicated Stale decisions section). In `req:deprecate` mode, transitions target documents to `Deprecated` or `Superseded`, updates the category index row, and files `req:write` follow-ups for every back-reference so the writer can rewrite them. One phase per session.",
10592
10592
  model: AGENT_MODEL.POWERFUL,
10593
10593
  maxTurns: 80,
10594
10594
  platforms: { cursor: { exclude: true } },
@@ -10715,6 +10715,7 @@ var requirementsReviewerSubAgent = {
10715
10715
  "| `<REVIEW_REPORTS_ROOT>` | Where review reports are written | `docs/research/reviews/` |",
10716
10716
  `| \`<TEMPLATES_ROOT>\` | Where the writer bundle ships category templates (read-only for this agent) | \`${REQUIREMENTS_WRITER_PATHS.templatesRoot}\` |`,
10717
10717
  `| \`<STANDARDS_REF>\` | Standards & frameworks reference shipped by the writer bundle | \`${REQUIREMENTS_WRITER_PATHS.standardsRef}\` |`,
10718
+ "| `<STALE_PROPOSED_THRESHOLD_DAYS>` | Age (in days) after which a `Proposed` ADR/TR is flagged as a stale decision by Check 12 | `14` |",
10718
10719
  "",
10719
10720
  "If `docs/project-context.md` specifies a different requirements",
10720
10721
  "tree, prefer that. Otherwise fall back to the defaults above.",
@@ -10764,7 +10765,7 @@ var requirementsReviewerSubAgent = {
10764
10765
  "",
10765
10766
  "## Review Checklist",
10766
10767
  "",
10767
- "Apply the following 11 checks. Each check produces zero or more",
10768
+ "Apply the following 12 checks. Each check produces zero or more",
10768
10769
  "findings. Findings are graded Critical / Warning / Info using the",
10769
10770
  "severity ladder in the next section.",
10770
10771
  "",
@@ -11009,6 +11010,60 @@ var requirementsReviewerSubAgent = {
11009
11010
  " reverse-link structure (e.g., a `referencedIn.meetings[]`",
11010
11011
  " frontmatter block) and that structure is in active use.",
11011
11012
  "",
11013
+ "### 12. Stale Proposed Decisions",
11014
+ "",
11015
+ "ADR and TR documents ship as `Status: Proposed` because they",
11016
+ "encode architectural or technology decisions that require explicit",
11017
+ "human acceptance (see Check 9 and the `requirements-writer`",
11018
+ "decision-authority rules). Once `Proposed`, there is no automatic",
11019
+ "signal that surfaces long-`Proposed` documents for decision \u2014 the",
11020
+ "backlog silently accumulates. Check 12 surfaces them.",
11021
+ "",
11022
+ "For every document under `<REQUIREMENTS_ROOT>` whose category is",
11023
+ "**ADR** or **TR** and whose `Status` is `Proposed`:",
11024
+ "",
11025
+ "- Determine the document's last-touched date. Prefer the YAML",
11026
+ " frontmatter `updated` field when present. If frontmatter does",
11027
+ " not carry an `updated` field, fall back to the most recent entry",
11028
+ " in the `## Revision History` section. If neither exists, fall",
11029
+ " back to `git log -1 --format=%cI -- <path>` for the file.",
11030
+ "- Compare that date to today. If the document has carried",
11031
+ " `Status: Proposed` for longer than",
11032
+ " `<STALE_PROPOSED_THRESHOLD_DAYS>` days (default 14), record a",
11033
+ " **Warning** finding that names the document, the age in days,",
11034
+ " the threshold, and the source used for the last-touched date.",
11035
+ "- Do **not** flag `Proposed` ADRs or TRs that are below the",
11036
+ " threshold \u2014 they are in active decision and not stale.",
11037
+ "- Do **not** auto-transition any status. Deprecation and",
11038
+ " acceptance both remain human decisions: Check 12 only surfaces",
11039
+ " the backlog for the human running `/review-requirements` (or",
11040
+ " for the follow-up issue it files) to act on.",
11041
+ "",
11042
+ "The threshold placeholder `<STALE_PROPOSED_THRESHOLD_DAYS>` is",
11043
+ "configurable \u2014 override it in the `req:review` issue body, in",
11044
+ "`docs/project-context.md`, or via `agentConfig.rules`. The default",
11045
+ "of 14 days sits above the orchestrator's existing 72h / 168h stale",
11046
+ "thresholds for `status:in-progress` / `status:blocked` and fits",
11047
+ "the pace at which architectural decisions are typically ratified.",
11048
+ "",
11049
+ "Findings from Check 12 describe a decision the human must make \u2014",
11050
+ "not an edit to the requirement document itself. Follow-up routing",
11051
+ "is therefore different from Checks 3 and 4:",
11052
+ "",
11053
+ "- Surface every stale `Proposed` ADR/TR in a distinct",
11054
+ " **Stale decisions** section in the review report (see Reporting",
11055
+ " Format below), separate from Critical / Warning / Info.",
11056
+ "- File **one** follow-up issue covering the stale decisions found",
11057
+ " in this review. Title:",
11058
+ " `req(review): decide on stale Proposed ADR/TR documents`.",
11059
+ " Labels: `type:requirement`, `req:review`, `priority:medium`,",
11060
+ " `status:needs-attention`. Body must list each stale document",
11061
+ " path, its age in days, and a link back to the review report.",
11062
+ " Do **not** file one follow-up per document \u2014 humans triage the",
11063
+ " backlog in a single pass.",
11064
+ "- When no stale documents are found, omit the Stale decisions",
11065
+ " section entirely and do not file the follow-up issue.",
11066
+ "",
11012
11067
  "---",
11013
11068
  "",
11014
11069
  "## Severity Ladder",
@@ -11044,6 +11099,13 @@ var requirementsReviewerSubAgent = {
11044
11099
  "- Missing cross-tier traceability; missing Implementor / Customer",
11045
11100
  " fields on Customer Workflow / Consumer Application requirements",
11046
11101
  " when the project tracks those fields",
11102
+ "- Stale `Proposed` ADR/TR documents that have carried the",
11103
+ " `Proposed` status longer than",
11104
+ " `<STALE_PROPOSED_THRESHOLD_DAYS>` (default 14) days. The",
11105
+ " underlying document is valid; only the absence of human",
11106
+ " decision is stale, so these are reported in the report's",
11107
+ " dedicated **Stale decisions** section rather than inline in",
11108
+ " the Warning list.",
11047
11109
  "",
11048
11110
  "### Info (Consider)",
11049
11111
  "",
@@ -11087,6 +11149,20 @@ var requirementsReviewerSubAgent = {
11087
11149
  "1. **[<file path>] <short title>** `Info`",
11088
11150
  " ...",
11089
11151
  "",
11152
+ "## Stale decisions",
11153
+ "",
11154
+ "*Omit this section entirely when Check 12 found no stale",
11155
+ "`Proposed` ADR/TR documents.*",
11156
+ "",
11157
+ "| Document | Age (days) | Threshold | Last-touched source |",
11158
+ "|----------|------------|-----------|---------------------|",
11159
+ "| `<file path>` | N | <STALE_PROPOSED_THRESHOLD_DAYS> | frontmatter `updated` / revision history / git log |",
11160
+ "",
11161
+ "Human decision required for each row. A single follow-up",
11162
+ "`req:review` issue (labels `type:requirement`, `req:review`,",
11163
+ "`priority:medium`, `status:needs-attention`) is filed to",
11164
+ "track triage; see Check 12 for the exact follow-up contract.",
11165
+ "",
11090
11166
  "## Review Summary",
11091
11167
  "",
11092
11168
  "| Severity | Count |",
@@ -11094,6 +11170,7 @@ var requirementsReviewerSubAgent = {
11094
11170
  "| Critical | N |",
11095
11171
  "| Warning | N |",
11096
11172
  "| Info | N |",
11173
+ "| Stale decisions | N |",
11097
11174
  "",
11098
11175
  "**Categories reviewed:** [list]",
11099
11176
  "**Documents reviewed:** N",
@@ -11155,7 +11232,7 @@ var requirementsReviewerSubAgent = {
11155
11232
  "1. Read scope from the `req:review` issue.",
11156
11233
  "2. Read the matching templates from `<TEMPLATES_ROOT>` for every",
11157
11234
  " category in scope.",
11158
- "3. Run the 11 checks. For audits >10 documents, write the",
11235
+ "3. Run the 12 checks. For audits >10 documents, write the",
11159
11236
  " verification script to disk first and run it.",
11160
11237
  "4. Write the report to",
11161
11238
  " `<REVIEW_REPORTS_ROOT>/review-<scope>-YYYY-MM-DD.md`.",
@@ -11208,6 +11285,28 @@ var requirementsReviewerSubAgent = {
11208
11285
  "- Adds `status:ready` (or `status:blocked` when the finding",
11209
11286
  " declares a `Depends on: #N` on another open issue)",
11210
11287
  "",
11288
+ "**Check 12 exception \u2014 stale `Proposed` ADR/TR triage.** Check 12",
11289
+ "findings are the one case where follow-up flows through a new",
11290
+ "`req:review` issue rather than `req:write` / `req:trace` /",
11291
+ "`req:scan`. The finding is a decision a human must make, not an",
11292
+ "edit to a requirement document, so:",
11293
+ "",
11294
+ "- File **one** aggregated follow-up (not one per document). The",
11295
+ " title is",
11296
+ " `req(review): decide on stale Proposed ADR/TR documents`.",
11297
+ "- Labels: `type:requirement`, `req:review`, `priority:medium`,",
11298
+ " `status:needs-attention`.",
11299
+ "- Body lists every stale document surfaced in this review with",
11300
+ " its path, age in days, and the threshold used, and links back",
11301
+ " to the Stale decisions section of the review report.",
11302
+ "- This is the **only** case in which the reviewer opens a",
11303
+ " `req:review` issue \u2014 it is explicitly not self-referential",
11304
+ " because the new issue triages decisions rather than triggering",
11305
+ " another review.",
11306
+ "- The `req:write` follow-up schema below does **not** apply to",
11307
+ " this Check 12 issue; the schema governs `req:write` payloads,",
11308
+ " and this follow-up is a `req:review` triage item.",
11309
+ "",
11211
11310
  "### `req:write` follow-up schema",
11212
11311
  "",
11213
11312
  "Because this bundle is the second-largest producer of `req:write`",
@@ -11258,7 +11357,9 @@ var requirementsReviewerSubAgent = {
11258
11357
  "",
11259
11358
  "**Do NOT create:**",
11260
11359
  "",
11261
- "- `req:review` issues \u2014 that would be self-referential",
11360
+ "- `req:review` issues for any reason other than the Check 12",
11361
+ " stale-decisions triage documented above \u2014 that would be",
11362
+ " self-referential",
11262
11363
  "- `bcm:*`, `people:*`, `company:*`, `software:*`, `research:*`,",
11263
11364
  " or `industry:*` issues \u2014 those belong to their respective",
11264
11365
  " bundles. If the review surfaces work for one of those bundles,",
@@ -11539,7 +11640,7 @@ var requirementsReviewerSubAgent = {
11539
11640
  };
11540
11641
  var reviewRequirementsSkill = {
11541
11642
  name: "review-requirements",
11542
- description: "Audit existing requirement documents (BR / FR / NFR / TR / ADR / SEC / DR / INT / OPS / UX / MT) for structural compliance, categorization, traceability, cross-reference integrity, sequence integrity, content quality, registry sync, decision-authority compliance, tier classification, and cross-referencing conventions. Supports four scopes (full audit, category, single document, targeted check) and dispatches the requirements-reviewer agent. Audits documents \u2014 never writes them. Soft dependency: expects requirement templates at `" + REQUIREMENTS_WRITER_PATHS.templatesRoot + "`, shipped by the requirements-writer bundle.",
11643
+ description: "Audit existing requirement documents (BR / FR / NFR / TR / ADR / SEC / DR / INT / OPS / UX / MT) for structural compliance, categorization, traceability, cross-reference integrity, sequence integrity, content quality, registry sync, decision-authority compliance, tier classification, cross-referencing conventions, and stale `Proposed` ADR/TR decisions. Supports four scopes (full audit, category, single document, targeted check) and dispatches the requirements-reviewer agent. Audits documents \u2014 never writes them. Soft dependency: expects requirement templates at `" + REQUIREMENTS_WRITER_PATHS.templatesRoot + "`, shipped by the requirements-writer bundle.",
11543
11644
  disableModelInvocation: true,
11544
11645
  userInvocable: true,
11545
11646
  context: "fork",
@@ -11571,9 +11672,10 @@ var reviewRequirementsSkill = {
11571
11672
  "- `category:<slug>` \u2014 audit one category directory (e.g.,",
11572
11673
  " `category:functional` audits every FR)",
11573
11674
  "- `doc:<path>` \u2014 audit one specific requirement file",
11574
- "- `check:<n>[,<n>...]` \u2014 run one or more checks (1\u201311) across the",
11675
+ "- `check:<n>[,<n>...]` \u2014 run one or more checks (1\u201312) across the",
11575
11676
  " documents in scope (e.g., `check:4` runs cross-reference",
11576
- " integrity only)",
11677
+ " integrity only, `check:12` runs the stale-proposed-decision",
11678
+ " audit only)",
11577
11679
  "",
11578
11680
  "Optional extensions in the issue body:",
11579
11681
  "",
@@ -11581,6 +11683,9 @@ var reviewRequirementsSkill = {
11581
11683
  "- `requirements-root: <path>` \u2014 override `<REQUIREMENTS_ROOT>`",
11582
11684
  "- `targets: <glob>` \u2014 restrict the document set with a glob",
11583
11685
  " pattern relative to `<REQUIREMENTS_ROOT>`",
11686
+ "- `stale-proposed-threshold-days: <n>` \u2014 override the default",
11687
+ " 14-day threshold used by Check 12 (stale `Proposed` ADR/TR",
11688
+ " decisions) for this review",
11584
11689
  "",
11585
11690
  "## Default Paths",
11586
11691
  "",
@@ -11599,10 +11704,12 @@ var reviewRequirementsSkill = {
11599
11704
  " scope, the requirements root (or accept the default), and the",
11600
11705
  " output path.",
11601
11706
  "2. Execute the review phase of the requirements-reviewer agent.",
11602
- "3. The agent runs the 11-check audit, writes a structured report",
11603
- " grouped by Critical / Warning / Info, files follow-up issues",
11604
- " for actionable findings, and comments on the `req:review`",
11605
- " issue with the summary.",
11707
+ "3. The agent runs the 12-check audit, writes a structured report",
11708
+ " grouped by Critical / Warning / Info (plus a separate",
11709
+ " **Stale decisions** section when Check 12 surfaces stale",
11710
+ " `Proposed` ADR/TR documents), files follow-up issues for",
11711
+ " actionable findings, and comments on the `req:review` issue",
11712
+ " with the summary.",
11606
11713
  "",
11607
11714
  "## Audits >10 Documents",
11608
11715
  "",
@@ -11622,6 +11729,11 @@ var reviewRequirementsSkill = {
11622
11729
  "- Follow-up GitHub issues for every Critical and Warning finding,",
11623
11730
  " carrying the appropriate phase label (`req:write`, `req:trace`,",
11624
11731
  " or `req:scan`) for the downstream agent that should act",
11732
+ "- An aggregated `req:review` follow-up issue labeled",
11733
+ " `status:needs-attention` when Check 12 surfaces stale `Proposed`",
11734
+ " ADR/TR documents (one issue per review, not one per document);",
11735
+ " the review report also includes a dedicated **Stale decisions**",
11736
+ " section in that case",
11625
11737
  "- A summary comment on the originating `req:review` issue"
11626
11738
  ].join("\n")
11627
11739
  };
@@ -11729,7 +11841,7 @@ var deprecateRequirementSkill = {
11729
11841
  };
11730
11842
  var requirementsReviewerBundle = {
11731
11843
  name: "requirements-reviewer",
11732
- description: "Requirements reviewer agent bundle. Audits existing requirement documents (BR, FR, NFR, TR, ADR, SEC, DR, INT, OPS, UX, MT) via the 11-check review phase, and transitions requirements to `Deprecated` or `Superseded` via the deprecation phase (narrow writes to Status, Revision History, Superseded-by, and category index row, with `req:write` follow-ups for every back-reference). Reads templates from the requirements-writer bundle's reference directory; ships no templates of its own.",
11844
+ description: "Requirements reviewer agent bundle. Audits existing requirement documents (BR, FR, NFR, TR, ADR, SEC, DR, INT, OPS, UX, MT) via the 12-check review phase (including Check 12: stale `Proposed` ADR/TR decisions), and transitions requirements to `Deprecated` or `Superseded` via the deprecation phase (narrow writes to Status, Revision History, Superseded-by, and category index row, with `req:write` follow-ups for every back-reference). Reads templates from the requirements-writer bundle's reference directory; ships no templates of its own.",
11733
11845
  appliesWhen: () => true,
11734
11846
  rules: [
11735
11847
  {
@@ -11754,14 +11866,26 @@ var requirementsReviewerBundle = {
11754
11866
  "Use `/review-requirements <scope>` to audit existing requirement",
11755
11867
  "documents. Four scopes are supported: `full` (every document),",
11756
11868
  "`category:<slug>` (one category directory), `doc:<path>` (one",
11757
- "specific document), and `check:<n>` (one or more of the 11",
11869
+ "specific document), and `check:<n>` (one or more of the 12",
11758
11870
  "checks across the documents in scope).",
11759
11871
  "",
11872
+ "Check 12 flags ADR and TR documents that have carried",
11873
+ "`Status: Proposed` longer than",
11874
+ "`<STALE_PROPOSED_THRESHOLD_DAYS>` days (default 14, configurable",
11875
+ "via the `req:review` issue body, `docs/project-context.md`, or",
11876
+ "`agentConfig.rules`). Stale decisions are reported in a separate",
11877
+ "**Stale decisions** section of the review report and trigger one",
11878
+ "aggregated `req:review` follow-up issue labeled",
11879
+ "`status:needs-attention` so a human can triage the backlog. The",
11880
+ "reviewer never auto-transitions status \u2014 acceptance and",
11881
+ "deprecation both remain human decisions.",
11882
+ "",
11760
11883
  "The review phase produces **review reports and follow-up issues",
11761
11884
  "only** \u2014 it never edits requirement documents, capability",
11762
11885
  "models, or research notes. It files follow-up issues with the",
11763
- "appropriate phase label (`req:write`, `req:trace`, or",
11764
- "`req:scan`) for the downstream agent to pick up.",
11886
+ "appropriate phase label (`req:write`, `req:trace`, `req:scan`,",
11887
+ "or \u2014 only for Check 12 stale-decision triage \u2014 `req:review`)",
11888
+ "for the downstream agent or human to pick up.",
11765
11889
  "",
11766
11890
  "For audits covering more than 10 documents, the reviewer writes",
11767
11891
  "a read-only Python verification script alongside the report and",