delivery-workbench 1.7.0__tar.gz

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 (64) hide show
  1. delivery_workbench-1.7.0/LICENSE +21 -0
  2. delivery_workbench-1.7.0/MANIFEST.in +13 -0
  3. delivery_workbench-1.7.0/PKG-INFO +271 -0
  4. delivery_workbench-1.7.0/README.md +229 -0
  5. delivery_workbench-1.7.0/pmo-roadmap/agent/dw-adopt.md +21 -0
  6. delivery_workbench-1.7.0/pmo-roadmap/agent/dw-contract.md +23 -0
  7. delivery_workbench-1.7.0/pmo-roadmap/agent/dw-next.md +18 -0
  8. delivery_workbench-1.7.0/pmo-roadmap/agent/dw-story-done.md +28 -0
  9. delivery_workbench-1.7.0/pmo-roadmap/bin/dw +605 -0
  10. delivery_workbench-1.7.0/pmo-roadmap/bin/dw-mcp +59 -0
  11. delivery_workbench-1.7.0/pmo-roadmap/bin/dw-workbench +53 -0
  12. delivery_workbench-1.7.0/pmo-roadmap/bin/work-log-read +115 -0
  13. delivery_workbench-1.7.0/pmo-roadmap/bin/work-log-summarize +210 -0
  14. delivery_workbench-1.7.0/pmo-roadmap/bootstrap/adopt-project.sh +204 -0
  15. delivery_workbench-1.7.0/pmo-roadmap/bootstrap/new-project.sh +76 -0
  16. delivery_workbench-1.7.0/pmo-roadmap/bootstrap/session-intake.sh +453 -0
  17. delivery_workbench-1.7.0/pmo-roadmap/hooks/commit-msg +39 -0
  18. delivery_workbench-1.7.0/pmo-roadmap/hooks/post-commit +243 -0
  19. delivery_workbench-1.7.0/pmo-roadmap/hooks/pre-commit +345 -0
  20. delivery_workbench-1.7.0/pmo-roadmap/install.sh +265 -0
  21. delivery_workbench-1.7.0/pmo-roadmap/lib/delivery_workbench.egg-info/PKG-INFO +271 -0
  22. delivery_workbench-1.7.0/pmo-roadmap/lib/delivery_workbench.egg-info/SOURCES.txt +62 -0
  23. delivery_workbench-1.7.0/pmo-roadmap/lib/delivery_workbench.egg-info/dependency_links.txt +1 -0
  24. delivery_workbench-1.7.0/pmo-roadmap/lib/delivery_workbench.egg-info/entry_points.txt +2 -0
  25. delivery_workbench-1.7.0/pmo-roadmap/lib/delivery_workbench.egg-info/top_level.txt +1 -0
  26. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/__init__.py +130 -0
  27. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/adopt.py +213 -0
  28. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/agentdocs.py +157 -0
  29. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/api.py +288 -0
  30. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/contract.py +447 -0
  31. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/docslint.py +359 -0
  32. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/doctor.py +131 -0
  33. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/evidence.py +186 -0
  34. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/gate.py +523 -0
  35. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/gitio.py +141 -0
  36. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/launcher.py +120 -0
  37. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/mcpserver.py +536 -0
  38. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/model.py +70 -0
  39. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/mutations.py +400 -0
  40. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/parse.py +220 -0
  41. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/paths.py +120 -0
  42. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/render.py +263 -0
  43. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/trace.py +85 -0
  44. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/validate.py +278 -0
  45. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/verify.py +432 -0
  46. delivery_workbench-1.7.0/pmo-roadmap/lib/dw_pmo/workbench.py +538 -0
  47. delivery_workbench-1.7.0/pmo-roadmap/templates/CLAUDE-snippet.md +72 -0
  48. delivery_workbench-1.7.0/pmo-roadmap/templates/CONTRACT.md.tmpl +27 -0
  49. delivery_workbench-1.7.0/pmo-roadmap/templates/PMO-CONTRACT.md +334 -0
  50. delivery_workbench-1.7.0/pmo-roadmap/templates/adoption-discovery-prompt.md +150 -0
  51. delivery_workbench-1.7.0/pmo-roadmap/templates/examples/project-extension-example.md +68 -0
  52. delivery_workbench-1.7.0/pmo-roadmap/templates/examples/roadmap-builder-worked-example.md +38 -0
  53. delivery_workbench-1.7.0/pmo-roadmap/templates/phase-status.md.tmpl +52 -0
  54. delivery_workbench-1.7.0/pmo-roadmap/templates/project-README.md.tmpl +54 -0
  55. delivery_workbench-1.7.0/pmo-roadmap/templates/roadmap-builder.md +523 -0
  56. delivery_workbench-1.7.0/pmo-roadmap/templates/session-intake.md.tmpl +69 -0
  57. delivery_workbench-1.7.0/pmo-roadmap/templates/story.md.tmpl +39 -0
  58. delivery_workbench-1.7.0/pmo-roadmap/update.sh +205 -0
  59. delivery_workbench-1.7.0/pmo-roadmap/workbench/app.js +618 -0
  60. delivery_workbench-1.7.0/pmo-roadmap/workbench/index.html +29 -0
  61. delivery_workbench-1.7.0/pmo-roadmap/workbench/style.css +207 -0
  62. delivery_workbench-1.7.0/pyproject.toml +42 -0
  63. delivery_workbench-1.7.0/setup.cfg +4 -0
  64. delivery_workbench-1.7.0/setup.py +47 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Karol
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,13 @@
1
+ # sdist must carry everything the build_py payload hook copies, so a
2
+ # wheel built from the sdist is identical to one built from the repo.
3
+ graft pmo-roadmap/hooks
4
+ graft pmo-roadmap/bin
5
+ graft pmo-roadmap/lib
6
+ graft pmo-roadmap/templates
7
+ graft pmo-roadmap/workbench
8
+ graft pmo-roadmap/bootstrap
9
+ graft pmo-roadmap/agent
10
+ include pmo-roadmap/install.sh
11
+ include pmo-roadmap/update.sh
12
+ include LICENSE
13
+ global-exclude __pycache__/* *.pyc
@@ -0,0 +1,271 @@
1
+ Metadata-Version: 2.4
2
+ Name: delivery-workbench
3
+ Version: 1.7.0
4
+ Summary: Evidence-first rails for agentic software delivery: Markdown roadmaps, paired evidence, and a machine-verified commit gate.
5
+ Author: Karol Sane
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Karol
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/karolswdev/delivery-workbench
29
+ Project-URL: Documentation, https://github.com/karolswdev/delivery-workbench/tree/main/docs
30
+ Keywords: delivery,roadmap,commit-gate,evidence,agents
31
+ Classifier: Development Status :: 4 - Beta
32
+ Classifier: Environment :: Console
33
+ Classifier: Intended Audience :: Developers
34
+ Classifier: Operating System :: MacOS
35
+ Classifier: Operating System :: POSIX :: Linux
36
+ Classifier: Programming Language :: Python :: 3
37
+ Classifier: Topic :: Software Development :: Version Control :: Git
38
+ Requires-Python: >=3.9
39
+ Description-Content-Type: text/markdown
40
+ License-File: LICENSE
41
+ Dynamic: license-file
42
+
43
+ # Delivery Workbench
44
+
45
+ ![Pixel-art delivery workbench: a desk with a retro computer showing a green checkmark, stamped contract papers, a rubber stamp, and a cargo cart carrying a sealed package](./pmo-roadmap/assets/delivery-workbench-icon.png)
46
+
47
+ **Evidence-first rails for agentic software delivery.** Delivery
48
+ Workbench turns a Git repository into a self-verifying delivery
49
+ system: work is planned as Markdown roadmaps, proven by paired
50
+ evidence files with captured command runs, and gated at commit time
51
+ by machine-verified contracts. It is built for humans and AI agents
52
+ working the same repo — and it ships its own roadmap, built entirely
53
+ on its own rails.
54
+
55
+ Adopt an existing project in three commands:
56
+
57
+ ```bash
58
+ pmo-roadmap/install.sh /path/to/project --skip-bootstrap
59
+ pmo-roadmap/bootstrap/adopt-project.sh /path/to/project \
60
+ --project-slug myproject --project-prefix MP --with-intake --agent claude
61
+ # then, inside the project:
62
+ .githooks/dw adopt --from-report pm/roadmap/myproject/adoption/adoption-discovery.md --apply
63
+ ```
64
+
65
+ Finish with `.githooks/dw doctor` (proves the wiring) and pick up work
66
+ with `.githooks/dw next`.
67
+
68
+ What to expect from step 2: `--agent claude` spawns a read-only
69
+ discovery agent whose stdout becomes the report — it typically takes
70
+ 5–15 minutes and needs the `claude` CLI authenticated in headless
71
+ contexts; when stdin is not a TTY, `--with-intake` records a
72
+ placeholder intake and discovery flags intent as unresolved (fill the
73
+ intake, or pass answers as flags, to get a directed roadmap).
74
+
75
+ ## Install without cloning
76
+
77
+ The framework also builds as the `delivery-workbench` package: a
78
+ global `dw` carrying the bootstrap verbs (`install`, `update`,
79
+ `adopt-project`, `new-project`, `intake`) plus the full vendorable
80
+ payload. Inside an adopted repository the global `dw` always defers
81
+ to the repo's own `.githooks/dw` — the vendored rails remain the
82
+ only gating authority (see
83
+ [docs/distribution.md](./docs/distribution.md)).
84
+
85
+ Until PyPI/tap publication lands, both channels install from a local
86
+ build of this repository:
87
+
88
+ ```bash
89
+ # pipx / pip
90
+ pipx run build && pipx install dist/*.whl
91
+
92
+ # Homebrew (from the tracked formula; the smoke test wires a local tap)
93
+ pmo-roadmap/tests/brew-formula-smoke.sh
94
+ ```
95
+
96
+ Then adopt any repo with `dw install /path/to/repo` and keep it
97
+ fresh with `dw update /path/to/repo` (`--check` reports staleness
98
+ without writing).
99
+
100
+ ## What you get
101
+
102
+ - **A Markdown roadmap** under `pm/roadmap/<project>/` — phases,
103
+ stories, paired evidence files, final summaries. No database, no
104
+ tracker: the files are the source of truth.
105
+ - **The `dw` CLI** — orient (`next`, `context`, `check`), maintain
106
+ (`phase`/`story` commands with preview-safe writes), and prove
107
+ (`evidence capture` records real command runs into evidence).
108
+ - **A commit gate with verified contracts** — `dw contract new`
109
+ stamps machine-checked facts (branch, HEAD, `git write-tree` index
110
+ tree, staged sample, story IDs); the gate re-derives each at commit
111
+ time. One story ships per commit, always with its evidence.
112
+ - **A durable audit trail** — every gated commit carries `PMO-Story:`
113
+ and `PMO-Contract-Digest:` trailers, and the exact certified
114
+ contract is archived under `.git/pmo-contract-archive/<sha>`.
115
+ - **History verification** — `dw verify` re-derives the structural
116
+ rules from pushed commits alone (story flips, evidence pairing,
117
+ trailers), so CI catches what a bypassed local gate let through;
118
+ see [docs/remote-verification.md](./docs/remote-verification.md).
119
+ - **The workbench** — a localhost web view (`dw-workbench`): project
120
+ overview, health console, intent-to-proof trace timeline, and a
121
+ guarded editor whose writes go through preview → diff →
122
+ fingerprint-verified apply. It never commits.
123
+ - **Optional local work logs** — consent-gated daily delivery logs
124
+ with mechanical path exclusion and deferred summarization.
125
+ - **An agent surface** — a managed `CLAUDE.md` block, slash commands,
126
+ JSON/porcelain outputs, and strict exit-code contracts so agents
127
+ can operate the rails headlessly.
128
+
129
+ ## How a change ships
130
+
131
+ ```mermaid
132
+ sequenceDiagram
133
+ participant Dev as Human or Agent
134
+ participant DW as dw CLI
135
+ participant Git as git commit
136
+ participant Gate as pre-commit gate
137
+ participant Msg as commit-msg
138
+ participant Post as post-commit
139
+
140
+ Dev->>DW: dw story status … in-progress
141
+ Dev->>Dev: do the work
142
+ Dev->>DW: dw evidence capture … -- <verify command>
143
+ Dev->>DW: dw story status … done (refuses without evidence)
144
+ Dev->>Git: git add …
145
+ Dev->>DW: dw contract new (stamps verified facts)
146
+ Dev->>Dev: certify each rule checkbox honestly
147
+ Dev->>Git: git commit
148
+ Git->>Gate: run gate (re-derives every stamped fact)
149
+ Gate-->>Git: pass, or block with the failed rule + remediation
150
+ Git->>Msg: stamp PMO-Story + PMO-Contract-Digest trailers
151
+ Git->>Post: archive contract under .git/pmo-contract-archive/<sha>
152
+ ```
153
+
154
+ The artifact model behind it:
155
+
156
+ ```mermaid
157
+ flowchart LR
158
+ R[pm/roadmap/project README] --> P[current-phase-status]
159
+ P --> S1[story-01]
160
+ P --> S2[story-N]
161
+ S1 --> E1[evidence-story-01 + captured runs]
162
+ S2 --> E2[evidence-story-N + captured runs]
163
+ P --> F[final-summary]
164
+ E1 -.proves.-> S1
165
+ ```
166
+
167
+ ## The workbench
168
+
169
+ `dw-workbench --root /path/to/repo` serves a localhost-only web view
170
+ of the roadmap: browse projects and phases, read story/evidence pairs,
171
+ see validation drift on the health console, follow a story's
172
+ intent-to-proof trace (files → trailer-stamped commits → work logs),
173
+ and edit through guarded preview→apply mutations. The runtime boundary
174
+ is strict and tested: localhost binding, one repo root, writes only
175
+ inside `pm/roadmap/**`, no staging, no commits. See the
176
+ [framework README](./pmo-roadmap/README.md#workbench-the-local-web-view)
177
+ for usage and the full API.
178
+
179
+ ![Workbench project overview: phase table with status badges, evidence counts, the next actionable story, and a validation warning](./assets/workbench-overview.png)
180
+
181
+ ![Workbench intent-to-proof trace for a story: the chain from project README through phase status, story, and evidence, with commit events and the agent handoff text](./assets/workbench-trace.png)
182
+
183
+ ![Workbench guarded editor previewing an attach-evidence mutation: exact target paths, a content fingerprint, projected post-write validation, and an explicit no-commit apply button](./assets/workbench-editor.png)
184
+
185
+ The screenshots are real captures of the workbench serving a fixture
186
+ roadmap, regenerated by
187
+ [`demos/scripts/capture-workbench-demo.sh`](./demos/scripts/capture-workbench-demo.sh)
188
+ — which also renders an animated tour, in
189
+ [`demos/`](./demos/README.md).
190
+
191
+ ## Terminal demos
192
+
193
+ Charm VHS tapes live in [`demos/`](./demos/), each regenerated by the
194
+ script named next to it there:
195
+
196
+ ![Terminal recording of onboarding: session-intake asks its guided questions, then adopt-project generates the adoption prompt](./demos/rendered/onboarding.gif)
197
+
198
+ ![Terminal recording of the commit gate blocking a contract-less commit with the failing rule, then passing a certified one and appending a consented work-log entry](./demos/rendered/commit-gate.gif)
199
+
200
+ Render them with `vhs demos/onboarding.vhs` and
201
+ `vhs demos/commit-gate.vhs`.
202
+
203
+ ## Why
204
+
205
+ Agentic coding moves fast enough that project memory becomes the
206
+ bottleneck — and "done" claims outrun proof. Delivery Workbench makes
207
+ planning, verification, and commit-time intent first-class, mechanical
208
+ artifacts. The goal is recoverable delivery: a future human or agent
209
+ can inspect the repository and understand what shipped, why it
210
+ mattered, what proved it, and where the next responsible move begins.
211
+
212
+ This repository practices what it enforces: every phase and story of
213
+ the framework itself was shipped through its own gate, with evidence,
214
+ contracts, trailers, and archives — inspect
215
+ [`pmo-roadmap/pm/roadmap/work-log-automation/`](./pmo-roadmap/pm/roadmap/work-log-automation/)
216
+ for the complete audit trail.
217
+
218
+ ## Documentation
219
+
220
+ - [Architecture guide](./docs/architecture.md) — how the six
221
+ subsystems work and what proves each claim
222
+ - [Framework README](./pmo-roadmap/README.md) — install, update,
223
+ adopt, operate
224
+ - [PMO contract](./pmo-roadmap/templates/PMO-CONTRACT.md) — the rules
225
+ and the contract template (canonical)
226
+ - [Roadmap builder methodology](./pmo-roadmap/templates/roadmap-builder.md)
227
+ - [Contributing](./CONTRIBUTING.md) — clone to gated commit, on the
228
+ rails you are contributing to
229
+ - [Changelog](./CHANGELOG.md) — releases derived from the phase final
230
+ summaries
231
+ - [Security and privacy](./SECURITY.md)
232
+ - [Brand notes](./pmo-roadmap/brand/delivery-workbench.md)
233
+
234
+ ## Validation
235
+
236
+ ```bash
237
+ python3 -m py_compile pmo-roadmap/bin/dw pmo-roadmap/bin/dw-workbench
238
+ python3 -m compileall -q pmo-roadmap/lib/dw_pmo
239
+ python3 pmo-roadmap/tests/dw-core-tests.py
240
+ pmo-roadmap/tests/adoption-discovery.sh
241
+ pmo-roadmap/tests/agent-surface.sh
242
+ pmo-roadmap/tests/canon-lint.sh
243
+ pmo-roadmap/tests/gate-parity.sh
244
+ pmo-roadmap/tests/roadmap-cli.sh
245
+ pmo-roadmap/tests/work-log-mvp.sh
246
+ pmo-roadmap/tests/workbench-explorer.sh
247
+ pmo-roadmap/tests/workbench-ui-smoke.sh
248
+ pmo-roadmap/tests/plugin-validate.sh
249
+ pmo-roadmap/tests/docs-lint.sh
250
+ pmo-roadmap/tests/docs-snippet-smoke.sh
251
+ pmo-roadmap/bin/dw check work-log-automation
252
+ shellcheck -e SC2317 pmo-roadmap/install.sh pmo-roadmap/update.sh \
253
+ pmo-roadmap/hooks/* pmo-roadmap/bin/work-log-* \
254
+ pmo-roadmap/bootstrap/*.sh pmo-roadmap/tests/*.sh demos/scripts/*.sh
255
+ ```
256
+
257
+ CI runs all of it on ubuntu and macos, plus the core suite on the
258
+ declared python3 3.9 floor and the headless viewport smoke where
259
+ Firefox is available.
260
+
261
+ ## Status
262
+
263
+ Experimental but battle-used: the framework has shipped its own
264
+ seven-phase roadmap through its own gate. Intentionally opinionated,
265
+ built for builders who want agent-assisted work to leave a durable
266
+ evidence trail.
267
+
268
+ ## License
269
+
270
+ [MIT](./LICENSE).
271
+
@@ -0,0 +1,229 @@
1
+ # Delivery Workbench
2
+
3
+ ![Pixel-art delivery workbench: a desk with a retro computer showing a green checkmark, stamped contract papers, a rubber stamp, and a cargo cart carrying a sealed package](./pmo-roadmap/assets/delivery-workbench-icon.png)
4
+
5
+ **Evidence-first rails for agentic software delivery.** Delivery
6
+ Workbench turns a Git repository into a self-verifying delivery
7
+ system: work is planned as Markdown roadmaps, proven by paired
8
+ evidence files with captured command runs, and gated at commit time
9
+ by machine-verified contracts. It is built for humans and AI agents
10
+ working the same repo — and it ships its own roadmap, built entirely
11
+ on its own rails.
12
+
13
+ Adopt an existing project in three commands:
14
+
15
+ ```bash
16
+ pmo-roadmap/install.sh /path/to/project --skip-bootstrap
17
+ pmo-roadmap/bootstrap/adopt-project.sh /path/to/project \
18
+ --project-slug myproject --project-prefix MP --with-intake --agent claude
19
+ # then, inside the project:
20
+ .githooks/dw adopt --from-report pm/roadmap/myproject/adoption/adoption-discovery.md --apply
21
+ ```
22
+
23
+ Finish with `.githooks/dw doctor` (proves the wiring) and pick up work
24
+ with `.githooks/dw next`.
25
+
26
+ What to expect from step 2: `--agent claude` spawns a read-only
27
+ discovery agent whose stdout becomes the report — it typically takes
28
+ 5–15 minutes and needs the `claude` CLI authenticated in headless
29
+ contexts; when stdin is not a TTY, `--with-intake` records a
30
+ placeholder intake and discovery flags intent as unresolved (fill the
31
+ intake, or pass answers as flags, to get a directed roadmap).
32
+
33
+ ## Install without cloning
34
+
35
+ The framework also builds as the `delivery-workbench` package: a
36
+ global `dw` carrying the bootstrap verbs (`install`, `update`,
37
+ `adopt-project`, `new-project`, `intake`) plus the full vendorable
38
+ payload. Inside an adopted repository the global `dw` always defers
39
+ to the repo's own `.githooks/dw` — the vendored rails remain the
40
+ only gating authority (see
41
+ [docs/distribution.md](./docs/distribution.md)).
42
+
43
+ Until PyPI/tap publication lands, both channels install from a local
44
+ build of this repository:
45
+
46
+ ```bash
47
+ # pipx / pip
48
+ pipx run build && pipx install dist/*.whl
49
+
50
+ # Homebrew (from the tracked formula; the smoke test wires a local tap)
51
+ pmo-roadmap/tests/brew-formula-smoke.sh
52
+ ```
53
+
54
+ Then adopt any repo with `dw install /path/to/repo` and keep it
55
+ fresh with `dw update /path/to/repo` (`--check` reports staleness
56
+ without writing).
57
+
58
+ ## What you get
59
+
60
+ - **A Markdown roadmap** under `pm/roadmap/<project>/` — phases,
61
+ stories, paired evidence files, final summaries. No database, no
62
+ tracker: the files are the source of truth.
63
+ - **The `dw` CLI** — orient (`next`, `context`, `check`), maintain
64
+ (`phase`/`story` commands with preview-safe writes), and prove
65
+ (`evidence capture` records real command runs into evidence).
66
+ - **A commit gate with verified contracts** — `dw contract new`
67
+ stamps machine-checked facts (branch, HEAD, `git write-tree` index
68
+ tree, staged sample, story IDs); the gate re-derives each at commit
69
+ time. One story ships per commit, always with its evidence.
70
+ - **A durable audit trail** — every gated commit carries `PMO-Story:`
71
+ and `PMO-Contract-Digest:` trailers, and the exact certified
72
+ contract is archived under `.git/pmo-contract-archive/<sha>`.
73
+ - **History verification** — `dw verify` re-derives the structural
74
+ rules from pushed commits alone (story flips, evidence pairing,
75
+ trailers), so CI catches what a bypassed local gate let through;
76
+ see [docs/remote-verification.md](./docs/remote-verification.md).
77
+ - **The workbench** — a localhost web view (`dw-workbench`): project
78
+ overview, health console, intent-to-proof trace timeline, and a
79
+ guarded editor whose writes go through preview → diff →
80
+ fingerprint-verified apply. It never commits.
81
+ - **Optional local work logs** — consent-gated daily delivery logs
82
+ with mechanical path exclusion and deferred summarization.
83
+ - **An agent surface** — a managed `CLAUDE.md` block, slash commands,
84
+ JSON/porcelain outputs, and strict exit-code contracts so agents
85
+ can operate the rails headlessly.
86
+
87
+ ## How a change ships
88
+
89
+ ```mermaid
90
+ sequenceDiagram
91
+ participant Dev as Human or Agent
92
+ participant DW as dw CLI
93
+ participant Git as git commit
94
+ participant Gate as pre-commit gate
95
+ participant Msg as commit-msg
96
+ participant Post as post-commit
97
+
98
+ Dev->>DW: dw story status … in-progress
99
+ Dev->>Dev: do the work
100
+ Dev->>DW: dw evidence capture … -- <verify command>
101
+ Dev->>DW: dw story status … done (refuses without evidence)
102
+ Dev->>Git: git add …
103
+ Dev->>DW: dw contract new (stamps verified facts)
104
+ Dev->>Dev: certify each rule checkbox honestly
105
+ Dev->>Git: git commit
106
+ Git->>Gate: run gate (re-derives every stamped fact)
107
+ Gate-->>Git: pass, or block with the failed rule + remediation
108
+ Git->>Msg: stamp PMO-Story + PMO-Contract-Digest trailers
109
+ Git->>Post: archive contract under .git/pmo-contract-archive/<sha>
110
+ ```
111
+
112
+ The artifact model behind it:
113
+
114
+ ```mermaid
115
+ flowchart LR
116
+ R[pm/roadmap/project README] --> P[current-phase-status]
117
+ P --> S1[story-01]
118
+ P --> S2[story-N]
119
+ S1 --> E1[evidence-story-01 + captured runs]
120
+ S2 --> E2[evidence-story-N + captured runs]
121
+ P --> F[final-summary]
122
+ E1 -.proves.-> S1
123
+ ```
124
+
125
+ ## The workbench
126
+
127
+ `dw-workbench --root /path/to/repo` serves a localhost-only web view
128
+ of the roadmap: browse projects and phases, read story/evidence pairs,
129
+ see validation drift on the health console, follow a story's
130
+ intent-to-proof trace (files → trailer-stamped commits → work logs),
131
+ and edit through guarded preview→apply mutations. The runtime boundary
132
+ is strict and tested: localhost binding, one repo root, writes only
133
+ inside `pm/roadmap/**`, no staging, no commits. See the
134
+ [framework README](./pmo-roadmap/README.md#workbench-the-local-web-view)
135
+ for usage and the full API.
136
+
137
+ ![Workbench project overview: phase table with status badges, evidence counts, the next actionable story, and a validation warning](./assets/workbench-overview.png)
138
+
139
+ ![Workbench intent-to-proof trace for a story: the chain from project README through phase status, story, and evidence, with commit events and the agent handoff text](./assets/workbench-trace.png)
140
+
141
+ ![Workbench guarded editor previewing an attach-evidence mutation: exact target paths, a content fingerprint, projected post-write validation, and an explicit no-commit apply button](./assets/workbench-editor.png)
142
+
143
+ The screenshots are real captures of the workbench serving a fixture
144
+ roadmap, regenerated by
145
+ [`demos/scripts/capture-workbench-demo.sh`](./demos/scripts/capture-workbench-demo.sh)
146
+ — which also renders an animated tour, in
147
+ [`demos/`](./demos/README.md).
148
+
149
+ ## Terminal demos
150
+
151
+ Charm VHS tapes live in [`demos/`](./demos/), each regenerated by the
152
+ script named next to it there:
153
+
154
+ ![Terminal recording of onboarding: session-intake asks its guided questions, then adopt-project generates the adoption prompt](./demos/rendered/onboarding.gif)
155
+
156
+ ![Terminal recording of the commit gate blocking a contract-less commit with the failing rule, then passing a certified one and appending a consented work-log entry](./demos/rendered/commit-gate.gif)
157
+
158
+ Render them with `vhs demos/onboarding.vhs` and
159
+ `vhs demos/commit-gate.vhs`.
160
+
161
+ ## Why
162
+
163
+ Agentic coding moves fast enough that project memory becomes the
164
+ bottleneck — and "done" claims outrun proof. Delivery Workbench makes
165
+ planning, verification, and commit-time intent first-class, mechanical
166
+ artifacts. The goal is recoverable delivery: a future human or agent
167
+ can inspect the repository and understand what shipped, why it
168
+ mattered, what proved it, and where the next responsible move begins.
169
+
170
+ This repository practices what it enforces: every phase and story of
171
+ the framework itself was shipped through its own gate, with evidence,
172
+ contracts, trailers, and archives — inspect
173
+ [`pmo-roadmap/pm/roadmap/work-log-automation/`](./pmo-roadmap/pm/roadmap/work-log-automation/)
174
+ for the complete audit trail.
175
+
176
+ ## Documentation
177
+
178
+ - [Architecture guide](./docs/architecture.md) — how the six
179
+ subsystems work and what proves each claim
180
+ - [Framework README](./pmo-roadmap/README.md) — install, update,
181
+ adopt, operate
182
+ - [PMO contract](./pmo-roadmap/templates/PMO-CONTRACT.md) — the rules
183
+ and the contract template (canonical)
184
+ - [Roadmap builder methodology](./pmo-roadmap/templates/roadmap-builder.md)
185
+ - [Contributing](./CONTRIBUTING.md) — clone to gated commit, on the
186
+ rails you are contributing to
187
+ - [Changelog](./CHANGELOG.md) — releases derived from the phase final
188
+ summaries
189
+ - [Security and privacy](./SECURITY.md)
190
+ - [Brand notes](./pmo-roadmap/brand/delivery-workbench.md)
191
+
192
+ ## Validation
193
+
194
+ ```bash
195
+ python3 -m py_compile pmo-roadmap/bin/dw pmo-roadmap/bin/dw-workbench
196
+ python3 -m compileall -q pmo-roadmap/lib/dw_pmo
197
+ python3 pmo-roadmap/tests/dw-core-tests.py
198
+ pmo-roadmap/tests/adoption-discovery.sh
199
+ pmo-roadmap/tests/agent-surface.sh
200
+ pmo-roadmap/tests/canon-lint.sh
201
+ pmo-roadmap/tests/gate-parity.sh
202
+ pmo-roadmap/tests/roadmap-cli.sh
203
+ pmo-roadmap/tests/work-log-mvp.sh
204
+ pmo-roadmap/tests/workbench-explorer.sh
205
+ pmo-roadmap/tests/workbench-ui-smoke.sh
206
+ pmo-roadmap/tests/plugin-validate.sh
207
+ pmo-roadmap/tests/docs-lint.sh
208
+ pmo-roadmap/tests/docs-snippet-smoke.sh
209
+ pmo-roadmap/bin/dw check work-log-automation
210
+ shellcheck -e SC2317 pmo-roadmap/install.sh pmo-roadmap/update.sh \
211
+ pmo-roadmap/hooks/* pmo-roadmap/bin/work-log-* \
212
+ pmo-roadmap/bootstrap/*.sh pmo-roadmap/tests/*.sh demos/scripts/*.sh
213
+ ```
214
+
215
+ CI runs all of it on ubuntu and macos, plus the core suite on the
216
+ declared python3 3.9 floor and the headless viewport smoke where
217
+ Firefox is available.
218
+
219
+ ## Status
220
+
221
+ Experimental but battle-used: the framework has shipped its own
222
+ seven-phase roadmap through its own gate. Intentionally opinionated,
223
+ built for builders who want agent-assisted work to leave a durable
224
+ evidence trail.
225
+
226
+ ## License
227
+
228
+ [MIT](./LICENSE).
229
+
@@ -0,0 +1,21 @@
1
+ ---
2
+ description: Drive Delivery Workbench adoption for this repository (intake → discovery → roadmap).
3
+ ---
4
+
5
+ Drive the Delivery Workbench adoption flow for this repository. Ask
6
+ the user for anything you cannot infer; do not fabricate intent.
7
+
8
+ 1. Verify the install: `.githooks/dw doctor`. If the framework is not
9
+ installed, run `<framework>/pmo-roadmap/install.sh <this-repo> --skip-bootstrap`
10
+ first (ask the user where the framework checkout lives).
11
+ 2. Capture intent — run the session intake (interactive when the user
12
+ is present, flags otherwise):
13
+ `<framework>/pmo-roadmap/bootstrap/session-intake.sh <this-repo> --project-name "…" --project-slug <slug> --project-prefix <PFX>`
14
+ 3. Run adoption discovery:
15
+ `<framework>/pmo-roadmap/bootstrap/adopt-project.sh <this-repo> --project-name "…" --project-slug <slug> --project-prefix <PFX> --require-intake`
16
+ Read the generated `pm/roadmap/<slug>/adoption/adoption-discovery.md`.
17
+ 4. Turn the report's proposed phases and first stories into a real
18
+ roadmap with `.githooks/dw phase create` and
19
+ `.githooks/dw story create` (show the user the plan first).
20
+ 5. Finish with `.githooks/dw doctor` and `.githooks/dw check`, and
21
+ report the next actionable story from `.githooks/dw next`.
@@ -0,0 +1,23 @@
1
+ ---
2
+ description: Generate and honestly certify the commit contract for the staged work.
3
+ ---
4
+
5
+ Author the PMO commit contract for the currently staged work.
6
+
7
+ 1. Confirm staging is final (`git status`, `git diff --cached --stat`).
8
+ The contract stamps the staged index tree — restaging afterwards
9
+ invalidates it.
10
+ 2. Generate it:
11
+ `.githooks/dw contract new [--story <ID>] [--consent yes --reasons "…"] [--tests-capture <evidence-path>[#ts]]`
12
+ Use `--tests-capture` whenever a passing captured run exists in the
13
+ staged evidence — it discharges the "Tests ran." rule mechanically.
14
+ 3. Read `.tmp/CONTRACT.md`. For each remaining `- [ ]` box, actually
15
+ verify the rule against the staged diff (evidence on disk, master
16
+ docs updated in this commit, no bypasses, pairing, atomicity). Only
17
+ then flip it to `- [x]`. Never flip a box you have not verified —
18
+ the archived contract and digest trailer make this certification
19
+ permanent.
20
+ 4. Preflight with `.githooks/dw gate` (non-consuming). If it fails,
21
+ the banner names the rule and the fix.
22
+ 5. Report the contract summary (story, consent, discharged rules) and
23
+ that the commit is ready.
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Orient in the Delivery Workbench roadmap and pick up the next story.
3
+ ---
4
+
5
+ Orient yourself in this repository's Delivery Workbench roadmap and
6
+ report what to work on next. Do not change anything yet.
7
+
8
+ 1. Run `.githooks/dw doctor` — if anything FAILs, report it and stop.
9
+ 2. Run `.githooks/dw next --json`. Exit 0 means a story was found;
10
+ exit 2 means nothing is actionable (report that and stop).
11
+ 3. Run `.githooks/dw check` and `.githooks/dw context --compact`; read
12
+ the current phase's `current-phase-status.md` "Where we are" section
13
+ and the story file itself.
14
+ 4. Report: the story ID and title, its acceptance criteria, any lint
15
+ issues or warnings that affect it, and your plan to complete it.
16
+
17
+ If the user confirms, flip it in-progress before working:
18
+ `.githooks/dw story status <project> <phase> <story> in-progress`
@@ -0,0 +1,28 @@
1
+ ---
2
+ description: Prove, flip, and ship the current story through the PMO gate.
3
+ ---
4
+
5
+ Close out the story the user names (or the current in-progress story
6
+ from `.githooks/dw next`). Evidence first, then the flip, then the
7
+ gated commit.
8
+
9
+ 1. Prove the work with real runs — for each documented verification
10
+ command:
11
+ `.githooks/dw evidence capture <project> <phase> <story> -- <command>`
12
+ Nonzero exits are recorded honestly; fix and re-capture until the
13
+ run that matters passes. Add narrative context to the evidence file
14
+ around the captured blocks; screenshots/binaries go in `assets/`
15
+ next to it.
16
+ 2. Flip it: `.githooks/dw story status <project> <phase> <story> done`
17
+ (it refuses without evidence and updates the phase table
18
+ transactionally).
19
+ 3. Update the phase's "Where we are" pickup snapshot and any canon doc
20
+ the story touches — the gate requires master docs in the same
21
+ commit.
22
+ 4. Stage everything, then run /dw-contract (generate → verify → certify;
23
+ use `--tests-capture` for the captured run from step 1).
24
+ 5. `git commit` with a clear message. The gate verifies the flip ships
25
+ its evidence; trailers and the contract archive are automatic.
26
+ Exactly one story flips per commit — bundle only with
27
+ `.tmp/BUNDLE-OK.md` and a one-line rationale.
28
+ 6. Run `.githooks/dw check` and report the outcome with the commit sha.