@unbrained/pm-cli 2026.5.1 → 2026.5.2

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 (201) hide show
  1. package/CHANGELOG.md +20 -4
  2. package/CONTRIBUTING.md +11 -5
  3. package/PRD.md +17 -1
  4. package/README.md +49 -1101
  5. package/SECURITY.md +6 -11
  6. package/dist/cli/commands/activity.d.ts +10 -0
  7. package/dist/cli/commands/activity.js +13 -1
  8. package/dist/cli/commands/activity.js.map +1 -1
  9. package/dist/cli/commands/aggregate.js.map +1 -1
  10. package/dist/cli/commands/append.js.map +1 -1
  11. package/dist/cli/commands/calendar.js +16 -5
  12. package/dist/cli/commands/calendar.js.map +1 -1
  13. package/dist/cli/commands/claim.js.map +1 -1
  14. package/dist/cli/commands/close.js.map +1 -1
  15. package/dist/cli/commands/comments-audit.js.map +1 -1
  16. package/dist/cli/commands/comments.js.map +1 -1
  17. package/dist/cli/commands/completion.js.map +1 -1
  18. package/dist/cli/commands/config.js.map +1 -1
  19. package/dist/cli/commands/context.js +22 -0
  20. package/dist/cli/commands/context.js.map +1 -1
  21. package/dist/cli/commands/contracts.js.map +1 -1
  22. package/dist/cli/commands/create.js +2 -2
  23. package/dist/cli/commands/create.js.map +1 -1
  24. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  25. package/dist/cli/commands/delete.js.map +1 -1
  26. package/dist/cli/commands/deps.js.map +1 -1
  27. package/dist/cli/commands/docs.js.map +1 -1
  28. package/dist/cli/commands/extension.js.map +1 -1
  29. package/dist/cli/commands/files.js +14 -2
  30. package/dist/cli/commands/files.js.map +1 -1
  31. package/dist/cli/commands/gc.js.map +1 -1
  32. package/dist/cli/commands/get.js.map +1 -1
  33. package/dist/cli/commands/health.js +16 -12
  34. package/dist/cli/commands/health.js.map +1 -1
  35. package/dist/cli/commands/history.js.map +1 -1
  36. package/dist/cli/commands/index.js.map +1 -1
  37. package/dist/cli/commands/init.js.map +1 -1
  38. package/dist/cli/commands/learnings.js.map +1 -1
  39. package/dist/cli/commands/list.d.ts +1 -0
  40. package/dist/cli/commands/list.js +10 -2
  41. package/dist/cli/commands/list.js.map +1 -1
  42. package/dist/cli/commands/normalize.js +5 -17
  43. package/dist/cli/commands/normalize.js.map +1 -1
  44. package/dist/cli/commands/notes.js.map +1 -1
  45. package/dist/cli/commands/reindex.js.map +1 -1
  46. package/dist/cli/commands/restore.js.map +1 -1
  47. package/dist/cli/commands/search.js.map +1 -1
  48. package/dist/cli/commands/stats.js.map +1 -1
  49. package/dist/cli/commands/templates.js.map +1 -1
  50. package/dist/cli/commands/test-all.js.map +1 -1
  51. package/dist/cli/commands/test-runs.js.map +1 -1
  52. package/dist/cli/commands/test.js.map +1 -1
  53. package/dist/cli/commands/update-many.js +1 -6
  54. package/dist/cli/commands/update-many.js.map +1 -1
  55. package/dist/cli/commands/update.js +2 -2
  56. package/dist/cli/commands/update.js.map +1 -1
  57. package/dist/cli/commands/validate.js +23 -18
  58. package/dist/cli/commands/validate.js.map +1 -1
  59. package/dist/cli/error-guidance.js +13 -2
  60. package/dist/cli/error-guidance.js.map +1 -1
  61. package/dist/cli/extension-command-options.js.map +1 -1
  62. package/dist/cli/help-content.js.map +1 -1
  63. package/dist/cli/main.js +29 -13
  64. package/dist/cli/main.js.map +1 -1
  65. package/dist/cli.d.ts +1 -1
  66. package/dist/cli.js +3 -1
  67. package/dist/cli.js.map +1 -1
  68. package/dist/core/extensions/extension-types.d.ts +605 -0
  69. package/dist/core/extensions/extension-types.js +22 -0
  70. package/dist/core/extensions/extension-types.js.map +1 -0
  71. package/dist/core/extensions/index.js.map +1 -1
  72. package/dist/core/extensions/item-fields.js.map +1 -1
  73. package/dist/core/extensions/loader.d.ts +2 -586
  74. package/dist/core/extensions/loader.js +3 -21
  75. package/dist/core/extensions/loader.js.map +1 -1
  76. package/dist/core/extensions/runtime-registrations.js.map +1 -1
  77. package/dist/core/fs/fs-utils.js.map +1 -1
  78. package/dist/core/fs/index.js.map +1 -1
  79. package/dist/core/history/history-stream-policy.js.map +1 -1
  80. package/dist/core/history/history.js.map +1 -1
  81. package/dist/core/history/index.js.map +1 -1
  82. package/dist/core/item/id.js.map +1 -1
  83. package/dist/core/item/index.js.map +1 -1
  84. package/dist/core/item/item-format.js.map +1 -1
  85. package/dist/core/item/parent-reference-policy.js.map +1 -1
  86. package/dist/core/item/parse.js +6 -0
  87. package/dist/core/item/parse.js.map +1 -1
  88. package/dist/core/item/sprint-release-format.js.map +1 -1
  89. package/dist/core/item/status.js.map +1 -1
  90. package/dist/core/item/type-registry.js.map +1 -1
  91. package/dist/core/lock/index.js.map +1 -1
  92. package/dist/core/lock/lock.js +1 -6
  93. package/dist/core/lock/lock.js.map +1 -1
  94. package/dist/core/output/command-aware.js.map +1 -1
  95. package/dist/core/output/output.js.map +1 -1
  96. package/dist/core/schema/runtime-field-filters.js.map +1 -1
  97. package/dist/core/schema/runtime-field-values.js.map +1 -1
  98. package/dist/core/schema/runtime-schema.js.map +1 -1
  99. package/dist/core/search/cache.js +1 -7
  100. package/dist/core/search/cache.js.map +1 -1
  101. package/dist/core/search/embedding-batches.js +4 -0
  102. package/dist/core/search/embedding-batches.js.map +1 -1
  103. package/dist/core/search/providers.js +1 -20
  104. package/dist/core/search/providers.js.map +1 -1
  105. package/dist/core/search/semantic-defaults.js.map +1 -1
  106. package/dist/core/search/vector-stores.d.ts +1 -0
  107. package/dist/core/search/vector-stores.js +23 -27
  108. package/dist/core/search/vector-stores.js.map +1 -1
  109. package/dist/core/sentry/helpers.d.ts +6 -0
  110. package/dist/core/sentry/helpers.js +73 -0
  111. package/dist/core/sentry/helpers.js.map +1 -0
  112. package/dist/core/sentry/instrument.d.ts +4 -0
  113. package/dist/core/sentry/instrument.js +173 -0
  114. package/dist/core/sentry/instrument.js.map +1 -0
  115. package/dist/core/shared/command-types.js.map +1 -1
  116. package/dist/core/shared/conflict-markers.js.map +1 -1
  117. package/dist/core/shared/constants.js.map +1 -1
  118. package/dist/core/shared/errors.js.map +1 -1
  119. package/dist/core/shared/index.d.ts +1 -0
  120. package/dist/core/shared/index.js +1 -0
  121. package/dist/core/shared/index.js.map +1 -1
  122. package/dist/core/shared/primitives.d.ts +13 -0
  123. package/dist/core/shared/primitives.js +33 -0
  124. package/dist/core/shared/primitives.js.map +1 -0
  125. package/dist/core/shared/serialization.js.map +1 -1
  126. package/dist/core/shared/text-normalization.js.map +1 -1
  127. package/dist/core/shared/time.js.map +1 -1
  128. package/dist/core/store/index.js.map +1 -1
  129. package/dist/core/store/item-format-migration.js.map +1 -1
  130. package/dist/core/store/item-store.js +44 -35
  131. package/dist/core/store/item-store.js.map +1 -1
  132. package/dist/core/store/paths.js.map +1 -1
  133. package/dist/core/store/settings.js.map +1 -1
  134. package/dist/core/telemetry/consent.js.map +1 -1
  135. package/dist/core/telemetry/runtime.d.ts +2 -0
  136. package/dist/core/telemetry/runtime.js +40 -13
  137. package/dist/core/telemetry/runtime.js.map +1 -1
  138. package/dist/core/test/background-runs.js.map +1 -1
  139. package/dist/core/test/item-test-run-tracking.js.map +1 -1
  140. package/dist/sdk/cli-contracts.js.map +1 -1
  141. package/dist/sdk/index.d.ts +1 -1
  142. package/dist/sdk/index.js.map +1 -1
  143. package/dist/types/index.js.map +1 -1
  144. package/dist/types.js.map +1 -1
  145. package/docs/AGENT_GUIDE.md +125 -0
  146. package/docs/ARCHITECTURE.md +195 -478
  147. package/docs/COMMANDS.md +199 -0
  148. package/docs/CONFIGURATION.md +146 -0
  149. package/docs/EXTENSIONS.md +146 -645
  150. package/docs/QUICKSTART.md +108 -0
  151. package/docs/README.md +70 -0
  152. package/docs/RELEASING.md +51 -36
  153. package/docs/SDK.md +127 -68
  154. package/docs/TESTING.md +125 -0
  155. package/docs/examples/starter-extension/README.md +39 -25
  156. package/package.json +17 -9
  157. package/dist/command-types.d.ts +0 -1
  158. package/dist/command-types.js +0 -2
  159. package/dist/command-types.js.map +0 -1
  160. package/dist/constants.d.ts +0 -1
  161. package/dist/constants.js +0 -2
  162. package/dist/constants.js.map +0 -1
  163. package/dist/errors.d.ts +0 -1
  164. package/dist/errors.js +0 -2
  165. package/dist/errors.js.map +0 -1
  166. package/dist/fs-utils.d.ts +0 -1
  167. package/dist/fs-utils.js +0 -2
  168. package/dist/fs-utils.js.map +0 -1
  169. package/dist/history.d.ts +0 -1
  170. package/dist/history.js +0 -2
  171. package/dist/history.js.map +0 -1
  172. package/dist/id.d.ts +0 -1
  173. package/dist/id.js +0 -2
  174. package/dist/id.js.map +0 -1
  175. package/dist/item-format.d.ts +0 -1
  176. package/dist/item-format.js +0 -2
  177. package/dist/item-format.js.map +0 -1
  178. package/dist/item-store.d.ts +0 -1
  179. package/dist/item-store.js +0 -2
  180. package/dist/item-store.js.map +0 -1
  181. package/dist/lock.d.ts +0 -1
  182. package/dist/lock.js +0 -2
  183. package/dist/lock.js.map +0 -1
  184. package/dist/output.d.ts +0 -1
  185. package/dist/output.js +0 -2
  186. package/dist/output.js.map +0 -1
  187. package/dist/parse.d.ts +0 -1
  188. package/dist/parse.js +0 -2
  189. package/dist/parse.js.map +0 -1
  190. package/dist/paths.d.ts +0 -1
  191. package/dist/paths.js +0 -2
  192. package/dist/paths.js.map +0 -1
  193. package/dist/serialization.d.ts +0 -1
  194. package/dist/serialization.js +0 -2
  195. package/dist/serialization.js.map +0 -1
  196. package/dist/settings.d.ts +0 -1
  197. package/dist/settings.js +0 -2
  198. package/dist/settings.js.map +0 -1
  199. package/dist/time.d.ts +0 -1
  200. package/dist/time.js +0 -2
  201. package/dist/time.js.map +0 -1
