@codedrifters/configulator 0.0.260 → 0.0.261

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.d.mts CHANGED
@@ -1766,12 +1766,13 @@ declare const jestBundle: AgentRuleBundle;
1766
1766
  * `true` per this batch's directive that bundles assume peers are
1767
1767
  * present.
1768
1768
  *
1769
- * Provides a 2-phase documentation-maintenance pipeline (scan → fix)
1770
- * designed for any project with structured doc registries and
1771
- * cross-references. Ships a sub-agent, a user-invocable skill, and
1772
- * `maint:*` phase labels via the bundle `labels` mechanism so
1773
- * consuming projects automatically pick up the label taxonomy
1774
- * through the sync-labels workflow.
1769
+ * Provides a 3-phase documentation-maintenance pipeline
1770
+ * (scan → fix → verify) designed for any project with structured doc
1771
+ * registries and cross-references. Ships a sub-agent, two user-
1772
+ * invocable skills (`/audit-docs`, `/verify-audit`), and `maint:*`
1773
+ * phase labels via the bundle `labels` mechanism so consuming projects
1774
+ * automatically pick up the label taxonomy through the sync-labels
1775
+ * workflow.
1775
1776
  */
1776
1777
  declare const maintenanceAuditBundle: AgentRuleBundle;
1777
1778
 
package/lib/index.d.ts CHANGED
@@ -1815,12 +1815,13 @@ declare const jestBundle: AgentRuleBundle;
1815
1815
  * `true` per this batch's directive that bundles assume peers are
1816
1816
  * present.
1817
1817
  *
1818
- * Provides a 2-phase documentation-maintenance pipeline (scan → fix)
1819
- * designed for any project with structured doc registries and
1820
- * cross-references. Ships a sub-agent, a user-invocable skill, and
1821
- * `maint:*` phase labels via the bundle `labels` mechanism so
1822
- * consuming projects automatically pick up the label taxonomy
1823
- * through the sync-labels workflow.
1818
+ * Provides a 3-phase documentation-maintenance pipeline
1819
+ * (scan → fix → verify) designed for any project with structured doc
1820
+ * registries and cross-references. Ships a sub-agent, two user-
1821
+ * invocable skills (`/audit-docs`, `/verify-audit`), and `maint:*`
1822
+ * phase labels via the bundle `labels` mechanism so consuming projects
1823
+ * automatically pick up the label taxonomy through the sync-labels
1824
+ * workflow.
1824
1825
  */
1825
1826
  declare const maintenanceAuditBundle: AgentRuleBundle;
1826
1827
 
