@theglitchking/persistent-planning 3.5.0 → 3.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.documentation/INDEX.md +6 -5
  4. package/.documentation/knowledge-base/facts/INDEX.md +59 -0
  5. package/.documentation/knowledge-base/facts/babel-fish-hook-adds-untracked-map.md +56 -0
  6. package/.documentation/knowledge-base/facts/claude-code-grep-v-exit-status.md +55 -0
  7. package/.documentation/knowledge-base/facts/git-rm-cached-moved-path-drops-staged.md +56 -0
  8. package/.documentation/knowledge-base/incidents/INDEX.md +17 -0
  9. package/.documentation/knowledge-base/symptoms/INDEX.md +17 -0
  10. package/.documentation/procedures/INDEX.md +3 -3
  11. package/.documentation/procedures/REGISTRY.md +3 -3
  12. package/.documentation/procedures/plan-completion-and-archive.md +11 -5
  13. package/.documentation/standards/INDEX.md +3 -3
  14. package/.documentation/standards/REGISTRY.md +3 -3
  15. package/.documentation/standards/mandatory-closing-phases.md +43 -2
  16. package/.documentation/troubleshooting/INDEX.md +4 -3
  17. package/.documentation/troubleshooting/REGISTRY.md +6 -4
  18. package/.documentation/troubleshooting/docs-closer-missing-hewtd-steps.md +57 -0
  19. package/.documentation/troubleshooting/stale-skill-dir-drift.md +4 -2
  20. package/CHANGELOG.md +62 -0
  21. package/commands/start-planning.md +12 -0
  22. package/package.json +1 -1
  23. package/scripts/archive-plan.sh +20 -6
  24. package/scripts/init-atom.sh +2 -0
  25. package/scripts/init-phase.sh +42 -9
  26. package/scripts/init-planning.sh +60 -4
  27. package/scripts/init-task.sh +2 -0
  28. package/scripts/lib/planning.sh +61 -0
  29. package/skills/persistent-planning/SKILL.md +16 -3
  30. package/templates/git-workflow-section.md +11 -0
  31. package/templates/lg/phase.md +12 -2
  32. package/templates/rules/persistent-planning.md +35 -0
@@ -6,13 +6,13 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Official marketplace for persistent-planning - Persistent markdown-based planning for Claude Code. Context engineering pattern with task directories, progress tracking, and working memory that persists across sessions.",
9
- "version": "3.5.0"
9
+ "version": "3.6.1"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "persistent-planning",
14
14
  "description": "Persistent markdown-based planning for Claude Code. Uses on-disk markdown files as working memory for planning, progress tracking, and knowledge storage. Plans persist across sessions and support multiple concurrent tasks.",
