@codedrifters/configulator 0.0.263 → 0.0.264

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.mjs CHANGED
@@ -9333,7 +9333,7 @@ var REQ_WRITE_ISSUE_SCHEMA_SECTION = [
9333
9333
  // src/agent/bundles/requirements-analyst.ts
9334
9334
  var requirementsAnalystSubAgent = {
9335
9335
  name: "requirements-analyst",
9336
- description: "Discovers requirement gaps from BCM model docs, competitive analysis, product docs, and meeting extracts. Produces scan reports and proposals for the downstream requirements-writer agent. Runs through a 3-phase pipeline (scan \u2192 draft \u2192 trace), one phase per session, tracked by req:* GitHub issue labels.",
9336
+ description: "Discovers requirement gaps from BCM model docs, competitive analysis, product docs, and meeting extracts. Produces scan reports, proposals, and req:write issues for the downstream requirements-writer agent. Runs through a 2-phase pipeline (scan \u2192 draft-trace), one phase per session, tracked by req:* GitHub issue labels.",
9337
9337
  model: AGENT_MODEL.POWERFUL,
9338
9338
  maxTurns: 80,
9339
9339
  platforms: { cursor: { exclude: true } },
@@ -9374,35 +9374,39 @@ var requirementsAnalystSubAgent = {
9374
9374
  "",
9375
9375
  "## State Machine Overview",
9376
9376
  "",
9377
- "Requirements synthesis flows through **3 phases**:",
9377
+ "Requirements synthesis flows through **2 phases**:",
9378
9378
  "",
9379
9379
  "```",
9380
- "\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510",
9381
- "\u2502 1. SCAN \u2502\u2500\u2500\u2500\u2500\u25B6\u2502 2. DRAFT \u2502\u2500\u2500\u2500\u2500\u25B6\u2502 3. TRACE \u2502",
9382
- "\u2502 Read docs, \u2502 \u2502 Write gap \u2502 \u2502 Create GH \u2502",
9383
- "\u2502 identify \u2502 \u2502 report with \u2502 \u2502 issues and \u2502",
9384
- "\u2502 gaps, check \u2502 \u2502 requirement \u2502 \u2502 update src \u2502",
9385
- "\u2502 for dupes \u2502 \u2502 proposals \u2502 \u2502 docs with \u2502",
9386
- "\u2502 \u2502 \u2502 \u2502 \u2502 traceability\u2502",
9387
- "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518",
9380
+ "\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510",
9381
+ "\u2502 1. SCAN \u2502\u2500\u2500\u2500\u2500\u25B6\u2502 2. DRAFT-TRACE \u2502",
9382
+ "\u2502 Read docs, \u2502 \u2502 Write proposals,\u2502",
9383
+ "\u2502 identify \u2502 \u2502 create req:write\u2502",
9384
+ "\u2502 gaps, check \u2502 \u2502 issues, update \u2502",
9385
+ "\u2502 for dupes \u2502 \u2502 source docs \u2502",
9386
+ "\u2502 \u2502 \u2502 with traceability\u2502",
9387
+ "\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518",
9388
9388
  "```",
9389
9389
  "",
9390
+ "This pipeline matches the `scan \u2192 draft-trace \u2192 write` pattern",
9391
+ "used by the sibling openhi project. Draft and Trace were previously",
9392
+ "separate phases; they were collapsed because the proposals file Draft",
9393
+ "wrote was only ever consumed by Trace (no human review, no async work",
9394
+ "between the two), so the phase boundary added latency without value.",
9395
+ "See ADR-009 for the full reasoning.",
9396
+ "",
9390
9397
  "**Issue labels encode the phase:**",
9391
9398
  "",
9392
9399
  "| Label | Phase | Session work |",
9393
9400
  "|-------|-------|-------------|",
9394
9401
  "| `req:scan` | 1. Scan | Read source docs, identify potential requirement gaps, check against existing requirements and open issues, write deduplicated scan report |",
9395
- "| `req:draft` | 2. Draft | Write gap report with proposed requirements |",
9396
- "| `req:trace` | 3. Trace | Create GitHub issues for each proposed requirement and update source documents with traceability notes |",
9402
+ "| `req:draft-trace` | 2. Draft & Trace | Write proposals, create `req:write` GitHub issues for each proposal, and update source documents with traceability notes \u2014 all in a single session |",
9397
9403
  "",
9398
9404
  "All issues also carry `type:requirement` and a `status:*` label.",
9399
9405
  "",
9400
- "**Issue count per scan cycle:** 1 scan + 1 draft + 1 trace = **3 sessions**.",
9406
+ "**Issue count per scan cycle:** 1 scan + 1 draft-trace = **2 sessions**.",
9401
9407
  "",
9402
9408
  "**Shortened paths:**",
9403
- "- No gaps found after scan \u2192 skip draft and trace \u2192 **1 session**",
9404
- "- No source docs need traceability updates \u2192 still **3 sessions** (trace",
9405
- " handles both issue creation and doc updates)",
9409
+ "- No gaps found after scan \u2192 skip draft-trace \u2192 **1 session**",
9406
9410
  "",
9407
9411
  "---",
9408
9412
  "",
@@ -9431,7 +9435,7 @@ var requirementsAnalystSubAgent = {
9431
9435
  "Run this loop exactly once per session. Never start a second issue.",
9432
9436
  "",
9433
9437
  "1. Claim one open `type:requirement` issue using phase priority:",
9434
- " `req:scan` > `req:draft` > `req:trace`.",
9438
+ " `req:scan` > `req:draft-trace`.",
9435
9439
  "2. Transition `status:ready` \u2192 `status:in-progress` and create the branch",
9436
9440
  " per your project's branch-naming convention.",
9437
9441
  "3. Execute the phase handler that matches the issue's `req:*` label.",
@@ -9532,7 +9536,7 @@ var requirementsAnalystSubAgent = {
9532
9536
  " ```",
9533
9537
  "",
9534
9538
  "7. **Create downstream issues based on findings:**",
9535
- " - If any new gaps were identified \u2192 create `req:draft` issue",
9539
+ " - If any new gaps were identified \u2192 create `req:draft-trace` issue",
9536
9540
  " (blocked on this issue via `Depends on: #N`).",
9537
9541
  " - If **no gaps** were found \u2192 stop (no further phases needed). Comment",
9538
9542
  " on the issue noting that no gaps were identified, and proceed directly",
@@ -9543,12 +9547,54 @@ var requirementsAnalystSubAgent = {
9543
9547
  "",
9544
9548
  "---",
9545
9549
  "",
9546
- "## Phase 2: Draft (`req:draft`)",
9550
+ "## Phase 2: Draft & Trace (`req:draft-trace`)",
9551
+ "",
9552
+ "**Goal:** Expand each identified gap into a requirement proposal, create",
9553
+ "a `req:write` GitHub issue for each proposal so the downstream",
9554
+ "`requirements-writer` bundle picks it up, and backfill source-document",
9555
+ "traceability notes \u2014 all in a single session.",
9556
+ "",
9557
+ "**Budget:** No web searches. Reading + writing proposals + issue creation",
9558
+ "+ minor traceability edits to source documents.",
9559
+ "",
9560
+ "Draft and Trace were previously separate phases. They were collapsed",
9561
+ "because the proposals file written by Draft was only ever consumed by",
9562
+ "Trace \u2014 no human review, no async work, no CI validation sat between",
9563
+ "them. See ADR-009 for the decision record.",
9564
+ "",
9565
+ "### `req:write` issue schema",
9566
+ "",
9567
+ "The `req:write` issues this phase creates are picked up by the",
9568
+ "downstream `requirements-writer` agent, which parses a strict",
9569
+ "schema on intake. The authoritative schema is defined in the",
9570
+ "`requirements-writer` sub-agent prompt under **The `req:write`",
9571
+ "Issue Schema** \u2014 every `req:write` issue this phase opens must",
9572
+ "conform. The same schema is embedded in the",
9573
+ "`requirements-reviewer` follow-up generator so the three",
9574
+ "producers never drift apart.",
9575
+ "",
9576
+ ...REQ_WRITE_ISSUE_SCHEMA_SECTION,
9577
+ "",
9578
+ "**Deriving the three required fields from the proposal.** For",
9579
+ "every `req:write` issue this phase opens, the three fields come",
9580
+ "directly from the proposal entry written earlier in the same",
9581
+ "session:",
9547
9582
  "",
9548
- "**Goal:** Expand each identified gap into a requirement proposal with enough",
9549
- "detail for the requirements-writer to produce a full document.",
9583
+ "- **Category** \u2014 the proposal's `**Category:**` line.",
9584
+ "- **Tier** \u2014 the proposal's `**Tier:**` line.",
9585
+ "- **Output Path** \u2014",
9586
+ " `<REQUIREMENTS_ROOT>/<category-dir>/<PREFIX>-<NNN>-<slug>.md`,",
9587
+ " using the sequence number determined in the proposal step below.",
9550
9588
  "",
9551
- "**Budget:** No web searches. Reading + writing.",
9589
+ "**Validation step \u2014 required before opening the issue.** Before",
9590
+ "calling `gh issue create`, verify all three required fields are",
9591
+ "populated and internally consistent (Category matches title",
9592
+ "prefix, Tier matches `tier:*` label, Output Path filename starts",
9593
+ "with the Category prefix). If any field cannot be derived, open",
9594
+ "the issue with `status:needs-attention` (not `status:ready`) and",
9595
+ "include a `Missing: <field> \u2014 <one-line reason>` line so a human",
9596
+ "triaging the issue only has to supply the remaining value(s)",
9597
+ "before flipping the label to `status:ready`.",
9552
9598
  "",
9553
9599
  "### Steps",
9554
9600
  "",
@@ -9599,61 +9645,7 @@ var requirementsAnalystSubAgent = {
9599
9645
  " directory under `<REQUIREMENTS_ROOT>/<category>/` to find the next",
9600
9646
  " available `NNN` for each proposed requirement.",
9601
9647
  "",
9602
- "5. **Create the `req:trace` issue** blocked on this draft issue.",
9603
- "",
9604
- "6. **Commit and push.**",
9605
- "",
9606
- "---",
9607
- "",
9608
- "## Phase 3: Trace (`req:trace`)",
9609
- "",
9610
- "**Goal:** Create GitHub issues for each proposed requirement and update",
9611
- "source documents with traceability notes indicating that requirement issues",
9612
- "were created.",
9613
- "",
9614
- "**Budget:** No web searches. Issue creation + minor edits to source",
9615
- "documents.",
9616
- "",
9617
- "### `req:write` issue schema",
9618
- "",
9619
- "The `req:write` issues this phase creates are picked up by the",
9620
- "downstream `requirements-writer` agent, which parses a strict",
9621
- "schema on intake. The authoritative schema is defined in the",
9622
- "`requirements-writer` sub-agent prompt under **The `req:write`",
9623
- "Issue Schema** \u2014 every `req:write` issue this phase opens must",
9624
- "conform. The same schema is embedded in the",
9625
- "`requirements-reviewer` follow-up generator so the three",
9626
- "producers never drift apart.",
9627
- "",
9628
- ...REQ_WRITE_ISSUE_SCHEMA_SECTION,
9629
- "",
9630
- "**Deriving the three required fields from the proposal.** For",
9631
- "every `req:write` issue this phase opens, the three fields come",
9632
- "directly from the Phase 2 proposal entry:",
9633
- "",
9634
- "- **Category** \u2014 the proposal's `**Category:**` line.",
9635
- "- **Tier** \u2014 the proposal's `**Tier:**` line (added in Phase 2).",
9636
- " If the proposal omitted the Tier line (older proposals may),",
9637
- " route the issue through `Missing:` rather than guessing.",
9638
- "- **Output Path** \u2014",
9639
- " `<REQUIREMENTS_ROOT>/<category-dir>/<PREFIX>-<NNN>-<slug>.md`,",
9640
- " using the sequence number determined in Phase 2 step 4.",
9641
- "",
9642
- "**Validation step \u2014 required before opening the issue.** Before",
9643
- "calling `gh issue create`, verify all three required fields are",
9644
- "populated and internally consistent (Category matches title",
9645
- "prefix, Tier matches `tier:*` label, Output Path filename starts",
9646
- "with the Category prefix). If any field cannot be derived, open",
9647
- "the issue with `status:needs-attention` (not `status:ready`) and",
9648
- "include a `Missing: <field> \u2014 <one-line reason>` line so a human",
9649
- "triaging the issue only has to supply the remaining value(s)",
9650
- "before flipping the label to `status:ready`.",
9651
- "",
9652
- "### Steps",
9653
- "",
9654
- "1. **Read the proposals** from Phase 2.",
9655
- "",
9656
- "2. **Create requirement issues.** For each proposal:",
9648
+ "5. **Create requirement issues.** For each proposal:",
9657
9649
  "",
9658
9650
  " All `type:requirement` issues default to `priority:medium` (override",
9659
9651
  " only if the proposal's priority was explicitly High or Low). Each",
@@ -9698,7 +9690,7 @@ var requirementsAnalystSubAgent = {
9698
9690
  " whichever of the three fields **could** be derived so a human",
9699
9691
  " triaging the issue has the minimum possible cleanup.",
9700
9692
  "",
9701
- "3. **Update source documents.** In each BCM model doc or competitive",
9693
+ "6. **Update source documents.** In each BCM model doc or competitive",
9702
9694
  " analysis that was scanned, add a note in the project-relevance /",
9703
9695
  " strategic-implications section (whichever heading the source doc uses)",
9704
9696
  " indicating that a requirement issue was created:",
@@ -9708,10 +9700,10 @@ var requirementsAnalystSubAgent = {
9708
9700
  " (issue #<N>)",
9709
9701
  " ```",
9710
9702
  "",
9711
- "4. **Comment on the scan issue** with a summary of all issues created and",
9703
+ "7. **Comment on the scan issue** with a summary of all issues created and",
9712
9704
  " all docs updated.",
9713
9705
  "",
9714
- "5. **Commit and push.**",
9706
+ "8. **Commit and push.**",
9715
9707
  "",
9716
9708
  "---",
9717
9709
  "",
@@ -9789,39 +9781,41 @@ var scanRequirementsSkill = {
9789
9781
  "1. Create a `req:scan` issue with `type:requirement`, `priority:medium`,",
9790
9782
  " and `status:ready`. Body must list the files to read and the scan scope.",
9791
9783
  "2. Execute Phase 1 (Scan) of the requirements-analyst agent.",
9792
- "3. If gaps are found, a `req:draft` issue is created automatically.",
9784
+ "3. If gaps are found, a `req:draft-trace` issue is created automatically.",
9793
9785
  "",
9794
9786
  "## Output",
9795
9787
  "",
9796
9788
  "- A `req-scan-<scope>-<YYYY-MM-DD>.md` file under the project's research",
9797
9789
  " requirements directory.",
9798
- "- A `req:draft` issue if any gaps were identified."
9790
+ "- A `req:draft-trace` issue if any gaps were identified."
9799
9791
  ].join("\n")
9800
9792
  };
9801
9793
  var requirementsAnalystBundle = {
9802
9794
  name: "requirements-analyst",
9803
- description: "Requirements gap-discovery agent bundle for BCM-driven projects. 3-phase pipeline (scan, draft, trace) with req:* phase labels.",
9795
+ description: "Requirements gap-discovery agent bundle for BCM-driven projects. 2-phase pipeline (scan, draft-trace) with req:* phase labels.",
9804
9796
  appliesWhen: () => true,
9805
9797
  rules: [
9806
9798
  {
9807
9799
  name: "requirements-analyst-workflow",
9808
- description: "Describes the 3-phase requirements gap-discovery pipeline, the req:* label taxonomy, and the boundary with the downstream requirements-writer agent.",
9800
+ description: "Describes the 2-phase requirements gap-discovery pipeline, the req:* label taxonomy, and the boundary with the downstream requirements-writer agent.",
9809
9801
  scope: AGENT_RULE_SCOPE.ALWAYS,
9810
9802
  content: [
9811
9803
  "# Requirements Analyst Workflow",
9812
9804
  "",
9813
9805
  "Use `/scan-requirements <scope>` to kick off a requirements gap",
9814
- "discovery cycle. The pipeline runs in 3 phases \u2014 scan, draft, trace \u2014",
9815
- "each tracked by its own GitHub issue labeled `req:scan`, `req:draft`,",
9816
- "or `req:trace`. All issues carry `type:requirement`.",
9817
- "",
9818
- "The requirements-analyst *discovers gaps and drafts proposals*; it",
9819
- "does **not** write final requirement documents. Writing is the job",
9820
- "of the downstream `requirements-writer` agent (a separate bundle).",
9806
+ "discovery cycle. The pipeline runs in 2 phases \u2014 scan and",
9807
+ "draft-trace \u2014 each tracked by its own GitHub issue labeled",
9808
+ "`req:scan` or `req:draft-trace`. All issues carry",
9809
+ "`type:requirement`.",
9810
+ "",
9811
+ "The requirements-analyst *discovers gaps, drafts proposals, and",
9812
+ "opens `req:write` issues for the downstream writer*; it does",
9813
+ "**not** write final requirement documents. Writing is the job of",
9814
+ "the downstream `requirements-writer` agent (a separate bundle).",
9821
9815
  "Keep that boundary clean: proposals land under the research",
9822
9816
  "requirements directory, not under the authoritative requirements",
9823
- "tree. The trace phase tags new issues with `req:write` so the",
9824
- "writer bundle picks them up automatically.",
9817
+ "tree. The draft-trace phase tags new issues with `req:write` so",
9818
+ "the writer bundle picks them up automatically.",
9825
9819
  "",
9826
9820
  "See the `requirements-analyst` agent definition for full workflow",
9827
9821
  "details and phase-by-phase instructions."
@@ -9846,14 +9840,9 @@ var requirementsAnalystBundle = {
9846
9840
  description: "Phase 1: scan source docs for requirement gaps and deduplicate"
9847
9841
  },
9848
9842
  {
9849
- name: "req:draft",
9843
+ name: "req:draft-trace",
9850
9844
  color: "BFDADC",
9851
- description: "Phase 2: draft requirement proposals for the requirements-writer"
9852
- },
9853
- {
9854
- name: "req:trace",
9855
- color: "D4C5F9",
9856
- description: "Phase 3: create requirement issues and backfill traceability on source docs"
9845
+ description: "Phase 2: draft proposals, create req:write issues, and backfill source-doc traceability"
9857
9846
  }
9858
9847
  ]
9859
9848
  };
@@ -11737,8 +11726,8 @@ var requirementsWriterSubAgent = {
11737
11726
  "This agent produces **requirement documents only** \u2014 capability",
11738
11727
  "models are written by the `bcm-writer` agent and requirement-gap",
11739
11728
  "discovery is the responsibility of the `requirements-analyst` agent.",
11740
- "Keep this boundary clean: never open `req:scan`, `req:draft`, or",
11741
- "`bcm:*` issues from this pipeline.",
11729
+ "Keep this boundary clean: never open `req:scan`,",
11730
+ "`req:draft-trace`, or `bcm:*` issues from this pipeline.",
11742
11731
  "",
11743
11732
  "Follow your project's shared agent conventions (`AGENTS.md`,",
11744
11733
  "`CLAUDE.md`, or equivalent) for all commit, branch, and PR rules.",
@@ -12272,7 +12261,7 @@ var requirementsWriterSubAgent = {
12272
12261
  "specialized upstream/downstream agents.",
12273
12262
  "",
12274
12263
  "**Do NOT create:**",
12275
- "- `req:scan`, `req:draft`, or `req:trace` issues \u2014 those belong to",
12264
+ "- `req:scan` or `req:draft-trace` issues \u2014 those belong to",
12276
12265
  " the `requirements-analyst` bundle",
12277
12266
  "- `bcm:*` issues \u2014 those belong to the `bcm-writer` bundle",
12278
12267
  "- `people:*`, `company:*`, `software:*`, `research:*`, or",
@@ -12320,8 +12309,8 @@ var requirementsWriterSubAgent = {
12320
12309
  " exists as a file but is missing from its category index is",
12321
12310
  " invisible to anyone browsing the documentation tree.",
12322
12311
  "- **Write requirements, not capability models or gap reports.**",
12323
- " Never open `req:scan`, `req:draft`, `req:trace`, or `bcm:*` issues",
12324
- " from this pipeline."
12312
+ " Never open `req:scan`, `req:draft-trace`, or `bcm:*` issues from",
12313
+ " this pipeline."
12325
12314
  ].join("\n")
12326
12315
  };
12327
12316
  var writeRequirementSkill = {
@@ -12416,8 +12405,8 @@ var requirementsWriterBundle = {
12416
12405
  "The pipeline produces **requirement documents only** \u2014 capability",
12417
12406
  "models are written by the `bcm-writer` agent and gap discovery is",
12418
12407
  "the responsibility of the `requirements-analyst` agent. The",
12419
- "writer never opens `req:scan`, `req:draft`, `req:trace`, or",
12420
- "`bcm:*` issues.",
12408
+ "writer never opens `req:scan`, `req:draft-trace`, or `bcm:*`",
12409
+ "issues.",
12421
12410
  "",
12422
12411
  "Documents follow the 11-category taxonomy (BR, FR, NFR, TR, ADR,",
12423
12412
  "SEC, DR, INT, OPS, UX, MT) and the four-tier classification",
@@ -12523,8 +12512,8 @@ var requirementsReviewerSubAgent = {
12523
12512
  "`requirements-writer` bundle (requirement docs) and `bcm-writer`",
12524
12513
  "bundle (capability models). Gap discovery belongs to the",
12525
12514
  "`requirements-analyst` bundle. Keep this boundary clean: never open",
12526
- "`req:scan`, `req:draft`, `req:trace`, `req:review`, or `bcm:*`",
12527
- "issues from this pipeline. The only follow-ups you open are the",
12515
+ "`req:scan`, `req:draft-trace`, `req:review`, or `bcm:*` issues",
12516
+ "from this pipeline. The only follow-ups you open are the",
12528
12517
  "`req:write` issues documented below.",
12529
12518
  "",
12530
12519
  "Follow your project's shared agent conventions (`AGENTS.md`,",
@@ -12737,8 +12726,8 @@ var requirementsReviewerSubAgent = {
12737
12726
  "doc and must be rewritten or removed). Route follow-up issues to",
12738
12727
  "`req:write` so the `requirements-writer` \u2014 the only agent scoped",
12739
12728
  "to edit under `<REQUIREMENTS_ROOT>` \u2014 picks them up. Do **not**",
12740
- "route Check 4 findings to `req:trace`; the analyst bundle does",
12741
- "not edit requirement documents and the issue would sit",
12729
+ "route Check 4 findings to `req:draft-trace`; the analyst bundle",
12730
+ "does not edit requirement documents and the issue would sit",
12742
12731
  "unresolved. See the Follow-Up Issues section below for the full",
12743
12732
  "Check 3 vs. Check 4 routing split.",
12744
12733
  "",
@@ -13157,11 +13146,12 @@ var requirementsReviewerSubAgent = {
13157
13146
  " docs, competitive-analysis notes, product-roadmap entries,",
13158
13147
  " meeting extracts \u2014 that should link forward to an existing",
13159
13148
  " requirement (Check 3: orphaned requirements whose fix lives",
13160
- " in the source tree, not the requirement doc) \u2192 `req:trace`",
13149
+ " in the source tree, not the requirement doc) \u2192 `req:draft-trace`",
13161
13150
  " (the `requirements-analyst` agent picks it up to backfill",
13162
- " source-doc traceability). **Do not** route Check 4 broken",
13163
- " cross-references here \u2014 the analyst bundle never writes to",
13164
- " `<REQUIREMENTS_ROOT>` and the issue would sit unresolved.",
13151
+ " source-doc traceability inside its combined draft-trace phase).",
13152
+ " **Do not** route Check 4 broken cross-references here \u2014 the",
13153
+ " analyst bundle never writes to `<REQUIREMENTS_ROOT>` and the",
13154
+ " issue would sit unresolved.",
13165
13155
  " - A new requirement is needed (e.g., a `Proposed` ADR is missing",
13166
13156
  " for a deferred technology choice) \u2192 `req:scan` (the analyst",
13167
13157
  " runs a scoped scan to confirm the gap, then drafts the new",
@@ -13175,7 +13165,7 @@ var requirementsReviewerSubAgent = {
13175
13165
  "",
13176
13166
  "**Check 12 exception \u2014 stale `Proposed` ADR/TR triage.** Check 12",
13177
13167
  "findings are the one case where follow-up flows through a new",
13178
- "`req:review` issue rather than `req:write` / `req:trace` /",
13168
+ "`req:review` issue rather than `req:write` / `req:draft-trace` /",
13179
13169
  "`req:scan`. The finding is a decision a human must make, not an",
13180
13170
  "edit to a requirement document, so:",
13181
13171
  "",
@@ -13615,8 +13605,9 @@ var reviewRequirementsSkill = {
13615
13605
  "- One verification script under `<REVIEW_REPORTS_ROOT>` (only",
13616
13606
  " for audits >10 documents)",
13617
13607
  "- Follow-up GitHub issues for every Critical and Warning finding,",
13618
- " carrying the appropriate phase label (`req:write`, `req:trace`,",
13619
- " or `req:scan`) for the downstream agent that should act",
13608
+ " carrying the appropriate phase label (`req:write`,",
13609
+ " `req:draft-trace`, or `req:scan`) for the downstream agent that",
13610
+ " should act",
13620
13611
  "- An aggregated `req:review` follow-up issue labeled",
13621
13612
  " `status:needs-attention` when Check 12 surfaces stale `Proposed`",
13622
13613
  " ADR/TR documents (one issue per review, not one per document);",
@@ -13771,9 +13762,9 @@ var requirementsReviewerBundle = {
13771
13762
  "The review phase produces **review reports and follow-up issues",
13772
13763
  "only** \u2014 it never edits requirement documents, capability",
13773
13764
  "models, or research notes. It files follow-up issues with the",
13774
- "appropriate phase label (`req:write`, `req:trace`, `req:scan`,",
13775
- "or \u2014 only for Check 12 stale-decision triage \u2014 `req:review`)",
13776
- "for the downstream agent or human to pick up.",
13765
+ "appropriate phase label (`req:write`, `req:draft-trace`,",
13766
+ "`req:scan`, or \u2014 only for Check 12 stale-decision triage \u2014",
13767
+ "`req:review`) for the downstream agent or human to pick up.",
13777
13768
  "",
13778
13769
  "For audits covering more than 10 documents, the reviewer writes",
13779
13770
  "a read-only Python verification script alongside the report and",
@@ -13816,9 +13807,9 @@ var requirementsReviewerBundle = {
13816
13807
  "Authoring remains the responsibility of the `requirements-writer`",
13817
13808
  "(requirement docs) and `bcm-writer` (capability models) bundles.",
13818
13809
  "Gap discovery is the responsibility of the `requirements-analyst`",
13819
- "bundle. The reviewer never opens `req:scan`, `req:draft`,",
13820
- "`req:trace`, `req:review`, or `bcm:*` issues \u2014 only `req:write`",
13821
- "follow-ups from either phase.",
13810
+ "bundle. The reviewer never opens `req:scan`, `req:draft-trace`,",
13811
+ "`req:review`, or `bcm:*` issues \u2014 only `req:write` follow-ups",
13812
+ "from either phase.",
13822
13813
  "",
13823
13814
  "**Soft dependency on the `requirements-writer` bundle.** The",
13824
13815
  "reviewer reads category templates from",