package/lib/index.js CHANGED
@@ -4543,7 +4543,7 @@ var jestBundle = {
4543
4543
  // src/agent/bundles/maintenance-audit.ts
4544
4544
  var maintenanceAuditSubAgent = {
4545
4545
  name: "maintenance-audit",
4546
- description: "Audits documentation registries and cross-references for integrity (broken links, registry drift, stale indexes) and applies idempotent fixes. One phase per session, tracked by maint:* GitHub issue labels with filesystem-based durability between phases.",
4546
+ description: "Audits documentation registries and cross-references for integrity (broken links, registry drift, stale indexes), applies idempotent fixes, then re-runs the checks to confirm the fixes cleared the reported findings. One phase per session, tracked by maint:* GitHub issue labels with filesystem-based durability between phases.",
4547
4547
  model: AGENT_MODEL.POWERFUL,
4548
4548
  maxTurns: 80,
4549
4549
  platforms: { cursor: { exclude: true } },
@@ -4601,18 +4601,18 @@ var maintenanceAuditSubAgent = {
4601
4601
  "",
4602
4602
  "## State Machine Overview",
4603
4603
  "",
4604
- "Maintenance audits flow through **2 phases**:",
4604
+ "Maintenance audits flow through **3 phases**:",
4605
4605
  "",
4606
4606
  "```",
4607
- "\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",
4608
- "\u2502 1. SCAN \u2502\u2500\u2500\u2500\u2500\u25B6\u2502 2. FIX \u2502",
4609
- "\u2502 Walk doc \u2502 \u2502 Read audit \u2502",
4610
- "\u2502 tree, check \u2502 \u2502 report, \u2502",
4611
- "\u2502 xrefs and \u2502 \u2502 apply safe \u2502",
4612
- "\u2502 indexes, \u2502 \u2502 idempotent \u2502",
4613
- "\u2502 write audit \u2502 \u2502 fixes, then \u2502",
4614
- "\u2502 report \u2502 \u2502 verify \u2502",
4615
- "\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",
4607
+ "\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",
4608
+ "\u2502 1. SCAN \u2502\u2500\u2500\u2500\u2500\u25B6\u2502 2. FIX \u2502\u2500\u2500\u2500\u2500\u25B6\u2502 3. VERIFY \u2502",
4609
+ "\u2502 Walk doc \u2502 \u2502 Read audit \u2502 \u2502 Re-run the \u2502",
4610
+ "\u2502 tree, check \u2502 \u2502 report, \u2502 \u2502 scan checks \u2502",
4611
+ "\u2502 xrefs and \u2502 \u2502 apply safe \u2502 \u2502 scoped to \u2502",
4612
+ "\u2502 indexes, \u2502 \u2502 idempotent \u2502 \u2502 fixed paths,\u2502",
4613
+ "\u2502 write audit \u2502 \u2502 fixes, write\u2502 \u2502 compare pre \u2502",
4614
+ "\u2502 report \u2502 \u2502 fix report \u2502 \u2502 and post \u2502",
4615
+ "\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",
4616
4616
  "```",
4617
4617
  "",
4618
4618
  "**Issue labels encode the phase:**",
@@ -4620,18 +4620,22 @@ var maintenanceAuditSubAgent = {
4620
4620
  "| Label | Phase | Session work |",
4621
4621
  "|-------|-------|-------------|",
4622
4622
  "| `maint:scan` | 1. Scan | Walk the configured doc tree, check cross-references and registry indexes, write a durable audit report. |",
4623
- "| `maint:fix` | 2. Fix | Read the audit report, apply idempotent fixes, then verify the fixes cleared the reported findings. |",
4623
+ "| `maint:fix` | 2. Fix | Read the audit report, apply idempotent fixes, write a durable fix report. |",
4624
+ "| `maint:verify` | 3. Verify | Re-run the same checks from the parent `maint:scan` issue scoped to the paths and registries the fix phase touched, compare pre and post findings, close the parent scan issue when clean, and file a follow-up `maint:scan` for any residual findings. |",
4624
4625
  "",
4625
4626
  "All issues also carry `type:maintenance` and a `status:*` label.",
4626
4627
  "",
4627
- "**Issue count per audit cycle:** 1 scan + 1 fix = **2 sessions**.",
4628
+ "**Issue count per audit cycle:** 1 scan + 1 fix + 1 verify = **3 sessions**.",
4628
4629
  "",
4629
4630
  "**Shortened paths:**",
4630
4631
  "- Scan finds no issues \u2192 close scan issue with a justification,",
4631
- " do not create a fix issue \u2192 **1 session**.",
4632
+ " do not create a fix or verify issue \u2192 **1 session**.",
4632
4633
  "- Every reported finding requires a human judgment call \u2192 close",
4633
4634
  " scan with the report, open a `status:needs-attention` flag,",
4634
- " do not auto-create a fix issue \u2192 **1 session**.",
4635
+ " do not auto-create a fix or verify issue \u2192 **1 session**.",
4636
+ "- Fix phase applied only `flag-for-human` decisions (no auto-",
4637
+ " fixable findings landed) \u2192 close the fix issue with the",
4638
+ " skipped list and do not create a verify issue \u2192 **2 sessions**.",
4635
4639
  "",
4636
4640
  "---",
4637
4641
  "",
@@ -4661,7 +4665,9 @@ var maintenanceAuditSubAgent = {
4661
4665
  "Run this loop exactly once per session. Never start a second issue.",
4662
4666
  "",
4663
4667
  "1. Claim one open `type:maintenance` issue using phase priority:",
4664
- " `maint:scan` > `maint:fix`.",
4668
+ " `maint:verify` > `maint:fix` > `maint:scan`. Verify ahead of fix",
4669
+ " and scan so the oldest in-flight audit cycle finishes closing",
4670
+ " the loop before a new cycle starts.",
4665
4671
  "2. Transition `status:ready` \u2192 `status:in-progress` and create the",
4666
4672
  " branch per your project's branch-naming convention.",
4667
4673
  "3. Execute the phase handler that matches the issue's `maint:*`",
@@ -4773,24 +4779,30 @@ var maintenanceAuditSubAgent = {
4773
4779
  " - **All findings need human judgment** \u2192 commit the report,",
4774
4780
  " comment on the scan issue summarizing the findings, apply",
4775
4781
  " `status:needs-attention`, and close the issue. Do not create",
4776
- " a `maint:fix` issue.",
4782
+ " a `maint:fix` or `maint:verify` issue.",
4777
4783
  " - **At least one auto-fixable finding** \u2192 create a `maint:fix`",
4778
4784
  " issue (blocked on this scan issue via `Depends on: #N`). The",
4779
- " fix issue body must reference the audit report path and",
4780
- " enumerate the auto-fix categories to apply.",
4785
+ " fix issue body must reference the audit report path, enumerate",
4786
+ " the auto-fix categories to apply, and record the parent scan",
4787
+ " issue number so Phase 3 (Verify) can close the loop.",
4781
4788
  "",
4782
- "6. **Commit and push.**",
4789
+ "6. **Commit and push.** Leave the scan issue open so the downstream",
4790
+ " `maint:verify` phase can close it (or file a follow-up scan)",
4791
+ " after Phase 2 runs.",
4783
4792
  "",
4784
4793
  "---",
4785
4794
  "",
4786
4795
  "## Phase 2: Fix (`maint:fix`)",
4787
4796
  "",
4788
- "**Goal:** Read the audit report, apply idempotent fixes, verify",
4789
- "they cleared the reported findings, and commit the doc-tree changes.",
4797
+ "**Goal:** Read the audit report, apply idempotent fixes, write a",
4798
+ "fix report, and enqueue the verify phase so the audit cycle",
4799
+ "actually closes its loop.",
4790
4800
  "",
4791
- "**Budget:** Bounded edits to files under `<DOCS_ROOT>` plus a final",
4792
- "verification re-run of the checks from Phase 1. No new audit",
4793
- "categories. No fixes that require authoring new content.",
4801
+ "**Budget:** Bounded edits to files under `<DOCS_ROOT>` and one fix",
4802
+ "report file. No new audit categories. No fixes that require",
4803
+ "authoring new content. The formal re-scan lives in Phase 3 \u2014",
4804
+ "Phase 2 confirms only that it did not regress the files it touched",
4805
+ "(a smoke check, not the full pre/post comparison).",
4794
4806
  "",
4795
4807
  "### Fix Categories",
4796
4808
  "",
@@ -4824,11 +4836,13 @@ var maintenanceAuditSubAgent = {
4824
4836
  " mark it `flag-for-human` and skip. Authoring new docs belongs",
4825
4837
  " to the writer agent for that doc type, not this agent.",
4826
4838
  "",
4827
- "5. **Verify.** Re-run the same checks the scan phase ran, scoped",
4828
- " to the files the fix phase touched (plus any index files those",
4829
- " edits affect). Every finding the fix phase claimed to resolve",
4830
- " must now be gone. Any finding that remains is a regression \u2014",
4831
- " revert the corresponding edit and mark it `flag-for-human`.",
4839
+ "5. **Smoke check the touched files.** Before writing the fix",
4840
+ " report, spot-check that the specific findings the fix phase",
4841
+ " claimed to resolve are at least no longer present in the edited",
4842
+ " file(s). This is a narrow local check \u2014 not the full re-scan,",
4843
+ " which is Phase 3's job. If a finding the fix phase targeted",
4844
+ " still reproduces in the edited file, revert that edit and mark",
4845
+ " the finding `flag-for-human` in the fix report instead.",
4832
4846
  "",
4833
4847
  "6. **Write the fix report** to:",
4834
4848
  " ```",
@@ -4859,18 +4873,141 @@ var maintenanceAuditSubAgent = {
4859
4873
  "",
4860
4874
  " ## Skipped",
4861
4875
  " <findings that were stale, flagged for human, or reverted",
4862
- " during verification \u2014 one entry each, with the reason>",
4876
+ " during the smoke check \u2014 one entry each, with the reason>",
4863
4877
  "",
4864
- " ## Verification",
4865
- " - **Re-scan result:** clean / <N> residual findings",
4866
- " - **Residual findings:** <list, with reasons \u2014 each becomes a",
4867
- " follow-up `flag-for-human` note>",
4878
+ " ## Paths Touched",
4879
+ " <ordered list of files edited, plus any index files those edits",
4880
+ " affect. This is the Phase 3 re-scan scope \u2014 the verify phase",
4881
+ " reads this section to decide which paths to re-check.>",
4868
4882
  " ```",
4869
4883
  "",
4870
4884
  "7. **Comment on the scan issue** with a summary of what was fixed,",
4871
- " what was skipped, and any residual findings.",
4885
+ " what was skipped, and that Phase 3 (Verify) will close the loop.",
4886
+ "",
4887
+ "8. **Create the `maint:verify` issue.** Block it on this fix issue",
4888
+ " via `Depends on: #N` so it only runs after the fix PR lands.",
4889
+ " The verify issue body must reference:",
4890
+ " - The parent `maint:scan` issue number",
4891
+ " - The Phase 1 audit report path",
4892
+ " - The Phase 2 fix report path",
4893
+ " - The `Paths Touched` list (so Phase 3 scopes the re-scan",
4894
+ " correctly)",
4895
+ " - The same check catalog the scan phase used",
4896
+ "",
4897
+ " If the fix phase applied **zero** auto-fixes (every finding was",
4898
+ " `stale-finding` or `flag-for-human`), skip the verify issue \u2014",
4899
+ " there is nothing to verify. Close the fix issue with a summary,",
4900
+ " comment on the scan issue, and let a human decide whether to",
4901
+ " re-scan.",
4902
+ "",
4903
+ "9. **Commit and push.**",
4872
4904
  "",
4873
- "8. **Commit and push.**",
4905
+ "---",
4906
+ "",
4907
+ "## Phase 3: Verify (`maint:verify`)",
4908
+ "",
4909
+ "**Goal:** Close the loop on the audit cycle. Re-run the same checks",
4910
+ "the scan phase ran, scoped to the paths and registries the fix",
4911
+ "phase actually touched, compare pre and post findings, and record",
4912
+ "the result in a durable verify report.",
4913
+ "",
4914
+ "**Budget:** Filesystem reads + registry parsing, just like Phase 1,",
4915
+ "but bounded to the paths enumerated in the fix report's",
4916
+ "`Paths Touched` section (plus any index files those paths transit).",
4917
+ "No edits to source docs in this phase \u2014 if the re-scan surfaces a",
4918
+ "regression, record it and file a follow-up `maint:scan` issue,",
4919
+ "but do not attempt to re-fix in-session.",
4920
+ "",
4921
+ "### Steps",
4922
+ "",
4923
+ "1. **Read the verify scope** from the issue body. Confirm the parent",
4924
+ " scan issue number, the audit report path, the fix report path,",
4925
+ " and the `Paths Touched` list. If any of these are missing or",
4926
+ " the files they reference do not exist, close the verify issue",
4927
+ " with `status:needs-attention` and stop.",
4928
+ "",
4929
+ "2. **Re-run the same checks the scan phase ran**, scoped to the",
4930
+ " paths the fix phase touched plus any index or registry files",
4931
+ " those paths transit. Use the identical check catalog that the",
4932
+ " parent scan issue declared \u2014 do not add or remove checks",
4933
+ " between scan and verify.",
4934
+ "",
4935
+ "3. **Compare pre and post findings.** For each finding in the Phase 1",
4936
+ " audit report that fell within the re-scan scope, classify it as:",
4937
+ " - **resolved** \u2014 absent from the re-scan; the fix worked.",
4938
+ " - **still-failing** \u2014 still present in the re-scan; the fix did",
4939
+ " not clear it.",
4940
+ " - **regressed** \u2014 was not in the Phase 1 audit report but appears",
4941
+ " now; the fix introduced it.",
4942
+ " - **out-of-scope** \u2014 was in the Phase 1 audit report but its",
4943
+ " path was not in the fix phase's `Paths Touched` list, so this",
4944
+ " verify pass cannot speak to it.",
4945
+ "",
4946
+ "4. **Write the verify report** to:",
4947
+ " ```",
4948
+ " <AUDIT_ROOT>/maint-verify-<AUDIT_SLUG>-<YYYY-MM-DD>.md",
4949
+ " ```",
4950
+ "",
4951
+ " Format:",
4952
+ " ```markdown",
4953
+ " ---",
4954
+ ' title: "Maintenance Verify: <AUDIT_SLUG>"',
4955
+ " date: YYYY-MM-DD",
4956
+ " parent_issue: <N>",
4957
+ " scan_issue: <N>",
4958
+ " fix_issue: <N>",
4959
+ " audit_report: <path to Phase 1 scan report>",
4960
+ " fix_report: <path to Phase 2 fix report>",
4961
+ " status: complete",
4962
+ " ---",
4963
+ "",
4964
+ " # Maintenance Verify: <AUDIT_SLUG>",
4965
+ "",
4966
+ " ## Source Reports",
4967
+ " - Scan report: <link>",
4968
+ " - Fix report: <link>",
4969
+ "",
4970
+ " ## Re-scan Scope",
4971
+ " - **Paths re-checked:** <list \u2014 from the fix report's",
4972
+ " `Paths Touched` section>",
4973
+ " - **Checks re-run:** <same catalog the scan phase used>",
4974
+ "",
4975
+ " ## Pre/Post Comparison",
4976
+ " | Status | Count | Findings |",
4977
+ " |--------|-------|----------|",
4978
+ " | resolved | N | <one line per finding: category + file:line> |",
4979
+ " | still-failing | N | <one line per finding> |",
4980
+ " | regressed | N | <one line per finding> |",
4981
+ " | out-of-scope | N | <one line per finding> |",
4982
+ "",
4983
+ " ## Verdict",
4984
+ " - **clean** \u2014 every in-scope finding resolved and no regressions;",
4985
+ " the parent scan issue will be closed.",
4986
+ " - **residual** \u2014 one or more still-failing or regressed findings;",
4987
+ " a follow-up `maint:scan` issue is filed and the parent scan",
4988
+ " issue is closed with a reference to the follow-up.",
4989
+ " ```",
4990
+ "",
4991
+ "5. **Decide the next step:**",
4992
+ " - **Clean verdict** (every in-scope finding resolved, no",
4993
+ " regressions, no still-failing entries) \u2192 comment on the parent",
4994
+ " `maint:scan` issue summarizing the result and **close it**.",
4995
+ " Do not file a follow-up scan.",
4996
+ " - **Residual verdict** (one or more `still-failing` or",
4997
+ " `regressed` entries) \u2192 file a new `maint:scan` issue for the",
4998
+ " residual scope, blocked on nothing (it is ready to run on its",
4999
+ " own schedule), and link the verify report from its body. Then",
5000
+ " comment on the parent scan issue with the residual summary and",
5001
+ " **close it**.",
5002
+ " - **Out-of-scope-only verdict** (every finding fell outside the",
5003
+ " fix phase's `Paths Touched`) \u2192 comment on the parent scan",
5004
+ " issue explaining that the fix phase did not cover those paths",
5005
+ " and leave it open with `status:needs-attention` so a human can",
5006
+ " re-scope the cycle. Do not auto-close the parent scan issue",
5007
+ " in this case.",
5008
+ "",
5009
+ "6. **Commit and push.** Close the verify issue with a one-line",
5010
+ " summary of the verdict.",
4874
5011
  "",
4875
5012
  "---",
4876
5013
  "",
@@ -4880,11 +5017,13 @@ var maintenanceAuditSubAgent = {
4880
5017
  "|-----------|-------|------|",
4881
5018
  "| Downstream (last resort) | Writer agent for the audited doc type | When the audit surfaces findings that require authoring new content (missing target, partial coverage that can only be resolved by writing a new doc), the fix phase flags them for human \u2014 the human may then dispatch the appropriate writer agent. This agent never opens writer-agent issues itself. |",
4882
5019
  "",
4883
- "**File boundaries:** Writes audit and fix reports to",
5020
+ "**File boundaries:** Writes audit, fix, and verify reports to",
4884
5021
  "`<AUDIT_ROOT>/`. Applies bounded, idempotent edits under",
4885
- "`<DOCS_ROOT>/` per the fix-policy declared in the fix issue body.",
4886
- "Never writes to source code, never writes to doc trees outside",
4887
- "`<DOCS_ROOT>`, never authors new document files to close a gap.",
5022
+ "`<DOCS_ROOT>/` only in Phase 2 (Fix), per the fix-policy declared",
5023
+ "in the fix issue body. Phase 3 (Verify) never edits doc files \u2014",
5024
+ "it only reads and re-scans. Never writes to source code, never",
5025
+ "writes to doc trees outside `<DOCS_ROOT>`, never authors new",
5026
+ "document files to close a gap.",
4888
5027
  "",
4889
5028
  "---",
4890
5029
  "",
@@ -4896,6 +5035,10 @@ var maintenanceAuditSubAgent = {
4896
5035
  "- All findings are `flag-for-human` and the fix issue has nothing",
4897
5036
  " to auto-apply \u2014 resolve by closing the fix issue with a summary",
4898
5037
  " instead",
5038
+ "- A `maint:verify` issue references a fix report whose",
5039
+ " `Paths Touched` list is empty \u2014 there is nothing to re-scan, so",
5040
+ " close the verify issue with a summary and let a human decide",
5041
+ " whether to re-run the scan",
4899
5042
  "",
4900
5043
  "---",
4901
5044
  "",
@@ -4910,13 +5053,24 @@ var maintenanceAuditSubAgent = {
4910
5053
  " Record out-of-scope observations in the report for human review.",
4911
5054
  "- **No authoring.** Do not invent new document content to close a",
4912
5055
  " finding. That work belongs to the writer agent for the doc type.",
4913
- "- **Verify before closing.** Always re-run the checks after",
4914
- " applying fixes and record the result in the fix report."
5056
+ "- **Verify closes the loop.** Every fix-phase run that lands at",
5057
+ " least one auto-fix must enqueue a `maint:verify` issue. Phase 3",
5058
+ " is the only phase that closes the parent `maint:scan` issue.",
5059
+ " Phase 2 never closes the scan issue itself.",
5060
+ "- **Pre/post comparison is required.** The verify report must",
5061
+ " classify every in-scope finding from the scan report as",
5062
+ " `resolved`, `still-failing`, `regressed`, or `out-of-scope`.",
5063
+ " An unclassified finding means the re-scan was incomplete \u2014 re-",
5064
+ " run the missing checks before writing the verdict.",
5065
+ "- **Residual findings get their own cycle.** When the verify phase",
5066
+ " finds `still-failing` or `regressed` entries, file a follow-up",
5067
+ " `maint:scan` issue rather than attempting to re-fix in-session.",
5068
+ " The new scan starts its own audit cycle with a fresh report."
4915
5069
  ].join("\n")
4916
5070
  };
4917
5071
  var maintenanceAuditSkill = {
4918
5072
  name: "audit-docs",
4919
- description: "Kick off a documentation-maintenance audit cycle (scan \u2192 fix). Creates a maint:scan issue for the supplied scope and dispatches Phase 1.",
5073
+ description: "Kick off a documentation-maintenance audit cycle (scan \u2192 fix \u2192 verify). Creates a maint:scan issue for the supplied scope and dispatches Phase 1.",
4920
5074
  disableModelInvocation: true,
4921
5075
  userInvocable: true,
4922
5076
  context: "fork",
@@ -4928,7 +5082,8 @@ var maintenanceAuditSkill = {
4928
5082
  "Kick off a maintenance-audit cycle against a configurable doc",
4929
5083
  "tree. Creates a `maint:scan` issue targeted at the requested",
4930
5084
  "scope and dispatches Phase 1 (Scan) in the maintenance-audit",
4931
- "agent.",
5085
+ "agent. Subsequent phases (`maint:fix`, `maint:verify`) are",
5086
+ "created automatically as the cycle progresses.",
4932
5087
  "",
4933
5088
  "## Usage",
4934
5089
  "",
@@ -4955,30 +5110,102 @@ var maintenanceAuditSkill = {
4955
5110
  "2. Execute Phase 1 (Scan) of the maintenance-audit agent.",
4956
5111
  "3. If auto-fixable findings exist, a `maint:fix` issue is created",
4957
5112
  " automatically.",
5113
+ "4. When the fix phase lands, a `maint:verify` issue is created",
5114
+ " automatically so Phase 3 can re-run the checks and close the",
5115
+ " parent scan issue.",
4958
5116
  "",
4959
5117
  "## Output",
4960
5118
  "",
4961
5119
  "- A `maint-audit-<slug>-<YYYY-MM-DD>.md` report under",
4962
5120
  " `<AUDIT_ROOT>`.",
4963
- "- A `maint:fix` issue if auto-fixable findings were found."
5121
+ "- A `maint:fix` issue if auto-fixable findings were found.",
5122
+ "- A `maint:verify` issue after the fix phase lands (Phase 3",
5123
+ " produces a `maint-verify-<slug>-<YYYY-MM-DD>.md` report)."
5124
+ ].join("\n")
5125
+ };
5126
+ var maintenanceVerifySkill = {
5127
+ name: "verify-audit",
5128
+ description: "Kick off the verify phase of a documentation-maintenance audit cycle. Creates a maint:verify issue that re-runs the scan checks scoped to the paths a fix phase touched, compares pre/post findings, and closes the parent maint:scan issue when clean or files a follow-up maint:scan for residual findings.",
5129
+ disableModelInvocation: true,
5130
+ userInvocable: true,
5131
+ context: "fork",
5132
+ agent: "maintenance-audit",
5133
+ platforms: { cursor: { exclude: true } },
5134
+ instructions: [
5135
+ "# Verify Audit",
5136
+ "",
5137
+ "Close the loop on a maintenance-audit cycle. Creates a",
5138
+ "`maint:verify` issue and dispatches Phase 3 (Verify) in the",
5139
+ "maintenance-audit agent.",
5140
+ "",
5141
+ "Phase 3 re-runs the same checks the scan phase ran, scoped to the",
5142
+ "paths the fix phase actually touched, compares pre and post",
5143
+ "findings, and writes a verify report. Based on the verdict the",
5144
+ "phase either closes the parent `maint:scan` issue or files a",
5145
+ "follow-up `maint:scan` for residual findings.",
5146
+ "",
5147
+ "## Usage",
5148
+ "",
5149
+ "/verify-audit <scan-issue-number>",
5150
+ "",
5151
+ "Where `<scan-issue-number>` is the `maint:scan` issue that kicked",
5152
+ "off the audit cycle. The skill resolves the scan report, the",
5153
+ "Phase 2 fix report, and the `Paths Touched` list from that scan",
5154
+ "issue's downstream `maint:fix` issue.",
5155
+ "",
5156
+ "Most cycles do not need this skill \u2014 Phase 2 (Fix) creates the",
5157
+ "verify issue automatically. Use this skill when:",
5158
+ "- Phase 2 ran on an older audit cycle that predates the verify",
5159
+ " phase and never enqueued a verify issue, or",
5160
+ "- A human wants to re-run the verify phase after a manual fix",
5161
+ " applied on top of the Phase 2 PR.",
5162
+ "",
5163
+ "## Steps",
5164
+ "",
5165
+ "1. Create a `maint:verify` issue with `type:maintenance`,",
5166
+ " `priority:medium`, and `status:ready`. Body must list:",
5167
+ " - The parent `maint:scan` issue number",
5168
+ " - The Phase 1 audit report path",
5169
+ " - The Phase 2 fix report path (if one exists)",
5170
+ " - The `Paths Touched` list (copied from the fix report)",
5171
+ " - The audit check catalog (copied from the scan issue)",
5172
+ "2. Execute Phase 3 (Verify) of the maintenance-audit agent.",
5173
+ "",
5174
+ "## Output",
5175
+ "",
5176
+ "- A `maint-verify-<slug>-<YYYY-MM-DD>.md` report under",
5177
+ " `<AUDIT_ROOT>` containing the pre/post comparison.",
5178
+ "- The parent `maint:scan` issue is closed (clean verdict) or a",
5179
+ " follow-up `maint:scan` issue is filed (residual verdict)."
4964
5180
  ].join("\n")
4965
5181
  };
4966
5182
  var maintenanceAuditBundle = {
4967
5183
  name: "maintenance-audit",
4968
- description: "Documentation-maintenance agent bundle. 2-phase pipeline (scan, fix) with maint:* phase labels for auditing registries and cross-references and applying idempotent fixes. Enabled by default.",
5184
+ description: "Documentation-maintenance agent bundle. 3-phase pipeline (scan, fix, verify) with maint:* phase labels for auditing registries and cross-references, applying idempotent fixes, and confirming the fixes cleared the originally-flagged findings. Enabled by default.",
4969
5185
  appliesWhen: () => true,
4970
5186
  rules: [
4971
5187
  {
4972
5188
  name: "maintenance-audit-workflow",
4973
- description: "Describes the 2-phase documentation-maintenance pipeline, the maint:* label taxonomy, and the audit-before-fix boundary.",
5189
+ description: "Describes the 3-phase documentation-maintenance pipeline, the maint:* label taxonomy, the audit-before-fix boundary, and the verify-closes-the-loop rule.",
4974
5190
  scope: AGENT_RULE_SCOPE.ALWAYS,
4975
5191
  content: [
4976
5192
  "# Maintenance Audit Workflow",
4977
5193
  "",
4978
5194
  "Use `/audit-docs <scope>` to kick off a documentation-maintenance",
4979
- "audit cycle. The pipeline runs in 2 phases \u2014 scan and fix \u2014 each",
4980
- "tracked by its own GitHub issue labeled `maint:scan` or",
4981
- "`maint:fix`. All issues carry `type:maintenance`.",
5195
+ "audit cycle. The pipeline runs in 3 phases \u2014 scan, fix, and",
5196
+ "verify \u2014 each tracked by its own GitHub issue labeled",
5197
+ "`maint:scan`, `maint:fix`, or `maint:verify`. All issues carry",
5198
+ "`type:maintenance`.",
5199
+ "",
5200
+ "One additional user-invocable skill drives the verify phase",
5201
+ "on demand:",
5202
+ "",
5203
+ "- `/verify-audit <scan-issue-number>` \u2014 re-run the scan checks",
5204
+ " scoped to the paths the fix phase touched, compare pre/post",
5205
+ " findings, and close the parent `maint:scan` issue (or file a",
5206
+ " follow-up for residual findings). Phase 2 (Fix) normally",
5207
+ " enqueues the verify issue automatically \u2014 this skill is the",
5208
+ " explicit entry point for re-running the phase on demand.",
4982
5209
  "",
4983
5210
  "The maintenance-audit agent *audits doc registries and applies",
4984
5211
  "idempotent fixes*; it does **not** author new document content.",
@@ -4994,7 +5221,7 @@ var maintenanceAuditBundle = {
4994
5221
  tags: ["workflow"]
4995
5222
  }
4996
5223
  ],
4997
- skills: [maintenanceAuditSkill],
5224
+ skills: [maintenanceAuditSkill, maintenanceVerifySkill],
4998
5225
  subAgents: [maintenanceAuditSubAgent],
4999
5226
  labels: [
5000
5227
  {
@@ -5011,6 +5238,11 @@ var maintenanceAuditBundle = {
5011
5238
  name: "maint:fix",
5012
5239
  color: "BFDADC",
5013
5240
  description: "Phase 2: apply idempotent fixes from a maintenance audit report"
5241
+ },
5242
+ {
5243
+ name: "maint:verify",
5244
+ color: "D4C5F9",
5245
+ description: "Phase 3: re-run the scan checks scoped to the paths the fix phase touched, compare pre/post findings, and close or re-queue the parent scan"
5014
5246
  }
5015
5247
  ]
5016
5248
  };