15
- "version": "3.5.0",
15
+ "version": "3.6.1",
16
16
  "author": {
17
17
  "name": "TheGlitchKing"
18
18
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "persistent-planning",
3
- "version": "3.5.0",
3
+ "version": "3.6.1",
4
4
  "description": "Persistent markdown-based planning with task directories, progress tracking, and context engineering for multi-step Claude Code workflows",
5
5
  "author": {
6
6
  "name": "TheGlitchKing"
@@ -3,7 +3,7 @@ title: Documentation Index
3
3
  tier: reference
4
4
  domains: [root]
5
5
  status: active
6
- last_updated: '2026-09-26'
6
+ last_updated: '2026-10-23'
7
7
  version: '1.0.0'
8
8
  purpose: Navigation hub for all documentation
9
9
  ---
@@ -29,7 +29,7 @@ purpose: Navigation hub for all documentation
29
29
  | [Security](#security) | 0 | Security, auth, Vault, Keycloak, RLS |
30
30
  | [Standards](#standards) | 2 | Coding standards (backend, frontend, database, devops, security) |
31
31
  | [Testing](#testing) | 1 | Test strategies, fixtures, patterns, integration/e2e |
32
- | [Troubleshooting](#troubleshooting) | 2 | Debug guides, common issues, solutions |
32
+ | [Troubleshooting](#troubleshooting) | 3 | Debug guides, common issues, solutions |
33
33
  | [Workflows](#workflows) | 0 | Process documentation, multi-step operations |
34
34
  | [Reference](#reference) | 3 | Schema, frontmatter, and CLI reference material for the planning artifacts |
35
35
 
@@ -128,7 +128,7 @@ purpose: Navigation hub for all documentation
128
128
 
129
129
  | Document | Tier | Status | Updated |
130
130
  |----------|------|--------|----------|
131
- | [Plan Completion and Archive](procedures/plan-completion-and-archive.md) | guide | active | 2026-08-31 |
131
+ | [Plan Completion and Archive](procedures/plan-completion-and-archive.md) | guide | active | 2026-10-23 |
132
132
  | [Plugin update delivery — what actually runs, and when](procedures/plugin-update-delivery.md) | guide | active | 2026-09-04 |
133
133
 
134
134
  ---
@@ -164,7 +164,7 @@ purpose: Navigation hub for all documentation
164
164
  | Document | Tier | Status | Updated |
165
165
  |----------|------|--------|----------|
166
166
  | [Atom Granularity (anti-pattern guide)](standards/atom-granularity.md) | standard | active | 2026-05-07 |
167
- | [Mandatory Closing Phases](standards/mandatory-closing-phases.md) | standard | active | 2026-08-31 |
167
+ | [Mandatory Closing Phases](standards/mandatory-closing-phases.md) | standard | active | 2026-10-23 |
168
168
 
169
169
  ---
170
170
 
@@ -188,6 +188,7 @@ purpose: Navigation hub for all documentation
188
188
 
189
189
  | Document | Tier | Status | Updated |
190
190
  |----------|------|--------|----------|
191
+ | [A plan's docs step has no hit-em-with-the-docs steps](troubleshooting/docs-closer-missing-hewtd-steps.md) | guide | active | 2026-10-23 |
191
192
  | [A plan won't read COMPLETE](troubleshooting/plan-never-reads-complete.md) | guide | active | 2026-09-04 |
192
193
  | [Stale skill directory — commands run frozen code](troubleshooting/stale-skill-dir-drift.md) | guide | active | 2026-09-04 |
193
194
 
@@ -219,6 +220,6 @@ purpose: Navigation hub for all documentation
219
220
 
220
221
  ## Maintenance
221
222
 
222
- - **Last generated:** 2026-09-26
223
+ - **Last generated:** 2026-10-23
223
224
  - **Run maintenance:** `npx hit-em-with-the-docs maintain`
224
225
  - **Regenerate index:** `npx hit-em-with-the-docs index`
@@ -0,0 +1,59 @@
1
+ ---
2
+ title: Facts Index
3
+ tier: reference
4
+ domains:
5
+ - knowledge-base
6
+ status: active
7
+ last_updated: '0000-00-00'
8
+ version: '1.0.0'
9
+ purpose: Auto-generated index of all facts in the knowledge base, grouped by tag then confidence.
10
+ ---
11
+
12
+ # Facts Index
13
+
14
+ <!-- Auto-generated by `hewtd maintain`. Do not edit by hand — changes will be overwritten. -->
15
+
16
+ **Total facts:** 3
17
+
18
+ ## babel-fish
19
+
20
+ ### confidence: high
21
+
22
+ | ID | Title | Last verified | Citers |
23
+ |--------------------------------------|-----------------------------------------------------------------------------------------------|---------------|--------|
24
+ | `babel-fish-hook-adds-untracked-map` | babel-fish's pre-commit hook commits an untracked project map into the next qualifying commit | 2026-10-23 | 0 |
25
+
26
+ ## claude-code
27
+
28
+ ### confidence: high
29
+
30
+ | ID | Title | Last verified | Citers |
31
+ |----------------------------------|-------------------------------------------------------------------|---------------|--------|
32
+ | `claude-code-grep-v-exit-status` | In Claude Code's Bash tool, grep -v exits 1 when any line matches | 2026-10-23 | 0 |
33
+
34
+ ## git
35
+
36
+ ### confidence: high
37
+
38
+ | ID | Title | Last verified | Citers |
39
+ |-----------------------------------------|-----------------------------------------------------------------------------------------------|---------------|--------|
40
+ | `babel-fish-hook-adds-untracked-map` | babel-fish's pre-commit hook commits an untracked project map into the next qualifying commit | 2026-10-23 | 0 |
41
+ | `git-rm-cached-moved-path-drops-staged` | git rm --cached on a path whose files were moved away silently drops staged content | 2026-10-23 | 0 |
42
+
43
+ ## gotcha
44
+
45
+ ### confidence: high
46
+
47
+ | ID | Title | Last verified | Citers |
48
+ |-----------------------------------------|-----------------------------------------------------------------------------------------------|---------------|--------|
49
+ | `babel-fish-hook-adds-untracked-map` | babel-fish's pre-commit hook commits an untracked project map into the next qualifying commit | 2026-10-23 | 0 |
50
+ | `claude-code-grep-v-exit-status` | In Claude Code's Bash tool, grep -v exits 1 when any line matches | 2026-10-23 | 0 |
51
+ | `git-rm-cached-moved-path-drops-staged` | git rm --cached on a path whose files were moved away silently drops staged content | 2026-10-23 | 0 |
52
+
53
+ ## shell
54
+
55
+ ### confidence: high
56
+
57
+ | ID | Title | Last verified | Citers |
58
+ |----------------------------------|-------------------------------------------------------------------|---------------|--------|
59
+ | `claude-code-grep-v-exit-status` | In Claude Code's Bash tool, grep -v exits 1 when any line matches | 2026-10-23 | 0 |
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: babel-fish's pre-commit hook commits an untracked project map into the next qualifying commit
3
+ tier: fact
4
+ domains:
5
+ - troubleshooting
6
+ status: active
7
+ last_updated: 2026-10-23
8
+ id: babel-fish-hook-adds-untracked-map
9
+ confidence: high
10
+ last_verified: 2026-10-23
11
+ verify_command: |
12
+ command grep -n "git add .claude/project-map" .githooks/pre-commit
13
+ provenance:
14
+ - .planning/hewtd-aware-documentation-closer/
15
+ sources:
16
+ - .githooks/pre-commit
17
+ tags:
18
+ - gotcha
19
+ - babel-fish
20
+ - git
21
+ invalidated_by:
22
+ - babel-fish's hook stops running git add on the map, or only re-adds files that are already tracked
23
+ ---
24
+
25
+ # babel-fish's pre-commit hook commits an untracked project map into the next qualifying commit
26
+
27
+ ## Claim
28
+
29
+ Once the babel-fish installer has run (`core.hooksPath=.githooks`), any commit that stages a
30
+ `.py`, `.ts`, `.js`, `.go`, `.java`, `.yaml`/`.yml`, `package.json`, `Cargo.toml`, `go.mod` or
31
+ docker-compose file runs the codebase mapper. The mapper then runs
32
+ `git add .claude/project-map/...`. If the map has never been committed, this stages the whole
33
+ map (about 25 files) into that commit. Nothing reports it beyond the generator's progress lines.
34
+
35
+ It happened on the 3.6.0 release commit: bumping `package.json` brought in the entire map,
36
+ and it was pushed before anyone noticed.
37
+
38
+ ## How to verify
39
+
40
+ `.githooks/pre-commit` contains `git add .claude/project-map/PROJECT_MAP.md ...` inside the
41
+ "Codebase Mapper" block. After a commit touching one of those file types, run
42
+ `git show --stat HEAD`, which lists `.claude/project-map/` files you didn't stage.
43
+
44
+ ## Instead
45
+
46
+ Right after installing babel-fish, commit its output on its own: `.claude/project-map/`,
47
+ `.claude/rules/`, `.claude/CLAUDE.md`, `.githooks/` and the generated developer skill.
48
+ After that the hook only stages real map changes. To keep the map out of git, gitignore
49
+ `.claude/project-map/`, which turns the hook's `git add` into a no-op. Removing the map from a commit the hook
50
+ already touched means re-committing, and the hook re-adds it. So commit the map first and
51
+ rebuild the branch on top, rather than amending past the hook with `--no-verify`.
52
+
53
+ ## Consequences
54
+
55
+ Release and feature commits pick up unrelated generated files. Check
56
+ `git show --stat HEAD` after the first commit in a repo where babel-fish was just installed.
@@ -0,0 +1,55 @@
1
+ ---
2
+ title: In Claude Code's Bash tool, grep -v exits 1 when any line matches
3
+ tier: fact
4
+ domains:
5
+ - troubleshooting
6
+ status: active
7
+ last_updated: 2026-10-23
8
+ id: claude-code-grep-v-exit-status
9
+ confidence: high
10
+ last_verified: 2026-10-23
11
+ verify_command: |
12
+ printf 'abc\nxyz\n' | command grep -v xyz >/dev/null; echo "GNU grep: $? (expect 0)"; type -t grep
13
+ provenance:
14
+ - .planning/hewtd-aware-documentation-closer/
15
+ tags:
16
+ - gotcha
17
+ - claude-code
18
+ - shell
19
+ invalidated_by:
20
+ - Claude Code stops wrapping grep in a shell function, or its ugrep matches GNU grep's -v exit status
21
+ ---
22
+
23
+ # In Claude Code's Bash tool, grep -v exits 1 when any line matches
24
+
25
+ ## Claim
26
+
27
+ In Claude Code's Bash tool, `grep` is a shell function that runs Claude Code's bundled ugrep.
28
+ With `-v`, it prints the right (non-matching) lines but **exits 1 whenever any input line
29
+ matches the pattern**. GNU grep exits 0 as long as some line was selected. So
30
+ `if … | grep -vq PATTERN` reads "nothing selected" when lines were selected. That includes
31
+ `-vqE`, `-v -q -E` and `-vE`.
32
+
33
+ Observed while filtering date-only `hewtd index` churn: a loop meant to keep index files
34
+ with real changes (`grep -vqE "last_updated|Last updated"`) reverted every file, including
35
+ the new doc's index entry.
36
+
37
+ ## How to verify
38
+
39
+ In the Claude Code Bash tool: `type -t grep` prints `function`. Then
40
+ `printf 'abc\nxyz\n' | grep -v xyz >/dev/null; echo $?` prints `1`. The same line with
41
+ `command grep` prints `0`. The `verify_command` above checks the GNU side. The ugrep
42
+ side only reproduces inside Claude Code's Bash tool.
43
+
44
+ ## Instead
45
+
46
+ Use `command grep` whenever the **exit status** of `grep -v` matters (`if`, `&&`, `||`, `-q`).
47
+ Scripts run as child processes (`bash script.sh`, `npm test`) are unaffected, because the
48
+ function isn't exported, so `tests/run.sh` and the init scripts use GNU grep. Only commands
49
+ typed straight into the tool are affected.
50
+
51
+ ## Consequences
52
+
53
+ A silent wrong branch, not an error. Here it discarded generated index changes that should
54
+ have been committed. Anywhere `grep -v` is used as a test, the "some lines selected" case is
55
+ read as "none selected".
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: git rm --cached on a path whose files were moved away silently drops staged content
3
+ tier: fact
4
+ domains:
5
+ - troubleshooting
6
+ status: active
7
+ last_updated: 2026-10-23
8
+ id: git-rm-cached-moved-path-drops-staged
9
+ confidence: high
10
+ last_verified: 2026-10-23
11
+ verify_command: |
12
+ #!/usr/bin/env bash
13
+ set -euo pipefail
14
+ d=$(mktemp -d); cd "$d"; git init -q; echo a > f; git add f; git -c user.name=t -c user.email=t@t commit -qm a
15
+ echo staged > f; git add f; echo a > f; mkdir moved; mv f moved/
16
+ git rm -q --cached f && echo "rm --cached succeeded: staged blob dropped from index"
17
+ cd /; rm -rf "${d:?}"
18
+ provenance:
19
+ - .planning/archive-plan-untracks-archived-plans-issue-26/
20
+ sources:
21
+ - scripts/archive-plan.sh
22
+ tags:
23
+ - gotcha
24
+ - git
25
+ invalidated_by:
26
+ - git rm --cached starts refusing when the index entry differs from HEAD regardless of the worktree
27
+ ---
28
+
29
+ # git rm --cached on a path whose files were moved away silently drops staged content
30
+
31
+ ## Claim
32
+
33
+ `git rm --cached <path>` refuses ("staged content different from both the file and the HEAD")
34
+ only when it can compare against a **worktree file**. If the files at `<path>` have already been
35
+ moved elsewhere (e.g. `mv .planning/x .planning/.archive/x`), there is nothing to compare, and git
36
+ untracks the path without complaint. Any staged content that differed from the worktree copy is
37
+ then gone from the index. Only a dangling blob is left, which `git fsck` can find.
38
+
39
+ Found while fixing #26: the first fix moved the plan, then relied on `git rm --cached` refusing to
40
+ protect staged changes. It never refused.
41
+
42
+ ## How to verify
43
+
44
+ Run `verify_command`. It stages content that differs from the worktree, moves the file away, and
45
+ `git rm --cached` succeeds.
46
+
47
+ ## Instead
48
+
49
+ Check for staged changes **before** moving: `git diff --cached --quiet -- <path>` (non-zero means
50
+ staged changes). If there are any, don't untrack. Warn and let the user commit or unstage first.
51
+ This is what `scripts/archive-plan.sh` does.
52
+
53
+ ## Consequences
54
+
55
+ Any "move, then untrack the old path" sequence needs its own staged-change check. Git's built-in
56
+ refusal won't protect it.
@@ -0,0 +1,17 @@
1
+ ---
2
+ title: Incidents Index
3
+ tier: reference
4
+ domains:
5
+ - knowledge-base
6
+ - incidents
7
+ status: active
8
+ last_updated: '0000-00-00'
9
+ version: '1.0.0'
10
+ purpose: Auto-generated chronological index of all incidents in the knowledge base.
11
+ ---
12
+
13
+ # Incidents Index
14
+
15
+ <!-- Auto-generated by `hewtd maintain`. Do not edit by hand — changes will be overwritten. -->
16
+
17
+ _No incidents yet. Create one with the `templates/knowledge-base/incident-narrative.template.md` template._
@@ -0,0 +1,17 @@
1
+ ---
2
+ title: Symptoms Index
3
+ tier: reference
4
+ domains:
5
+ - knowledge-base
6
+ - operations
7
+ status: active
8
+ last_updated: '0000-00-00'
9
+ version: '1.0.0'
10
+ purpose: Auto-generated mapping of symptom keys (alert names, user phrases, error patterns) to playbook anchors and their fact citations.
11
+ ---
12
+
13
+ # Symptoms Index
14
+
15
+ <!-- Auto-generated by `hewtd maintain`. Do not edit by hand — changes will be overwritten. -->
16
+
17
+ _No symptoms blocks found in scanned playbooks. Add a `symptoms:` block to any playbook frontmatter to populate this index._
@@ -3,7 +3,7 @@ title: Procedures Documentation Index
3
3
  tier: reference
4
4
  domains: [procedures]
5
5
  status: active
6
- last_updated: '2026-09-26'
6
+ last_updated: '2026-10-23'
7
7
  version: '1.0.0'
8
8
  purpose: Complete listing of procedures documentation
9
9
  ---
@@ -25,7 +25,7 @@ purpose: Complete listing of procedures documentation
25
25
 
26
26
  | Document | Status | Updated | Words |
27
27
  |----------|--------|---------|-------|
28
- | [Plan Completion and Archive](plan-completion-and-archive.md) | active | 2026-08-31 | 812 |
28
+ | [Plan Completion and Archive](plan-completion-and-archive.md) | active | 2026-10-23 | 812 |
29
29
  | [Plugin update delivery — what actually runs, and when](plugin-update-delivery.md) | active | 2026-09-04 | 539 |
30
30
 
31
31
  ## Keywords
@@ -40,4 +40,4 @@ This domain covers: procedure, procedures, sop, standard-operating-procedure, st
40
40
 
41
41
  ---
42
42
 
43
- *Last updated: 2026-09-26*
43
+ *Last updated: 2026-10-23*
@@ -3,7 +3,7 @@ title: Procedures Registry
3
3
  tier: reference
4
4
  domains: [procedures]
5
5
  status: active
6
- last_updated: '2026-09-26'
6
+ last_updated: '2026-10-23'
7
7
  version: '1.0.0'
8
8
  purpose: Quick reference for procedures documentation
9
9
  ---
@@ -27,8 +27,8 @@ purpose: Quick reference for procedures documentation
27
27
 
28
28
  ## Recently Updated
29
29
 
30
+ - [Plan Completion and Archive](plan-completion-and-archive.md) - 2026-10-23
30
31
  - [Plugin update delivery — what actually runs, and when](plugin-update-delivery.md) - 2026-09-04
31
- - [Plan Completion and Archive](plan-completion-and-archive.md) - 2026-08-31
32
32
 
33
33
  ## By Status
34
34
 
@@ -50,4 +50,4 @@ purpose: Quick reference for procedures documentation
50
50
 
51
51
  ---
52
52
 
53
- *Last updated: 2026-09-26*
53
+ *Last updated: 2026-10-23*
@@ -7,7 +7,7 @@ audience:
7
7
  - developers
8
8
  tags: []
9
9
  status: active
10
- last_updated: '2026-08-31'
10
+ last_updated: '2026-10-23'
11
11
  version: 1.0.0
12
12
  purpose: How persistent-planning decides a plan is finished, how that reaches
13
13
  the agent automatically, and the procedure for retiring a completed plan into
@@ -104,17 +104,22 @@ Archiving performs four steps:
104
104
 
105
105
  1. Verifies completion (skipped under `--force`).
106
106
  2. Ensures `.planning/.archive/` exists and is in `.gitignore`.
107
- 3. Moves `.planning/<slug>/` → `.planning/.archive/<slug>/`, preferring `git mv`
108
- when the plan is tracked so history follows it.
107
+ 3. Moves `.planning/<slug>/` → `.planning/.archive/<slug>/`. If the plan is tracked,
108
+ it is also removed from git's index (`git rm -r --cached`; the files stay on
109
+ disk), so the archive is local history and the next commit shows the plan as
110
+ deleted. Its history stays in git. A plan with **staged** changes stays tracked
111
+ with a warning, because untracking would drop content that only the index holds.
112
+ Commit or unstage, then run `git rm -r --cached .planning/<slug>`.
109
113
  4. Stamps the top-level artifact: `status: archived` + `archived_on` in
110
114
  frontmatter, or a dated footer for sm plans that have none.
111
115
 
112
- **Nothing is ever deleted.** Archiving is a move plus a stamp.
116
+ **Nothing is ever deleted.** Archiving is a move plus a stamp; the git side is an untrack, not a delete.
113
117
 
114
118
  ## Restoring an archived plan
115
119
 
116
120
  ```bash
117
121
  mv .planning/.archive/<slug> .planning/<slug>
122
+ git add .planning/<slug> # it was untracked when archived
118
123
  ```
119
124
 
120
125
  Then set `status:` back to `active` and remove the `archived_on` stamp. The plan
@@ -129,7 +134,8 @@ resumes reading as in-progress the moment a box is unchecked.
129
134
  | `archive-plan.sh` refuses | The plan is genuinely incomplete | Finish it. `--force` exists for deliberate abandonment, not for impatience |
130
135
  | "Already archived: … exists" | A plan with that slug was archived before | Rename or move the existing entry under `.planning/.archive/` first |
131
136
  | Nudge never appears | No `.planning/` directory, or no plan is complete, or the hook is not registered | `npx persistent-planning status` reports hook registration |
132
- | Archived plans show up in `git status` | `.planning/` is tracked in this repo and the ignore line was added after the fact | Ensure `.gitignore` has `.planning/.archive/`; `git rm -r --cached .planning/.archive` if already tracked |
137
+ | Archived plans show up in `git status` / are tracked under `.archive/` | Archived before the fix for #26: `archive-plan.sh` used `git mv` and kept them tracked ([#26](https://github.com/the-glitch-kingdom/persistent-planning/issues/26)); or the ignore line was added after the fact | Ensure `.gitignore` has `.planning/.archive/`, then `git rm -r --cached .planning/.archive` (stage any pending stamp first: `git add -f .planning/.archive/*/phase.md`). Files stay on disk |
138
+ | "Archived on disk, but git still tracks …" warning | The plan had staged changes; untracking would have dropped them | Commit or unstage them, then `git rm -r --cached .planning/<slug>` |
133
139
 
134
140
  ## Design notes
135
141
 
@@ -3,7 +3,7 @@ title: Standards Documentation Index
3
3
  tier: reference
4
4
  domains: [standards]
5
5
  status: active
6
- last_updated: '2026-09-26'
6
+ last_updated: '2026-10-23'
7
7
  version: '1.0.0'
8
8
  purpose: Complete listing of standards documentation
9
9
  ---
@@ -26,7 +26,7 @@ purpose: Complete listing of standards documentation
26
26
  | Document | Status | Updated | Words |
27
27
  |----------|--------|---------|-------|
28
28
  | [Atom Granularity (anti-pattern guide)](atom-granularity.md) | active | 2026-05-07 | 556 |
29
- | [Mandatory Closing Phases](mandatory-closing-phases.md) | active | 2026-08-31 | 770 |
29
+ | [Mandatory Closing Phases](mandatory-closing-phases.md) | active | 2026-10-23 | 770 |
30
30
 
31
31
  ## Keywords
32
32
 
@@ -40,4 +40,4 @@ This domain covers: standard, standards, convention, conventions, pattern, patte
40
40
 
41
41
  ---
42
42
 
43
- *Last updated: 2026-09-26*
43
+ *Last updated: 2026-10-23*
@@ -3,7 +3,7 @@ title: Standards Registry
3
3
  tier: reference
4
4
  domains: [standards]
5
5
  status: active
6
- last_updated: '2026-09-26'
6
+ last_updated: '2026-10-23'
7
7
  version: '1.0.0'
8
8
  purpose: Quick reference for standards documentation
9
9
  ---
@@ -27,7 +27,7 @@ purpose: Quick reference for standards documentation
27
27
 
28
28
  ## Recently Updated
29
29
 
30
- - [Mandatory Closing Phases](mandatory-closing-phases.md) - 2026-08-31
30
+ - [Mandatory Closing Phases](mandatory-closing-phases.md) - 2026-10-23
31
31
  - [Atom Granularity (anti-pattern guide)](atom-granularity.md) - 2026-05-07
32
32
 
33
33
  ## By Status
@@ -50,4 +50,4 @@ purpose: Quick reference for standards documentation
50
50
 
51
51
  ---
52
52
 
53
- *Last updated: 2026-09-26*
53
+ *Last updated: 2026-10-23*
@@ -8,7 +8,7 @@ audience:
8
8
  tags:
9
9
  - testing
10
10
  status: active
11
- last_updated: '2026-08-31'
11
+ last_updated: '2026-10-23'
12
12
  version: 1.0.0
13
13
  purpose: The three phases every persistent-planning plan must end with — cleanup,
14
14
  then validate success through comprehensive testing, then a documentation pass —
@@ -105,13 +105,54 @@ change validates nothing. For this repository that means adding assertions to
105
105
  command is. Mutation-check the assertion at least once: break the thing on
106
106
  purpose, confirm the test goes red, put it back.
107
107
 
108
+ The templates carry the sentence "we need to validate success thoroughly through
109
+ comprehensive testing of our changes" plus an instruction to write the concrete
110
+ checks into the plan *when the plan is written*. sm: under Phase 6. lg: as atoms of
111
+ the validation task. Without that, a plan got a one-line testing phase and the
112
+ user had to say the sentence afterwards to get real tests planned. The
113
+ `persistent-planning.md` rule repeats it so it is in context every session.
114
+
108
115
  **Documentation pass.** Create, update, or deprecate every doc the change
109
116
  touches, answering: what it is, where it lives, how to fix it, how to operate it,
110
117
  and why it matters. Deprecation counts — a doc made wrong by the change is worse
111
118
  than a missing one. If [hit-em-with-the-docs](https://github.com/TheGlitchKing/hit-em-with-the-docs)
112
119
  is installed, this pass **must** go through it (`hewtd integrate`, `hewtd
113
120
  archive`, `hewtd maintain`) rather than hand-managed markdown, so the doc lands
114
- in a domain and the indexes stay honest.
121
+ in a domain and the indexes stay honest. Every variant also says to capture new
122
+ procedures, tools, troubleshooting steps, gotchas and KB articles, and **never**
123
+ to include secrets or passwords.
124
+
125
+ Like validation, the docs step asks to be filled in when the plan is written,
126
+ naming each doc, by file, that the work creates, changes or makes stale. sm: in the
127
+ note under the phase list. lg: the docs closer's first atom and the `phase.md`
128
+ note. A behaviour test showed why: without that instruction, a planner filled
129
+ the validation closer with specific checks and left the docs closer generic. It
130
+ missed the project's own feature doc, which the change made wrong.
131
+
132
+ When the project uses hit-em-with-the-docs, the init scripts word this step for
133
+ it rather than leaving "if installed" for Claude to work out. A project counts if
134
+ it has a `.documentation/` tree or `.claude/hit-em-with-the-docs.json`
135
+ (`planning_uses_hewtd`; sm has its own copy). hewtd being installed for the whole
136
+ machine does not count.
137
+
138
+ - **sm:** Phase 7 reads "Documentation pass -- a full hit-em-with-the-docs pass to
139
+ create/update/deprecate as many docs as needed to capture all our changes: new
140
+ procedures, tools, troubleshooting steps, gotchas, KB articles, etc. Never
141
+ include secrets or passwords".
142
+ - **lg:** the docs closer's list line in `phase.md` says the same thing (the
143
+ `DOCS_CLOSER_PLACEHOLDER` slot). Its task is titled "Documentation pass — full
144
+ hit-em-with-the-docs pass", and its atoms cover `hewtd integrate`/`archive`,
145
+ procedures and tools, troubleshooting, gotchas as knowledge-base facts tagged
146
+ `gotcha`, KB articles, never secrets, and `hewtd maintain --quick` + `hewtd
147
+ audit`.
148
+
149
+ Elsewhere the wording is unchanged, and lg plans no longer get the
150
+ `npx hewtd archive`/`npx hewtd audit` atoms they used to receive unconditionally.
151
+ The slug `documentation-pass-create-update-deprecate-docs` is the same in both
152
+ variants, because the completion gate and existing plans key on it. The choice is
153
+ made once, when the plan is written. A project that adopts hewtd later keeps its
154
+ existing plans' wording; new plans pick it up. See
155
+ [docs step has no hewtd steps](../troubleshooting/docs-closer-missing-hewtd-steps.md).
115
156
 
116
157
  ## How to operate it
117
158
 
@@ -3,7 +3,7 @@ title: Troubleshooting Documentation Index
3
3
  tier: reference
4
4
  domains: [troubleshooting]
5
5
  status: active
6
- last_updated: '2026-09-26'
6
+ last_updated: '2026-10-23'
7
7
  version: '1.0.0'
8
8
  purpose: Complete listing of troubleshooting documentation
9
9
  ---
@@ -14,7 +14,7 @@ purpose: Complete listing of troubleshooting documentation
14
14
 
15
15
  ## Overview
16
16
 
17
- - **Total Documents:** 2
17
+ - **Total Documents:** 3
18
18
  - **Domain:** `troubleshooting/`
19
19
  - **Category:** advanced
20
20
  - **Load Priority:** 6/10
@@ -25,6 +25,7 @@ purpose: Complete listing of troubleshooting documentation
25
25
 
26
26
  | Document | Status | Updated | Words |
27
27
  |----------|--------|---------|-------|
28
+ | [A plan's docs step has no hit-em-with-the-docs steps](docs-closer-missing-hewtd-steps.md) | active | 2026-10-23 | 224 |
28
29
  | [A plan won't read COMPLETE](plan-never-reads-complete.md) | active | 2026-09-04 | 264 |
29
30
  | [Stale skill directory — commands run frozen code](stale-skill-dir-drift.md) | active | 2026-09-04 | 403 |
30
31
 
@@ -40,4 +41,4 @@ This domain covers: troubleshooting, troubleshoot, debug, debugging, issue, issu
40
41
 
41
42
  ---
42
43
 
43
- *Last updated: 2026-09-26*
44
+ *Last updated: 2026-10-23*
@@ -3,7 +3,7 @@ title: Troubleshooting Registry
3
3
  tier: reference
4
4
  domains: [troubleshooting]
5
5
  status: active
6
- last_updated: '2026-09-26'
6
+ last_updated: '2026-10-23'
7
7
  version: '1.0.0'
8
8
  purpose: Quick reference for troubleshooting documentation
9
9
  ---
@@ -16,17 +16,19 @@ purpose: Quick reference for troubleshooting documentation
16
16
 
17
17
  | Metric | Value |
18
18
  |--------|-------|
19
- | Documents | 2 |
19
+ | Documents | 3 |
20
20
  | Category | advanced |
21
21
  | Load Priority | 6/10 |
22
22
 
23
23
  ## Active Documents
24
24
 
25
+ - [A plan's docs step has no hit-em-with-the-docs steps](docs-closer-missing-hewtd-steps.md)
25
26
  - [A plan won't read COMPLETE](plan-never-reads-complete.md)
26
27
  - [Stale skill directory — commands run frozen code](stale-skill-dir-drift.md)
27
28
 
28
29
  ## Recently Updated
29
30
 
31
+ - [A plan's docs step has no hit-em-with-the-docs steps](docs-closer-missing-hewtd-steps.md) - 2026-10-23
30
32
  - [A plan won't read COMPLETE](plan-never-reads-complete.md) - 2026-09-04
31
33
  - [Stale skill directory — commands run frozen code](stale-skill-dir-drift.md) - 2026-09-04
32
34
 
@@ -34,7 +36,7 @@ purpose: Quick reference for troubleshooting documentation
34
36
 
35
37
  | Status | Count |
36
38
  |--------|-------|
37
- | active | 2 |
39
+ | active | 3 |
38
40
  | draft | 0 |
39
41
  | deprecated | 0 |
40
42
  | archived | 0 |
@@ -50,4 +52,4 @@ purpose: Quick reference for troubleshooting documentation
50
52
 
51
53
  ---
52
54
 
53
- *Last updated: 2026-09-26*
55
+ *Last updated: 2026-10-23*