@@ -0,0 +1,199 @@
1
+ # Command Reference
2
+
3
+ This is a task-oriented command guide. For exact flags, use runtime help because extensions and settings can change the active surface:
4
+
5
+ ```bash
6
+ pm <command> --help
7
+ pm <command> --help --json
8
+ pm contracts --command <command> --flags-only --json
9
+ ```
10
+
11
+ ## Agent Quick Context
12
+
13
+ - Prefer `pm context`, `pm search`, and narrow list commands before mutation.
14
+ - Prefer TOON for reading and `--json` for strict parsing.
15
+ - Use `pm contracts` for machine clients.
16
+ - Every mutation writes history.
17
+
18
+ Tracked documentation work: [pm-1sb2](../.agents/pm/tasks/pm-1sb2.toon).
19
+
20
+ ## Command Families
21
+
22
+ | Family | Commands | Purpose |
23
+ |--------|----------|---------|
24
+ | Bootstrap | `init`, `config`, `health` | create and inspect tracker setup |
25
+ | Triage | `context`, `search`, `list*`, `aggregate`, `dedupe-audit` | find work and audit decomposition |
26
+ | Lifecycle | `create`, `claim`, `update`, `append`, `close`, `release`, `delete` | mutate item state |
27
+ | Logs | `comments`, `notes`, `learnings`, `comments-audit` | record progress and durable context |
28
+ | Links | `files`, `docs`, `test`, `deps` | connect items to artifacts, tests, and relationships |
29
+ | Verification | `test`, `test-all`, `test-runs`, `validate`, `gc` | run linked tests and repository checks |
30
+ | History | `history`, `activity`, `restore`, `stats` | inspect and recover item state |
31
+ | Calendar | `calendar`, `cal` | project deadlines, reminders, and events |
32
+ | Extensions | `extension`, extension command groups | install, manage, and run extension commands |
33
+ | Machines | `contracts`, `completion`, `help` | expose stable command contracts and shell helpers |
34
+
35
+ ## Bootstrap
36
+
37
+ ```bash
38
+ pm init
39
+ pm config project list
40
+ pm health --check-only
41
+ ```
42
+
43
+ `pm init` creates `.agents/pm`. `pm health --check-only` inspects without refreshing optional search artifacts.
44
+
45
+ ## Triage
46
+
47
+ ```bash
48
+ pm context --limit 10
49
+ pm search "calendar reminder validation" --limit 10
50
+ pm list-open --type Task --priority 1 --limit 20
51
+ pm list-in-progress --limit 20
52
+ pm aggregate --group-by parent,type --status open
53
+ pm dedupe-audit --mode parent_scope --limit 20
54
+ ```
55
+
56
+ Use `context` first for a compact active-work snapshot. Use `search` when the request names a concept, component, or prior issue.
57
+
58
+ ## Create and Update
59
+
60
+ Minimal progressive create:
61
+
62
+ ```bash
63
+ pm create \
64
+ --title "Document command contracts" \
65
+ --description "Add command contract examples for agents." \
66
+ --type Task \
67
+ --status open \
68
+ --priority 1 \
69
+ --create-mode progressive
70
+ ```
71
+
72
+ Strict create is best when metadata is ready:
73
+
74
+ ```bash
75
+ pm create \
76
+ --title "Fix restore replay" \
77
+ --description "Restore should replay patches through the target version." \
78
+ --type Issue \
79
+ --status open \
80
+ --priority 1 \
81
+ --tags "restore,history" \
82
+ --ac "Restore reproduces the target state and has regression coverage." \
83
+ --message "Create restore replay issue"
84
+ ```
85
+
86
+ Update existing work:
87
+
88
+ ```bash
89
+ pm update <id> --status in_progress --message "Start implementation"
90
+ pm update <id> --deadline +1d --estimate 120
91
+ pm update <id> --parent <parent-id>
92
+ pm append <id> --body "Detailed implementation notes."
93
+ ```
94
+
95
+ Use `pm close <id> "<reason>"` instead of `pm update --status closed`.
96
+
97
+ ## Ownership
98
+
99
+ ```bash
100
+ pm claim <id>
101
+ pm release <id>
102
+ pm release <id> --allow-audit-release --author <you>
103
+ ```
104
+
105
+ `claim` is the normal start signal. Use `--force` only when explicitly overriding terminal-state or lock conflicts.
106
+
107
+ ## Logs
108
+
109
+ ```bash
110
+ pm comments <id> "Implemented command parsing fix."
111
+ pm notes <id> --add "Keep renderer changes isolated to TOON output."
112
+ pm learnings <id> --add "Use runtime contracts instead of duplicating flag lists."
113
+ ```
114
+
115
+ Use comments for progress and evidence, notes for implementation context, and learnings for durable future guidance.
116
+
117
+ ## Linked Artifacts
118
+
119
+ ```bash
120
+ pm files <id> --add path=src/cli/main.ts,scope=project,note="command wiring"
121
+ pm files <id> --add-glob "src/cli/**/*.ts"
122
+ pm docs <id> --add path=docs/COMMANDS.md,scope=project,note="public command docs"
123
+ pm deps <id> --format tree
124
+ ```
125
+
126
+ Linked files and docs keep reviews reproducible. `deps` is read-only and projects item relationships.
127
+
128
+ ## Linked Tests
129
+
130
+ ```bash
131
+ pm test <id> --add command="node scripts/run-tests.mjs test -- tests/unit/output.spec.ts",scope=project,timeout_seconds=240
132
+ pm test <id> --run --progress
133
+ pm test-all --status in_progress --progress
134
+ ```
135
+
136
+ Linked test commands should be sandbox-safe. Prefer `node scripts/run-tests.mjs ...` because it sets temporary `PM_PATH` and `PM_GLOBAL_PATH`.
137
+
138
+ Strict linked-test guards:
139
+
140
+ ```bash
141
+ pm test <id> --run \
142
+ --check-context \
143
+ --fail-on-context-mismatch \
144
+ --fail-on-skipped \
145
+ --require-assertions-for-pm
146
+ ```
147
+
148
+ ## Calendar and Context
149
+
150
+ ```bash
151
+ pm calendar --view week --date today --full-period
152
+ pm calendar --from today --to +7d --include deadlines,reminders,events
153
+ pm context --from today --to +7d --limit 10
154
+ ```
155
+
156
+ `calendar` defaults to markdown for human and agent readability. Other commands default to TOON unless configured otherwise.
157
+
158
+ ## Validation and Maintenance
159
+
160
+ ```bash
161
+ pm validate --check-resolution --check-history-drift
162
+ pm validate --check-files --scan-mode tracked-all
163
+ pm normalize --dry-run --json
164
+ pm gc --dry-run
165
+ ```
166
+
167
+ Use dry-run modes before broad lifecycle or cleanup changes.
168
+
169
+ ## History and Recovery
170
+
171
+ ```bash
172
+ pm history <id> --limit 20
173
+ pm history <id> --diff --verify
174
+ pm activity --id <id> --limit 50
175
+ pm restore <id> <timestamp-or-version>
176
+ ```
177
+
178
+ History is append-only. Restore appends a new restore event instead of rewriting old history.
179
+
180
+ ## Machine Contracts
181
+
182
+ ```bash
183
+ pm contracts --json
184
+ pm contracts --command create --flags-only --json
185
+ pm contracts --action create --schema-only --json
186
+ pm help create --json
187
+ ```
188
+
189
+ Agents should use runtime contracts instead of hard-coding flag lists. Contract output includes extension-provided command surfaces when active.
190
+
191
+ ## Completion
192
+
193
+ ```bash
194
+ pm completion bash
195
+ pm completion zsh
196
+ pm completion fish
197
+ ```
198
+
199
+ Generated completions resolve tags lazily by default. Use `--eager-tags` only when embedding static tags is required.
@@ -0,0 +1,146 @@
1
+ # Configuration
2
+
3
+ `pm` reads settings from the project tracker root and optional global profile. Use this page for public, user-facing configuration. Use `pm config ... list` and `pm config ... export` for the active runtime shape.
4
+
5
+ ## Agent Quick Context
6
+
7
+ - Do not override `PM_PATH` for real repository tracking.
8
+ - Do set `PM_AUTHOR` for maintainer and agent mutations.
9
+ - Use `--json` only when strict parsing is needed.
10
+ - Use `pm contracts` for current command/schema metadata.
11
+
12
+ Tracked documentation work: [pm-1sb2](../.agents/pm/tasks/pm-1sb2.toon).
13
+
14
+ ## Configuration Commands
15
+
16
+ ```bash
17
+ pm config project list
18
+ pm config project export --json
19
+ pm config project get item-format --json
20
+ pm config project set item-format --format toon
21
+ pm config project set test-result-tracking --policy enabled
22
+ ```
23
+
24
+ Scopes:
25
+
26
+ - `project` updates `.agents/pm/settings.json`.
27
+ - `global` updates the global profile under `PM_GLOBAL_PATH` or the default global root.
28
+
29
+ Precedence:
30
+
31
+ 1. CLI flags
32
+ 2. environment variables
33
+ 3. project settings
34
+ 4. global settings
35
+ 5. built-in defaults
36
+
37
+ ## Common Settings
38
+
39
+ | Setting | Purpose |
40
+ |---------|---------|
41
+ | `id_prefix` | generated item ID prefix, default `pm-` |
42
+ | `author_default` | fallback mutation author |
43
+ | `item_format` | `toon` or `json_markdown` item files |
44
+ | `output.default_format` | default renderer, usually `toon` |
45
+ | `locks.ttl_seconds` | stale lock threshold |
46
+ | `history.missing_stream` | `auto_create` or `strict_error` |
47
+ | `testing.record_results_to_items` | persist bounded linked-test summaries |
48
+ | `validation.sprint_release_format` | `warn` or `strict_error` |
49
+ | `validation.parent_reference` | `warn` or `strict_error` |
50
+ | `item_types.definitions[]` | custom item types and type options |
51
+ | `search.*` | search mode, scoring, providers, and vector settings |
52
+
53
+ ## Environment Variables
54
+
55
+ | Variable | Use |
56
+ |----------|-----|
57
+ | `PM_AUTHOR` | explicit mutation author |
58
+ | `PM_PATH` | override project tracker root for tests or sandboxes |
59
+ | `PM_GLOBAL_PATH` | override global profile root for tests or sandboxes |
60
+ | `PM_OLLAMA_MODEL` | choose default Ollama embedding model |
61
+ | `PM_DISABLE_OLLAMA_AUTO_DEFAULTS` | disable implicit Ollama search defaults |
62
+
63
+ Tests should set both `PM_PATH` and `PM_GLOBAL_PATH` to temporary directories. The wrapper `node scripts/run-tests.mjs ...` does that automatically.
64
+
65
+ ## Item Storage Format
66
+
67
+ TOON is the default:
68
+
69
+ ```bash
70
+ pm config project set item-format --format toon
71
+ ```
72
+
73
+ JSON-front-matter markdown is also supported:
74
+
75
+ ```bash
76
+ pm config project set item-format --format json_markdown
77
+ ```
78
+
79
+ Changing item format runs migration on item files. History stays JSONL.
80
+
81
+ ## Output Format
82
+
83
+ Most commands default to sparse TOON:
84
+
85
+ ```bash
86
+ pm list-open --limit 10
87
+ ```
88
+
89
+ Use JSON for strict machine parsing:
90
+
91
+ ```bash
92
+ pm get <id> --json
93
+ pm contracts --json
94
+ ```
95
+
96
+ `pm calendar` defaults to markdown because date-centric summaries are easier to scan in that format.
97
+
98
+ ## Validation Policies
99
+
100
+ ```bash
101
+ pm config project set sprint-release-format-policy --policy warn
102
+ pm config project set parent-reference-policy --policy strict_error
103
+ pm config project set history-missing-stream-policy --policy auto_create
104
+ pm config project set test-result-tracking --policy enabled
105
+ ```
106
+
107
+ Use standalone checks when validating a repository:
108
+
109
+ ```bash
110
+ pm validate --check-resolution --check-history-drift
111
+ pm validate --check-files --scan-mode tracked-all
112
+ pm health --check-only
113
+ ```
114
+
115
+ ## Search Configuration
116
+
117
+ Keyword search is always available:
118
+
119
+ ```bash
120
+ pm search "release docs" --mode keyword --limit 10
121
+ ```
122
+
123
+ Semantic and hybrid search can use built-in OpenAI-compatible or Ollama providers plus vector stores such as Qdrant or LanceDB. If local Ollama is available and semantic settings are unset, `pm` can resolve local defaults automatically.
124
+
125
+ Useful commands:
126
+
127
+ ```bash
128
+ pm search "calendar reminders" --mode hybrid --limit 10
129
+ pm reindex --mode hybrid --progress
130
+ pm health --check-only
131
+ ```
132
+
133
+ ## Custom Item Types
134
+
135
+ Custom item types can be defined in settings and by extensions. Runtime type resolution affects create/update validation, list/search/calendar filters, completions, and storage folders.
136
+
137
+ Use runtime contracts for exact active types:
138
+
139
+ ```bash
140
+ pm contracts --json
141
+ pm create --help --type Task
142
+ ```
143
+
144
+ ## Public Documentation Boundary
145
+
146
+ Public docs should describe supported user configuration only. Ignored local operations material, unpublished evidence logs, credentials, hostnames, and private service details must stay outside tracked docs and package output.