llm-wb 0.1.0-beta.0

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 (170) hide show
  1. package/.agentic/00.chat/README.md +78 -0
  2. package/.agentic/00.chat/checklists/before-commit.md +195 -0
  3. package/.agentic/00.chat/checklists/llm-workbench-public-beta.md +94 -0
  4. package/.agentic/00.chat/commands/README.md +108 -0
  5. package/.agentic/00.chat/migration-plan.md +132 -0
  6. package/.agentic/00.chat/skills/session-summary.md +48 -0
  7. package/.agentic/00.chat/standards/llm-workbench-public-beta-contract.md +216 -0
  8. package/.agentic/00.chat/standards/main-refresh-conflict-types.md +358 -0
  9. package/.agentic/00.chat/workflows/README.md +40 -0
  10. package/.agentic/00.chat/workflows/bootstrap-chat-workbench-repo.md +212 -0
  11. package/.agentic/00.chat/workflows/chat-cleanup.md +102 -0
  12. package/.agentic/00.chat/workflows/chat-commit.md +56 -0
  13. package/.agentic/00.chat/workflows/chat-promote-to-main.md +169 -0
  14. package/.agentic/00.chat/workflows/chat-refresh-from-main.md +242 -0
  15. package/.agentic/00.chat/workflows/chat-reporting.md +69 -0
  16. package/.agentic/00.chat/workflows/chat-start.md +173 -0
  17. package/.agentic/00.chat/workflows/chat-upstream-reusable-lesson.md +123 -0
  18. package/.agentic/shared/standards/README.md +32 -0
  19. package/.agentic/shared/standards/upstream-repo-bootstrap.md +131 -0
  20. package/.agentic/shared/workflows/README.md +35 -0
  21. package/.agentic/shared/workflows/capability-resolution-workflow.md +189 -0
  22. package/.agentic/shared/workflows/change-shared-process.md +92 -0
  23. package/.cursor/rules/llm-workbench.mdc +17 -0
  24. package/.github/copilot-instructions.md +16 -0
  25. package/AGENTS.md +63 -0
  26. package/CLAUDE.md +16 -0
  27. package/CONTRIBUTING.md +57 -0
  28. package/LICENSE +21 -0
  29. package/LLM_WORKBENCH.md +17 -0
  30. package/README.md +98 -0
  31. package/SECURITY.md +44 -0
  32. package/bin/llm-workbench.js +672 -0
  33. package/docs/00.chat/README.md +47 -0
  34. package/docs/00.chat/llm-workbench-acceptance-matrix.md +55 -0
  35. package/docs/00.chat/script-layout.md +107 -0
  36. package/docs/adapting-to-your-repo.md +29 -0
  37. package/docs/concepts.md +38 -0
  38. package/docs/install.md +114 -0
  39. package/docs/public-beta-contract.md +45 -0
  40. package/docs/workflows.md +103 -0
  41. package/examples/minimal-repo/README.md +13 -0
  42. package/package.json +93 -0
  43. package/scripts/00.chat/README.md +46 -0
  44. package/scripts/00.chat/bootstrap/README.md +35 -0
  45. package/scripts/00.chat/bootstrap/audit-chat-bootstrap-file-set/README.md +39 -0
  46. package/scripts/00.chat/bootstrap/audit-chat-bootstrap-file-set/script.sh +213 -0
  47. package/scripts/00.chat/closeout/README.md +30 -0
  48. package/scripts/00.chat/closeout/build-closeout-prompt/README.md +35 -0
  49. package/scripts/00.chat/closeout/build-closeout-prompt/script.sh +124 -0
  50. package/scripts/00.chat/command/README.md +31 -0
  51. package/scripts/00.chat/command/close/README.md +30 -0
  52. package/scripts/00.chat/command/close/script.sh +25 -0
  53. package/scripts/00.chat/command/dispatcher/README.md +46 -0
  54. package/scripts/00.chat/command/dispatcher/script.sh +91 -0
  55. package/scripts/00.chat/command/dispatcher/smoke-test.sh +168 -0
  56. package/scripts/00.chat/command/new/README.md +32 -0
  57. package/scripts/00.chat/command/new/script.sh +28 -0
  58. package/scripts/00.chat/command/open-window/README.md +38 -0
  59. package/scripts/00.chat/command/open-window/script.sh +25 -0
  60. package/scripts/00.chat/command/package-scripts/README.md +34 -0
  61. package/scripts/00.chat/command/package-scripts/smoke-test.sh +113 -0
  62. package/scripts/00.chat/git/README.md +30 -0
  63. package/scripts/00.chat/git/cleanup-empty-chat-branches/README.md +36 -0
  64. package/scripts/00.chat/git/cleanup-empty-chat-branches/script.sh +243 -0
  65. package/scripts/00.chat/git/cleanup-empty-chat-branches/smoke-test.sh +136 -0
  66. package/scripts/00.chat/local-merge/README.md +30 -0
  67. package/scripts/00.chat/local-merge/list-active-chat-branches/README.md +29 -0
  68. package/scripts/00.chat/local-merge/list-active-chat-branches/script.sh +109 -0
  69. package/scripts/00.chat/local-merge/report-chat-branch-overlaps/README.md +29 -0
  70. package/scripts/00.chat/local-merge/report-chat-branch-overlaps/script.sh +142 -0
  71. package/scripts/00.chat/local-merge/verify-chat-ready-to-merge-local-main/README.md +33 -0
  72. package/scripts/00.chat/local-merge/verify-chat-ready-to-merge-local-main/script.sh +345 -0
  73. package/scripts/00.chat/local-merge/verify-chat-ready-to-merge-local-main/smoke-test.sh +244 -0
  74. package/scripts/00.chat/main-refresh/README.md +39 -0
  75. package/scripts/00.chat/main-refresh/apply-rehearsed-refresh/README.md +32 -0
  76. package/scripts/00.chat/main-refresh/apply-rehearsed-refresh/script.sh +198 -0
  77. package/scripts/00.chat/main-refresh/check-chat-is-current-with-main/README.md +30 -0
  78. package/scripts/00.chat/main-refresh/check-chat-is-current-with-main/script.sh +121 -0
  79. package/scripts/00.chat/main-refresh/classify-conflict/README.md +39 -0
  80. package/scripts/00.chat/main-refresh/classify-conflict/script.sh +169 -0
  81. package/scripts/00.chat/main-refresh/classify-conflict/smoke-test.sh +137 -0
  82. package/scripts/00.chat/main-refresh/classify-refresh-readiness/README.md +35 -0
  83. package/scripts/00.chat/main-refresh/classify-refresh-readiness/script.sh +171 -0
  84. package/scripts/00.chat/main-refresh/classify-refresh-readiness/smoke-test.sh +132 -0
  85. package/scripts/00.chat/main-refresh/rehearse-refresh-from-main/README.md +34 -0
  86. package/scripts/00.chat/main-refresh/rehearse-refresh-from-main/script.sh +124 -0
  87. package/scripts/00.chat/main-refresh/rehearse-refresh-from-main/smoke-test.sh +257 -0
  88. package/scripts/00.chat/main-refresh/show-main-update-status/README.md +31 -0
  89. package/scripts/00.chat/main-refresh/show-main-update-status/script.sh +73 -0
  90. package/scripts/00.chat/main-refresh/verify-conflict-audit/README.md +37 -0
  91. package/scripts/00.chat/main-refresh/verify-conflict-audit/script.sh +154 -0
  92. package/scripts/00.chat/main-refresh/verify-conflict-audit/smoke-test.sh +99 -0
  93. package/scripts/00.chat/metrics/README.md +35 -0
  94. package/scripts/00.chat/metrics/data/chat-pricing.json +107 -0
  95. package/scripts/00.chat/metrics/data/chat-pricing.schema.json +63 -0
  96. package/scripts/00.chat/metrics/estimate-chat-cost/README.md +40 -0
  97. package/scripts/00.chat/metrics/estimate-chat-cost/script.js +130 -0
  98. package/scripts/00.chat/migration/README.md +30 -0
  99. package/scripts/00.chat/migration/audit-chat-layer-migration/README.md +33 -0
  100. package/scripts/00.chat/migration/audit-chat-layer-migration/script.sh +127 -0
  101. package/scripts/00.chat/recovery/README.md +30 -0
  102. package/scripts/00.chat/recovery/import-active-paths-to-chat-worktree/README.md +76 -0
  103. package/scripts/00.chat/recovery/import-active-paths-to-chat-worktree/script.sh +212 -0
  104. package/scripts/00.chat/recovery/import-active-paths-to-chat-worktree/smoke-test.sh +162 -0
  105. package/scripts/00.chat/reporting/README.md +30 -0
  106. package/scripts/00.chat/reporting/generate-commit-log-summary/README.md +35 -0
  107. package/scripts/00.chat/reporting/generate-commit-log-summary/script.sh +299 -0
  108. package/scripts/00.chat/reporting/generate-commit-log-summary/smoke-test.sh +93 -0
  109. package/scripts/00.chat/reporting/report-chat-workspaces/README.md +32 -0
  110. package/scripts/00.chat/reporting/report-chat-workspaces/script.sh +82 -0
  111. package/scripts/00.chat/session-log/README.md +33 -0
  112. package/scripts/00.chat/session-log/check-commit-prerequisites/README.md +89 -0
  113. package/scripts/00.chat/session-log/check-commit-prerequisites/script.sh +121 -0
  114. package/scripts/00.chat/session-log/check-commit-prerequisites/smoke-test.sh +119 -0
  115. package/scripts/00.chat/session-log/check-commitlog-deletions/README.md +90 -0
  116. package/scripts/00.chat/session-log/check-commitlog-deletions/script.sh +131 -0
  117. package/scripts/00.chat/session-log/check-commitlog-deletions/smoke-test.sh +123 -0
  118. package/scripts/00.chat/session-log/checkpoint-chat-session-log/README.md +98 -0
  119. package/scripts/00.chat/session-log/checkpoint-chat-session-log/script.sh +126 -0
  120. package/scripts/00.chat/session-log/paths/README.md +38 -0
  121. package/scripts/00.chat/session-log/paths/lib.sh +133 -0
  122. package/scripts/00.chat/session-log/prepare-chat-session-before-commit/README.md +90 -0
  123. package/scripts/00.chat/session-log/prepare-chat-session-before-commit/script.sh +145 -0
  124. package/scripts/00.chat/session-log/read-current-chat-log/README.md +44 -0
  125. package/scripts/00.chat/session-log/read-current-chat-log/script.sh +92 -0
  126. package/scripts/00.chat/session-log/read-current-chat-log/smoke-test.sh +127 -0
  127. package/scripts/00.chat/session-log/record-chat-commit/README.md +133 -0
  128. package/scripts/00.chat/session-log/record-chat-commit/script.sh +394 -0
  129. package/scripts/00.chat/session-log/record-chat-commit/smoke-test.sh +227 -0
  130. package/scripts/00.chat/session-log/record-main-refresh-conflict/README.md +34 -0
  131. package/scripts/00.chat/session-log/record-main-refresh-conflict/script.sh +239 -0
  132. package/scripts/00.chat/session-log/rename-current-chat-log-folder/README.md +32 -0
  133. package/scripts/00.chat/session-log/rename-current-chat-log-folder/script.sh +112 -0
  134. package/scripts/00.chat/session-log/update-chat-log/README.md +32 -0
  135. package/scripts/00.chat/session-log/update-chat-log/script.sh +294 -0
  136. package/scripts/00.chat/startup/README.md +37 -0
  137. package/scripts/00.chat/startup/auto-start-missing-session/README.md +113 -0
  138. package/scripts/00.chat/startup/auto-start-missing-session/script.sh +54 -0
  139. package/scripts/00.chat/startup/resolve-current-chat-session/README.md +57 -0
  140. package/scripts/00.chat/startup/resolve-current-chat-session/script.sh +47 -0
  141. package/scripts/00.chat/startup/resolve-current-chat-session/smoke-test.sh +130 -0
  142. package/scripts/00.chat/startup/start-chat-session/README.md +197 -0
  143. package/scripts/00.chat/startup/start-chat-session/script.sh +330 -0
  144. package/scripts/00.chat/startup/start-chat-session/smoke-test.sh +182 -0
  145. package/scripts/00.chat/startup/start-new-chat/README.md +31 -0
  146. package/scripts/00.chat/startup/start-new-chat/script.sh +29 -0
  147. package/scripts/00.chat/transcript/README.md +36 -0
  148. package/scripts/00.chat/transcript/discover-codex-session-log/README.md +32 -0
  149. package/scripts/00.chat/transcript/discover-codex-session-log/script.sh +106 -0
  150. package/scripts/00.chat/transcript/register-codex-session-log/README.md +32 -0
  151. package/scripts/00.chat/transcript/register-codex-session-log/script.sh +115 -0
  152. package/scripts/00.chat/worktree/README.md +32 -0
  153. package/scripts/00.chat/worktree/check-write-location/README.md +87 -0
  154. package/scripts/00.chat/worktree/check-write-location/script.sh +95 -0
  155. package/scripts/00.chat/worktree/dirty-worktree-check/README.md +77 -0
  156. package/scripts/00.chat/worktree/dirty-worktree-check/script.sh +93 -0
  157. package/scripts/00.chat/worktree/ensure-chat-worktree/README.md +33 -0
  158. package/scripts/00.chat/worktree/ensure-chat-worktree/script.sh +132 -0
  159. package/scripts/00.chat/worktree/open-window/README.md +34 -0
  160. package/scripts/00.chat/worktree/open-window/script.sh +131 -0
  161. package/scripts/00.chat/worktree/paths/README.md +32 -0
  162. package/scripts/00.chat/worktree/paths/lib.sh +71 -0
  163. package/scripts/01.harness/artifact-metadata/check-headers/script.sh +522 -0
  164. package/scripts/01.harness/artifact-metadata/check-headers/smoke-test.sh +48 -0
  165. package/scripts/01.harness/check-deterministic-process-drift.sh +416 -0
  166. package/scripts/01.harness/check-governed-script-command-drift.sh +184 -0
  167. package/scripts/01.harness/run-governed-script.sh +178 -0
  168. package/scripts/install.sh +503 -0
  169. package/scripts/uninstall.sh +199 -0
  170. package/tests/smoke-test-install.sh +70 -0
