@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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.documentation/INDEX.md +6 -5
- package/.documentation/knowledge-base/facts/INDEX.md +59 -0
- package/.documentation/knowledge-base/facts/babel-fish-hook-adds-untracked-map.md +56 -0
- package/.documentation/knowledge-base/facts/claude-code-grep-v-exit-status.md +55 -0
- package/.documentation/knowledge-base/facts/git-rm-cached-moved-path-drops-staged.md +56 -0
- package/.documentation/knowledge-base/incidents/INDEX.md +17 -0
- package/.documentation/knowledge-base/symptoms/INDEX.md +17 -0
- package/.documentation/procedures/INDEX.md +3 -3
- package/.documentation/procedures/REGISTRY.md +3 -3
- package/.documentation/procedures/plan-completion-and-archive.md +11 -5
- package/.documentation/standards/INDEX.md +3 -3
- package/.documentation/standards/REGISTRY.md +3 -3
- package/.documentation/standards/mandatory-closing-phases.md +43 -2
- package/.documentation/troubleshooting/INDEX.md +4 -3
- package/.documentation/troubleshooting/REGISTRY.md +6 -4
- package/.documentation/troubleshooting/docs-closer-missing-hewtd-steps.md +57 -0
- package/.documentation/troubleshooting/stale-skill-dir-drift.md +4 -2
- package/CHANGELOG.md +62 -0
- package/commands/start-planning.md +12 -0
- package/package.json +1 -1
- package/scripts/archive-plan.sh +20 -6
- package/scripts/init-atom.sh +2 -0
- package/scripts/init-phase.sh +42 -9
- package/scripts/init-planning.sh +60 -4
- package/scripts/init-task.sh +2 -0
- package/scripts/lib/planning.sh +61 -0
- package/skills/persistent-planning/SKILL.md +16 -3
- package/templates/git-workflow-section.md +11 -0
- package/templates/lg/phase.md +12 -2
- 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.
|
|
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.
|
|
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.
|
|
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"
|
package/.documentation/INDEX.md
CHANGED
|
@@ -3,7 +3,7 @@ title: Documentation Index
|
|
|
3
3
|
tier: reference
|
|
4
4
|
domains: [root]
|
|
5
5
|
status: active
|
|
6
|
-
last_updated: '2026-
|
|
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) |
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
108
|
-
|
|
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`
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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:**
|
|
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-
|
|
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-
|
|
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 |
|
|
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 |
|
|
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-
|
|
55
|
+
*Last updated: 2026-10-23*
|