@@ -0,0 +1,216 @@
1
+ <!-- agentic-artifact:
2
+ schema: agentic-artifact/v2
3
+ id: chat.standards.llm-workbench-public-beta-contract
4
+ version: 1
5
+ status: active
6
+ layer: 00.chat
7
+ domain: portability
8
+ disciplines:
9
+ - agentic
10
+ kind: standard
11
+ purpose: Define the public-beta contract for standalone provider-neutral llm-workbench behavior.
12
+ portability:
13
+ class: required
14
+ targets:
15
+ - llm-workbench
16
+ used_by:
17
+ - id: chat.checklists.llm-workbench-public-beta
18
+ path: .agentic/00.chat/checklists/llm-workbench-public-beta.md
19
+ - id: chat.workflows.bootstrap-chat-workbench-repo
20
+ path: .agentic/00.chat/workflows/bootstrap-chat-workbench-repo.md
21
+ - id: chat.workflows.chat-upstream-reusable-lesson
22
+ path: .agentic/00.chat/workflows/chat-upstream-reusable-lesson.md
23
+ -->
24
+ # llm-workbench Public-Beta Contract
25
+
26
+ ## Definition Of Done
27
+
28
+ `llm-workbench` is a standalone, provider-neutral Git/Bash/npm chat harness for
29
+ blank or existing repos, with safe install/uninstall, assistant adapters, JSON
30
+ startup packets, and portable transcript metadata across common CLI and
31
+ code-assistant workflows.
32
+
33
+ Do not claim it works perfectly with every LLM assistant or every editor setup.
34
+ No repository can guarantee that every assistant will read and obey instruction
35
+ files.
36
+
37
+ ## Core Invariants
38
+
39
+ ### No Durable Chat Classification
40
+
41
+ - Do not reintroduce durable whole-chat `layer`, `mode`, or `workflow`
42
+ classification metadata.
43
+ - Chat startup may record `chat_lifecycle_workflow` and context-packet
44
+ continuity metadata.
45
+ - Prompt-level routing is local and optional: use the current user request,
46
+ repo assistant instructions, and any repo-provided context router if one
47
+ exists.
48
+ - Base chat startup must not require RAG/rulebook, classifier scripts, or
49
+ source-specific routers.
50
+
51
+ ### Public Export Is Standalone
52
+
53
+ Generated public exports and installed target repos must not contain source-only
54
+ wrapper trees, duplicate generated trees, upstream harness-maintenance trees, or
55
+ retired chat-classification scripts. The exact excluded paths are enforced by
56
+ the portability suite and summarized in the source-side acceptance matrix.
57
+
58
+ Public `.agentic` surfaces must not reference missing exported paths.
59
+ `check-headers --all` must pass in both the generated public workbench repo and
60
+ an installed target repo. When a public-exported directory is removed, remove or
61
+ sanitize any `used_by.path` references to it.
62
+
63
+ ### No Source-Specific Rulebook Or Codex Defaults
64
+
65
+ - Generic chat startup, commit, docs, and assistant surfaces must not require
66
+ mandatory RAG/rulebook runtime behavior.
67
+ - Do not hard-code `.agentic/02.rag-rulebook` or `scripts/02.rag-rulebook`
68
+ into generic chat commit gates.
69
+ - Repos that need extra gates must use neutral optional extension hooks.
70
+ - Codex support may exist as an adapter, but Codex must not be the default
71
+ transcript, startup, metrics, docs, or assistant assumption.
72
+
73
+ ### Provider-Neutral Transcript And Cost Metrics
74
+
75
+ Core transcript metadata is neutral:
76
+
77
+ - `transcript_provider`
78
+ - `transcript_path`
79
+ - `transcript_bytes`
80
+ - `transcript_token_estimate`
81
+ - `transcript_source`
82
+
83
+ Codex transcript discovery is optional adapter behavior only. Missing transcript
84
+ metrics must not block portable/default operation unless strict mode is
85
+ explicitly enabled.
86
+
87
+ Chat pricing belongs to the chat metrics surface:
88
+
89
+ - `scripts/00.chat/metrics/data/chat-pricing.json`
90
+ - `scripts/00.chat/metrics/data/chat-pricing.schema.json`
91
+
92
+ Bundled pricing data is a local best-effort profile store, not a universal
93
+ source of truth. The default bundled profile must be provider-neutral and
94
+ unpriced unless a pricing profile is explicitly selected. Keep
95
+ `CHAT_COST_PRICING_FILE` and `CHAT_COST_PROFILE` as overrides.
96
+
97
+ ### Safe Blank And Existing Repo Installs
98
+
99
+ `scripts/install.sh` must support `--dry-run`, `--apply`, and `--init-commit`.
100
+ Dry runs must not mutate the target repo. Apply mode must not overwrite user
101
+ files silently.
102
+
103
+ Existing `package.json` files are merged only for workbench-owned `chat:*`
104
+ scripts. Assistant instruction files are patched with managed blocks, not
105
+ overwritten. Install writes a manifest of created files, package-script changes,
106
+ and managed blocks. Uninstall removes only manifest-owned material.
107
+
108
+ `--init-commit` is only for repos with no existing `HEAD`. It stages only
109
+ manifest-owned install paths, never `git add -A`. In unborn repos with unrelated
110
+ pre-existing files, the install commit leaves unrelated files uncommitted.
111
+
112
+ ### Thin Assistant Adapters
113
+
114
+ Public assistant surfaces may include:
115
+
116
+ - `AGENTS.md`
117
+ - `CLAUDE.md`
118
+ - `.github/copilot-instructions.md`
119
+ - `.cursor/rules/llm-workbench.mdc`
120
+ - `LLM_WORKBENCH.md`
121
+
122
+ Adapters point to the same canonical chat lifecycle workflow. They do not
123
+ duplicate detailed policy or make provider-specific assumptions. They preserve
124
+ this rule:
125
+
126
+ ```txt
127
+ For prompt-level routing, use the current user request, this repo's assistant instructions, and any repo-provided context router if one exists. Do not assign the whole chat a durable layer, mode, or workflow.
128
+ ```
129
+
130
+ ### CLI And Code-Assistant Robustness
131
+
132
+ - `chat:new` supports structured JSON output for code assistants:
133
+ `npm run chat:new -- --json "task summary"`.
134
+ - Clipboard handoff is optional/fallback only.
135
+ - Do not rely on executable bits surviving zip extraction or Windows
136
+ filesystems where avoidable.
137
+ - Dispatchers invoke shell scripts with Bash when appropriate instead of
138
+ failing only because a script is not executable.
139
+ - Bash, Git, and Node assumptions are documented and tested across Linux,
140
+ macOS, Windows, and WSL paths.
141
+
142
+ ## Validation Contract
143
+
144
+ Before calling related work complete, run the permanent portability suite and
145
+ add tests for any newly discovered edge case:
146
+
147
+ ```bash
148
+ bash scripts/01.harness/run-governed-script.sh --approved-action scripts/00.chat/upstream/validate-llm-workbench-portability/script.sh
149
+ bash scripts/01.harness/run-governed-script.sh --approved-action scripts/00.chat/upstream/bootstrap-llm-workbench-repo/smoke-test.sh
150
+ bash scripts/01.harness/run-governed-script.sh --approved-action scripts/00.chat/startup/start-chat-session/smoke-test.sh
151
+ bash scripts/01.harness/run-governed-script.sh --approved-action scripts/00.chat/session-log/record-chat-commit/smoke-test.sh
152
+ bash scripts/01.harness/run-governed-script.sh --approved-action scripts/00.chat/command/package-scripts/smoke-test.sh
153
+ bash scripts/01.harness/run-governed-script.sh --approved-action scripts/00.chat/command/dispatcher/smoke-test.sh
154
+ bash scripts/01.harness/run-governed-script.sh --approved-action scripts/01.harness/artifact-metadata/check-headers/smoke-test.sh
155
+ bash scripts/01.harness/artifact-metadata/check-headers/script.sh --all
156
+ bash scripts/01.harness/check-governed-script-command-drift.sh
157
+ bash scripts/01.harness/check-deterministic-process-drift.sh --paths <changed-governed-files>
158
+ bash -n <changed-shell-scripts-and-templates>
159
+ git diff --check
160
+ ```
161
+
162
+ The portability suite must cover Codex, Claude-style, Mistral/manual, Copilot,
163
+ Cursor, and generic CLI assistant surfaces; Linux, macOS, Windows, and WSL
164
+ signals; blank unborn repos; existing repos with `package.json` and
165
+ `AGENTS.md`; conflicting package scripts; missing transcript providers; manual
166
+ transcript metrics; explicit pricing overrides; missing clipboard utilities;
167
+ JSON startup handoff; public export self-consistency; and installed target
168
+ self-consistency.
169
+
170
+ ## Temporary Eval Loop
171
+
172
+ For each feature or patch:
173
+
174
+ 1. Write a temporary eval or failing smoke case proving the desired behavior.
175
+ 2. Implement the smallest change that should make the eval pass.
176
+ 3. Run the eval.
177
+ 4. Refine until it passes.
178
+ 5. Promote durable edge cases into the permanent portability suite.
179
+ 6. Remove temporary eval files before finishing.
180
+
181
+ ## Public Export Boundary
182
+
183
+ When touching bootstrap/export logic, materialize the generated public
184
+ workbench, inspect its top-level tree, install it into blank and existing repos,
185
+ and run `check-headers --all` in both the generated public repo and installed
186
+ target.
187
+
188
+ Canonical public paths are:
189
+
190
+ - `.agentic/00.chat`
191
+ - `.agentic/shared`
192
+ - `docs`
193
+ - `scripts/00.chat`
194
+ - `scripts/01.harness`, only when required for portable checks and not
195
+ dependent on an upstream harness-maintenance tree
196
+ - `package.json`
197
+ - `README.md`
198
+ - assistant adapter files
199
+ - install/uninstall scripts
200
+
201
+ ## Documentation
202
+
203
+ When behavior changes, update public docs and templates: README, install docs,
204
+ workflow docs, assistant adapter templates, relevant script READMEs, and the
205
+ generated GitHub Actions workflow template when affected. Docs must match
206
+ behavior and avoid overclaiming.
207
+
208
+ ## Closeout Evidence
209
+
210
+ Before reporting success, provide:
211
+
212
+ - changed files summary
213
+ - exact validation commands run
214
+ - skipped checks and why
215
+ - whether temporary eval files remain
216
+ - whether changes are committed or still uncommitted
@@ -0,0 +1,358 @@
1
+ <!-- agentic-artifact:
2
+ schema: agentic-artifact/v2
3
+ id: chat.standards.main-refresh-conflict-types
4
+ version: 1
5
+ status: active
6
+ layer: 00.chat
7
+ domain: main-refresh
8
+ disciplines:
9
+ - agentic
10
+ kind: standard
11
+ purpose: Define governed conflict classification and resolution during chat refresh
12
+ from main.
13
+ portability:
14
+ class: required
15
+ targets:
16
+ - llm-workbench
17
+ used_by:
18
+ - id: chat.workflows.chat-refresh-from-main
19
+ path: .agentic/00.chat/workflows/chat-refresh-from-main.md
20
+ - id: chat.script.main-refresh.apply-rehearsed-refresh
21
+ path: scripts/00.chat/main-refresh/apply-rehearsed-refresh/script.sh
22
+ - id: chat.script.main-refresh.classify-conflict
23
+ path: scripts/00.chat/main-refresh/classify-conflict/script.sh
24
+ - id: chat.script.main-refresh.verify-conflict-audit
25
+ path: scripts/00.chat/main-refresh/verify-conflict-audit/script.sh
26
+ -->
27
+ # Main Refresh Conflict Types
28
+
29
+ ## Purpose
30
+
31
+ Classify conflicts found while refreshing a chat branch from `main`.
32
+
33
+ Use this standard after preflight reports conflicts and before resolving any
34
+ conflicted path. Resolve only conflicts with a deterministic action. If no type
35
+ fits, stop and propose either a new type or an expansion of an existing type.
36
+
37
+ Use the deterministic classifier for known conflict shapes:
38
+
39
+ ```bash
40
+ bash scripts/00.chat/main-refresh/classify-conflict/script.sh <conflicted-path>
41
+ ```
42
+
43
+ The classifier is a guardrail, not a substitute for judgment. If the classifier
44
+ returns `normal-repo-conflict` or `unsupported-conflict`, stop before resolving
45
+ unless the user approves the next step or the harness is updated.
46
+
47
+ ## Classification Method
48
+
49
+ For each conflicted path, compare:
50
+
51
+ - file ownership: canonical owner, compatibility path, generated artifact, or
52
+ session evidence
53
+ - conflict shape: both modified, add/add, delete/modify, or deleted by them
54
+ - content source: authored prose/code, generated output, or bookkeeping
55
+ - governance direction: stricter rule added, ownership moved, artifact retired,
56
+ or normal repo behavior changed
57
+ - risk: whether either side would discard user-authored work, session evidence,
58
+ or stricter governance
59
+
60
+ Inspect Git stages when needed:
61
+
62
+ ```bash
63
+ git show :1:<path> # base
64
+ git show :2:<path> # chat branch
65
+ git show :3:<path> # incoming main
66
+ git diff :2:<path> :3:<path>
67
+ ```
68
+
69
+ ## Session Log Audit Trail
70
+
71
+ For every preflight conflict, record an audit entry under the current chat
72
+ session log's `## Main Refresh Conflicts` section before promoting the
73
+ preflight result.
74
+
75
+ Use:
76
+
77
+ ```bash
78
+ bash scripts/01.harness/run-governed-script.sh --approved-action scripts/00.chat/session-log/record-main-refresh-conflict/script.sh \
79
+ --path <conflicted-path> \
80
+ --type <conflict-type> \
81
+ --reason <classification-reason> \
82
+ --action <resolution-action> \
83
+ --mode <deterministic|skill-assisted|manual|stopped> \
84
+ --preflight-branch <branch> \
85
+ --preflight-worktree <path> \
86
+ --files <changed-files-summary> \
87
+ --checks <checks-summary>
88
+ ```
89
+
90
+ Each entry must record:
91
+
92
+ - preflight branch
93
+ - preflight worktree
94
+ - conflicted path
95
+ - conflict type
96
+ - classification reason
97
+ - resolution mode
98
+ - deterministic action, skill-assisted action, manual action, or stop reason
99
+ - files changed by the resolution
100
+ - checks run or still pending
101
+
102
+ ## Applying After Conflict Resolution
103
+
104
+ Approval to run a governed main-refresh rehearsal includes approval to apply a
105
+ clean, tested rehearsed result back to the chat branch.
106
+
107
+ After every conflicted path has a `## Main Refresh Conflicts` audit entry and
108
+ the required checks pass, apply the preflight branch automatically with:
109
+
110
+ ```bash
111
+ bash scripts/00.chat/main-refresh/verify-conflict-audit/script.sh \
112
+ --path <conflicted-path> ...
113
+ bash scripts/01.harness/run-governed-script.sh --approved-action scripts/00.chat/main-refresh/apply-rehearsed-refresh/script.sh <preflight-branch>
114
+ ```
115
+
116
+ Stop before applying if:
117
+
118
+ - unresolved conflicts remain
119
+ - required checks failed or were skipped
120
+ - the preflight worktree is dirty
121
+ - the preflight branch no longer descends from the chat branch
122
+ - the apply script refuses cleanup
123
+ - the user explicitly asked to inspect before applying
124
+
125
+ Do not ask for a second approval when none of those stop conditions apply.
126
+
127
+ ## Type Index
128
+
129
+ | Type | Detect | Deterministic action |
130
+ | --- | --- | --- |
131
+ | `ownership-migration-conflict` | One side moves behavior to a canonical owner while the other side improves the old path | Keep the canonical owner; migrate useful improvements into it |
132
+ | `generated-artifact-conflict` | Conflict is only in a generated artifact that can be recreated from source evidence | Remove or restore the generated artifact according to its governing workflow, then regenerate only if an explicit output is requested |
133
+ | `session-bookkeeping-conflict` | Conflict is limited to the current chat session log or chat-owned bookkeeping | Preserve current session evidence; never discard recorded commits or retention markers |
134
+ | `retired-artifact-delete-modify-conflict` | Chat branch deletes a retired generated artifact while `main` modifies it | Keep the deletion when the retirement ADR/workflow is present; preserve useful policy references in canonical docs if needed |
135
+ | `retired-artifact-generator-conflict` | One side preserves generator behavior for a retired tracked artifact while the other side makes generation on-demand only | Preserve retired-artifact policy; keep safe print/explicit-output behavior; block recreation of the retired tracked artifact |
136
+ | `retired-artifact-policy-script-conflict` | One side adds classifier or workflow behavior for a retired tracked artifact while the other side retires that artifact | Preserve retired-artifact policy; remove recoverability paths for the retired tracked artifact |
137
+ | `script-add-add-conflict` | Both sides add the same script path independently | Compare behavior, tests, and call sites; if both implement the same governed capability, merge behavior and tests; otherwise stop |
138
+ | `normal-repo-conflict` | Conflict changes authored code/prose without a matching governed type | Stop for approval before resolving |
139
+ | `unsupported-conflict` | No existing type fits or classification is ambiguous | Stop with missing-governance response and propose a new or expanded type |
140
+
141
+ ## Type Details
142
+
143
+ ### ownership-migration-conflict
144
+
145
+ Detect:
146
+ - A workflow, checklist, or script path has moved to a canonical owner on one
147
+ side.
148
+ - The other side keeps the old path as the implementation and adds useful
149
+ governance, checks, or stricter safety behavior.
150
+
151
+ Examples:
152
+ - `.agentic/00.chat/workflows/chat-promote-to-main.md` owns chat promotion on
153
+ one side, while the other side adds verifier-based local convergence rules to
154
+ a retired shared workflow path.
155
+
156
+ Deterministic action:
157
+ - Keep the canonical owner path.
158
+ - Migrate useful main-side improvements into the canonical owner named by the
159
+ current workflow or artifact metadata.
160
+ - Adjust layer names, workflow paths, and exact blocked responses to the
161
+ canonical owner.
162
+
163
+ Required checks:
164
+ - Run deterministic process drift checks on the legacy pointer and canonical
165
+ owner.
166
+ - Run any script tests that cover the migrated behavior.
167
+
168
+ Session log entry:
169
+ - Record the conflicted path, canonical owner, migrated improvement, changed
170
+ files, and checks.
171
+
172
+ Stop if:
173
+ - The canonical owner is missing.
174
+ - The improvement cannot be migrated without changing behavior outside the
175
+ owner.
176
+ - Either side contains user-authored content whose ownership is unclear.
177
+
178
+ ### generated-artifact-conflict
179
+
180
+ Detect:
181
+ - The conflicted path is a generated report, summary, build product, or other
182
+ reproducible artifact.
183
+ - A workflow, script, or ADR defines the source evidence and output policy.
184
+
185
+ Deterministic action:
186
+ - Follow the artifact policy.
187
+ - Do not preserve stale generated content just because it appears in a conflict.
188
+ - Do not recreate tracked `commitLogs/README.md`.
189
+
190
+ Required checks:
191
+ - Run the generator smoke test or verifier when one exists.
192
+
193
+ Session log entry:
194
+ - Record source evidence, artifact path, and whether regeneration happened.
195
+
196
+ Stop if:
197
+ - The source evidence is missing.
198
+ - The artifact is not reproducible.
199
+ - The artifact policy is unclear.
200
+
201
+ ### session-bookkeeping-conflict
202
+
203
+ Detect:
204
+ - The conflict is limited to the current chat session log or chat-owned metadata.
205
+
206
+ Deterministic action:
207
+ - Preserve recorded commits, latest commit metadata, decisions, issues, ADR
208
+ disposition, and retention markers.
209
+ - Prefer additive merge of session evidence when entries are independent.
210
+
211
+ Required checks:
212
+ - Run commit prerequisite and session-log gates when applicable.
213
+
214
+ Session log entry:
215
+ - Record that session evidence was preserved and how.
216
+
217
+ Stop if:
218
+ - The conflict involves another chat's session log.
219
+ - Recorded commits or retention markers disagree.
220
+
221
+ ### retired-artifact-delete-modify-conflict
222
+
223
+ Detect:
224
+ - One side deletes a generated artifact because it has been retired.
225
+ - The other side modifies the same artifact.
226
+ - A workflow or ADR records the retirement.
227
+
228
+ Deterministic action:
229
+ - Keep the deletion.
230
+ - Move any durable policy value into the canonical doc only if it is not already
231
+ represented there.
232
+
233
+ Required checks:
234
+ - Run artifact generator and retirement smoke tests when present.
235
+
236
+ Session log entry:
237
+ - Record artifact path, retirement source, and whether any policy text moved.
238
+
239
+ Stop if:
240
+ - Retirement evidence is missing.
241
+ - The modified content includes non-generated user-authored decisions.
242
+
243
+ ### retired-artifact-generator-conflict
244
+
245
+ Detect:
246
+ - The conflicted path is a generator script or generator test.
247
+ - One side writes, checks, or recreates a tracked artifact that another side has
248
+ retired.
249
+ - A workflow or ADR records the artifact retirement.
250
+
251
+ Deterministic action:
252
+ - Preserve the retired-artifact policy.
253
+ - Do not restore default writes to the retired tracked artifact.
254
+ - Do not restore checks that require the retired tracked artifact to exist.
255
+ - Preserve safe non-persistent behavior such as stdout printing.
256
+ - Preserve explicit-output behavior only when it refuses the retired tracked
257
+ artifact path.
258
+
259
+ Required checks:
260
+ - Run the generator smoke test.
261
+ - Run shell syntax checks for shell-based generators.
262
+
263
+ Session log entry:
264
+ - Record retired artifact path, generator path, retirement source, preserved
265
+ safe behavior, and blocked behavior.
266
+
267
+ Stop if:
268
+ - The generator also produces non-retired artifacts and behavior cannot be
269
+ separated deterministically.
270
+ - The retirement source is missing or ambiguous.
271
+
272
+ ### retired-artifact-policy-script-conflict
273
+
274
+ Detect:
275
+ - The conflicted path is a classifier, workflow, verifier, or test.
276
+ - One side adds recoverability, validation, or workflow behavior for a tracked
277
+ artifact that another side has retired.
278
+ - A workflow or ADR records the artifact retirement.
279
+
280
+ Deterministic action:
281
+ - Preserve the retired-artifact policy.
282
+ - Remove or avoid recoverability classes that treat the retired artifact as
283
+ active state.
284
+ - Preserve unrelated classifier, verifier, or workflow behavior.
285
+ - Update tests so they verify the retired artifact is not reintroduced as an
286
+ active governed path.
287
+
288
+ Required checks:
289
+ - Run the relevant classifier/verifier smoke tests.
290
+ - Run shell syntax checks for shell scripts.
291
+
292
+ Session log entry:
293
+ - Record retired artifact path, policy script path, removed recoverability, and
294
+ preserved behavior.
295
+
296
+ Stop if:
297
+ - The policy script behavior cannot be separated from unrelated active
298
+ behavior.
299
+ - The retirement source is missing or ambiguous.
300
+
301
+ ### script-add-add-conflict
302
+
303
+ Detect:
304
+ - Both sides add the same script or test path.
305
+ - Git reports add/add (`AA`).
306
+
307
+ Deterministic action:
308
+ - Compare scripts by behavior, not just text.
309
+ - If both implement the same capability, produce a merged script that preserves
310
+ stricter validation and all relevant tests.
311
+ - If the capability differs, stop.
312
+
313
+ Required checks:
314
+ - Run shell syntax checks and the relevant smoke tests.
315
+
316
+ Session log entry:
317
+ - Record merged behavior and tests run.
318
+
319
+ Stop if:
320
+ - Behavior differs in a way that changes ownership, safety, or data mutation.
321
+ - No test covers the merged script.
322
+
323
+ ### normal-repo-conflict
324
+
325
+ Detect:
326
+ - Conflict is user-authored code/prose and no more specific governed type fits.
327
+
328
+ Deterministic action:
329
+ - None.
330
+
331
+ Required checks:
332
+ - N/A until resolution is approved.
333
+
334
+ Session log entry:
335
+ - Record the stop and requested next step.
336
+
337
+ Stop if:
338
+ - Always stop before resolving.
339
+
340
+ ### unsupported-conflict
341
+
342
+ Detect:
343
+ - Existing types do not fit.
344
+ - More than one type fits and the action differs.
345
+ - The model cannot explain the classification in terms of ownership, shape,
346
+ source, governance direction, and risk.
347
+
348
+ Deterministic action:
349
+ - None.
350
+
351
+ Required checks:
352
+ - N/A until governance is updated.
353
+
354
+ Session log entry:
355
+ - Record proposed new type or proposed expansion.
356
+
357
+ Stop if:
358
+ - Always stop with the missing-governance response.
@@ -0,0 +1,40 @@
1
+ <!-- agentic-artifact:
2
+ schema: agentic-artifact/v2
3
+ id: chat.workflows.readme
4
+ version: 1
5
+ status: active
6
+ layer: 00.chat
7
+ domain: chat
8
+ disciplines:
9
+ - agentic
10
+ kind: workflow
11
+ purpose: Document 00.chat Workflows.
12
+ portability:
13
+ class: required
14
+ targets:
15
+ - llm-workbench
16
+ - entity-builder
17
+ - design-system-builder
18
+ used_by:
19
+ - id: repo.agents
20
+ path: AGENTS.md
21
+ -->
22
+ # 00.chat Workflows
23
+
24
+ This index tracks chat lifecycle workflows as they migrate out of shared
25
+ process locations.
26
+
27
+ ## Workflows
28
+
29
+ - `chat-start.md` - chat startup and active session discovery.
30
+ - `chat-refresh-from-main.md` - refresh chat branches from `main`.
31
+ - `chat-commit.md` - task commits, commit recording, and session checkpoints.
32
+ - `chat-promote-to-main.md` - local convergence from chat branch to `main`.
33
+ - `chat-cleanup.md` - chat branch, worktree, preflight, and empty-log cleanup.
34
+ - `chat-reporting.md` - on-demand reports from session logs.
35
+ - `chat-upstream-reusable-lesson.md` - handoff reusable chat harness lessons
36
+ from a source repo to an upstream workbench repo.
37
+ - `bootstrap-chat-workbench-repo.md` - seed an upstream chat workbench repo
38
+ using the shared upstream repo bootstrap standard.
39
+
40
+ Keep this index current as chat-specific workflows move into this layer.