delivery-workbench 1.7.0__py3-none-any.whl

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 (84) hide show
  1. delivery_workbench-1.7.0.dist-info/METADATA +271 -0
  2. delivery_workbench-1.7.0.dist-info/RECORD +84 -0
  3. delivery_workbench-1.7.0.dist-info/WHEEL +5 -0
  4. delivery_workbench-1.7.0.dist-info/entry_points.txt +2 -0
  5. delivery_workbench-1.7.0.dist-info/licenses/LICENSE +21 -0
  6. delivery_workbench-1.7.0.dist-info/top_level.txt +1 -0
  7. dw_pmo/__init__.py +130 -0
  8. dw_pmo/_payload/agent/dw-adopt.md +21 -0
  9. dw_pmo/_payload/agent/dw-contract.md +23 -0
  10. dw_pmo/_payload/agent/dw-next.md +18 -0
  11. dw_pmo/_payload/agent/dw-story-done.md +28 -0
  12. dw_pmo/_payload/bin/dw +605 -0
  13. dw_pmo/_payload/bin/dw-mcp +59 -0
  14. dw_pmo/_payload/bin/dw-workbench +53 -0
  15. dw_pmo/_payload/bin/work-log-read +115 -0
  16. dw_pmo/_payload/bin/work-log-summarize +210 -0
  17. dw_pmo/_payload/bootstrap/adopt-project.sh +204 -0
  18. dw_pmo/_payload/bootstrap/new-project.sh +76 -0
  19. dw_pmo/_payload/bootstrap/session-intake.sh +453 -0
  20. dw_pmo/_payload/hooks/commit-msg +39 -0
  21. dw_pmo/_payload/hooks/post-commit +243 -0
  22. dw_pmo/_payload/hooks/pre-commit +345 -0
  23. dw_pmo/_payload/install.sh +265 -0
  24. dw_pmo/_payload/lib/delivery_workbench.egg-info/PKG-INFO +271 -0
  25. dw_pmo/_payload/lib/delivery_workbench.egg-info/SOURCES.txt +63 -0
  26. dw_pmo/_payload/lib/delivery_workbench.egg-info/dependency_links.txt +1 -0
  27. dw_pmo/_payload/lib/delivery_workbench.egg-info/entry_points.txt +2 -0
  28. dw_pmo/_payload/lib/delivery_workbench.egg-info/top_level.txt +1 -0
  29. dw_pmo/_payload/lib/dw_pmo/__init__.py +130 -0
  30. dw_pmo/_payload/lib/dw_pmo/adopt.py +213 -0
  31. dw_pmo/_payload/lib/dw_pmo/agentdocs.py +157 -0
  32. dw_pmo/_payload/lib/dw_pmo/api.py +288 -0
  33. dw_pmo/_payload/lib/dw_pmo/contract.py +447 -0
  34. dw_pmo/_payload/lib/dw_pmo/docslint.py +359 -0
  35. dw_pmo/_payload/lib/dw_pmo/doctor.py +131 -0
  36. dw_pmo/_payload/lib/dw_pmo/evidence.py +186 -0
  37. dw_pmo/_payload/lib/dw_pmo/gate.py +523 -0
  38. dw_pmo/_payload/lib/dw_pmo/gitio.py +141 -0
  39. dw_pmo/_payload/lib/dw_pmo/launcher.py +120 -0
  40. dw_pmo/_payload/lib/dw_pmo/mcpserver.py +536 -0
  41. dw_pmo/_payload/lib/dw_pmo/model.py +70 -0
  42. dw_pmo/_payload/lib/dw_pmo/mutations.py +400 -0
  43. dw_pmo/_payload/lib/dw_pmo/parse.py +220 -0
  44. dw_pmo/_payload/lib/dw_pmo/paths.py +120 -0
  45. dw_pmo/_payload/lib/dw_pmo/render.py +263 -0
  46. dw_pmo/_payload/lib/dw_pmo/trace.py +85 -0
  47. dw_pmo/_payload/lib/dw_pmo/validate.py +278 -0
  48. dw_pmo/_payload/lib/dw_pmo/verify.py +432 -0
  49. dw_pmo/_payload/lib/dw_pmo/workbench.py +538 -0
  50. dw_pmo/_payload/templates/CLAUDE-snippet.md +72 -0
  51. dw_pmo/_payload/templates/CONTRACT.md.tmpl +27 -0
  52. dw_pmo/_payload/templates/PMO-CONTRACT.md +334 -0
  53. dw_pmo/_payload/templates/adoption-discovery-prompt.md +150 -0
  54. dw_pmo/_payload/templates/examples/project-extension-example.md +68 -0
  55. dw_pmo/_payload/templates/examples/roadmap-builder-worked-example.md +38 -0
  56. dw_pmo/_payload/templates/phase-status.md.tmpl +52 -0
  57. dw_pmo/_payload/templates/project-README.md.tmpl +54 -0
  58. dw_pmo/_payload/templates/roadmap-builder.md +523 -0
  59. dw_pmo/_payload/templates/session-intake.md.tmpl +69 -0
  60. dw_pmo/_payload/templates/story.md.tmpl +39 -0
  61. dw_pmo/_payload/update.sh +205 -0
  62. dw_pmo/_payload/workbench/app.js +618 -0
  63. dw_pmo/_payload/workbench/index.html +29 -0
  64. dw_pmo/_payload/workbench/style.css +207 -0
  65. dw_pmo/adopt.py +213 -0
  66. dw_pmo/agentdocs.py +157 -0
  67. dw_pmo/api.py +288 -0
  68. dw_pmo/contract.py +447 -0
  69. dw_pmo/docslint.py +359 -0
  70. dw_pmo/doctor.py +131 -0
  71. dw_pmo/evidence.py +186 -0
  72. dw_pmo/gate.py +523 -0
  73. dw_pmo/gitio.py +141 -0
  74. dw_pmo/launcher.py +120 -0
  75. dw_pmo/mcpserver.py +536 -0
  76. dw_pmo/model.py +70 -0
  77. dw_pmo/mutations.py +400 -0
  78. dw_pmo/parse.py +220 -0
  79. dw_pmo/paths.py +120 -0
  80. dw_pmo/render.py +263 -0
  81. dw_pmo/trace.py +85 -0
  82. dw_pmo/validate.py +278 -0
  83. dw_pmo/verify.py +432 -0
  84. dw_pmo/workbench.py +538 -0
@@ -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,84 @@
1
+ delivery_workbench-1.7.0.dist-info/licenses/LICENSE,sha256=chfBgM4DZzA4SB9GkycK4Bjwu_-HVtj_LWMMsdP7N40,1062
2
+ dw_pmo/__init__.py,sha256=sih7UhpILe1JUAUNykGKDpWWsRct8OOJG7_wOthI2TQ,3087
3
+ dw_pmo/adopt.py,sha256=eg7k9nQO5AU48ceUekmfntVImKsURDj-gPtqFDcinmc,8201
4
+ dw_pmo/agentdocs.py,sha256=i-XFpHWJhQ73jxINNaw-AQpFfs1Xs_j0vx4FQ_z2p8E,6516
5
+ dw_pmo/api.py,sha256=rqFBtPp24wHOwPKkZWlZfL6TZAz3DlCzlZGjfbdWLHA,11755
6
+ dw_pmo/contract.py,sha256=fkxnDBy4X0hoR_AlXMF8b0_-IBeHJExXKQPBijVsVJw,16552
7
+ dw_pmo/docslint.py,sha256=44bh5Vbv6eul1yu6T3iVMSXdSOJAvOJNUgxZHeYuo6I,13346
8
+ dw_pmo/doctor.py,sha256=OuRBtNkP3leBnuIOJ0U9rfvxwlp1Csh9Dc62r-Iwpbc,4260
9
+ dw_pmo/evidence.py,sha256=6fj-15M2-1CE0AGDtnyaAxx1j1db21nJdr7euqDp-t4,6097
10
+ dw_pmo/gate.py,sha256=1wzx7v3l6pkGzyqUy3SFG7rOCuPUfh3EQP2HEvHffOI,22217
11
+ dw_pmo/gitio.py,sha256=Ih0by-FIZHu59UJ8OChYk1jjWhDoqr8aDurPgaOUHh4,4066
12
+ dw_pmo/launcher.py,sha256=2sXtuVWv6OxykqWwvS0XhNxEiIEILC6z8koJ1yjy9Wg,4163
13
+ dw_pmo/mcpserver.py,sha256=SqOq4S-NuiF599I2oIPk8TJXAhdxmPgF6pOulugXABA,19654
14
+ dw_pmo/model.py,sha256=j2Z3Hubr7NS-YMeJIIArnuVAmuqasX0uk95kheI3JuU,1957
15
+ dw_pmo/mutations.py,sha256=UFi-Fh6EsHiUyzZfJo1ILIVhWlHXaD6nJNXgNgvq5Yw,15238
16
+ dw_pmo/parse.py,sha256=e2yjGa21qXE2F-v9BvjV5W17TZd78o2ltguW-wHTblg,7617
17
+ dw_pmo/paths.py,sha256=OzJ4YaNZcgIA6DV1w_rZ-jgX8D2C1FmN5XYTlaYDRD4,3592
18
+ dw_pmo/render.py,sha256=7MwInwAZPA-rJgmvh1VR4TaZsi2CY9eHU9mlgYDP_5s,8120
19
+ dw_pmo/trace.py,sha256=qs8l1zbIDoQWT5KFDdAkeULeHYCQ8jcF7Rmz5vA4l3Y,2854
20
+ dw_pmo/validate.py,sha256=Qd9UnWsWz6WjVFf4ksol-B_lRcMry5r8jY4gjIHkVdo,13070
21
+ dw_pmo/verify.py,sha256=a0feJjKGbwkriBNgLo3ndzTmqN4XBSAj-99ifmhXMsM,15876
22
+ dw_pmo/workbench.py,sha256=V3gy5hveWaPmUOyQVBeWesI7WoQi7Tu-2lWOHGFD70M,22756
23
+ dw_pmo/_payload/install.sh,sha256=mToC6fAK8QCngxZCUYOR5T4yk66p42DYeiuuW-b6Dfk,10453
24
+ dw_pmo/_payload/update.sh,sha256=em_OVVhSD-ol4FL8P-W2mRnpUJzKduK4xaY_Ebs-prM,8649
25
+ dw_pmo/_payload/agent/dw-adopt.md,sha256=rAmJvbCzNstFNUT2JWuExM6Yv6czZWxBiCgjOwoUyuY,1259
26
+ dw_pmo/_payload/agent/dw-contract.md,sha256=Sx3E7vmHslUdkOpWHmcAiDdV1ND73DadSzr17_Vqldg,1165
27
+ dw_pmo/_payload/agent/dw-next.md,sha256=ERWUBkFIROrgJcjL0Wr8GiCXcUh9wNAACTw7wuY-otQ,853
28
+ dw_pmo/_payload/agent/dw-story-done.md,sha256=uggTUgUoaEO35O6tu7CVC7C_Sfd2SsBkOGK5oX5KuMg,1369
29
+ dw_pmo/_payload/bin/dw,sha256=IQXnITMXI4ZeB9BrC7xCKswmklS2AzOLYMeIm1d3TKU,23746
30
+ dw_pmo/_payload/bin/dw-mcp,sha256=8KqbWVIOUxKCskSEzOqemDeEf1O6NBGQjyJUqUERfBo,1759
31
+ dw_pmo/_payload/bin/dw-workbench,sha256=Bz_affZRk0hbJZtVByhsM3944mtFfLrlOzVhzZuAcZg,1882
32
+ dw_pmo/_payload/bin/work-log-read,sha256=Pew8uc_fxkFa1cjZxn6UAxDquXu1kbxZKpO6SoZ0CNY,3173
33
+ dw_pmo/_payload/bin/work-log-summarize,sha256=vUQG2FUV4GBkYe6D0OB4Oecp5YSIXlL7aYzBskeSteM,6513
34
+ dw_pmo/_payload/bootstrap/adopt-project.sh,sha256=6c29GHrPzfqrdR11k-KjrAzkU5fVtiEyXbbuXzJLQVc,7090
35
+ dw_pmo/_payload/bootstrap/new-project.sh,sha256=4LGsP30MFHDYM-zmlKGrR3uuI8RxalceJHPDDJezCjE,2821
36
+ dw_pmo/_payload/bootstrap/session-intake.sh,sha256=NyU7sn1YgFk7TK753Lz_chuHQ_h5dXTyES-j-NRzsCA,14725
37
+ dw_pmo/_payload/hooks/commit-msg,sha256=f7wQUNEW8YAfIvYb5AKuR8HAD8WIC3RotTe48aYgfuQ,1122
38
+ dw_pmo/_payload/hooks/post-commit,sha256=79zz6FHZBRAvzyc4eUOb8BZUKxH8kzP2RQIW42i51w4,7682
39
+ dw_pmo/_payload/hooks/pre-commit,sha256=QpcEo7LvA0HWvM9GnBGf9NYuj7VNXOuOH2nExS5u_Kw,11346
40
+ dw_pmo/_payload/lib/delivery_workbench.egg-info/PKG-INFO,sha256=KvLgUWL3hUmMMW2znGYdUlqxOUVuHY55bXlyJ4hJmNg,11955
41
+ dw_pmo/_payload/lib/delivery_workbench.egg-info/SOURCES.txt,sha256=110xy-jTd6dSvxJk-iZAcAQ3YXiDSSAYJKVayRTAhiQ,2171
42
+ dw_pmo/_payload/lib/delivery_workbench.egg-info/dependency_links.txt,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
43
+ dw_pmo/_payload/lib/delivery_workbench.egg-info/entry_points.txt,sha256=FUDZmQ9WG48uNlLVa7TIlLqlBhkwopXi492jIZTyu74,44
44
+ dw_pmo/_payload/lib/delivery_workbench.egg-info/top_level.txt,sha256=y_B81lzPqWAx_qM-_un4p1owm9wzcQYKAK-DXRzgG9Y,7
45
+ dw_pmo/_payload/lib/dw_pmo/__init__.py,sha256=sih7UhpILe1JUAUNykGKDpWWsRct8OOJG7_wOthI2TQ,3087
46
+ dw_pmo/_payload/lib/dw_pmo/adopt.py,sha256=eg7k9nQO5AU48ceUekmfntVImKsURDj-gPtqFDcinmc,8201
47
+ dw_pmo/_payload/lib/dw_pmo/agentdocs.py,sha256=i-XFpHWJhQ73jxINNaw-AQpFfs1Xs_j0vx4FQ_z2p8E,6516
48
+ dw_pmo/_payload/lib/dw_pmo/api.py,sha256=rqFBtPp24wHOwPKkZWlZfL6TZAz3DlCzlZGjfbdWLHA,11755
49
+ dw_pmo/_payload/lib/dw_pmo/contract.py,sha256=fkxnDBy4X0hoR_AlXMF8b0_-IBeHJExXKQPBijVsVJw,16552
50
+ dw_pmo/_payload/lib/dw_pmo/docslint.py,sha256=44bh5Vbv6eul1yu6T3iVMSXdSOJAvOJNUgxZHeYuo6I,13346
51
+ dw_pmo/_payload/lib/dw_pmo/doctor.py,sha256=OuRBtNkP3leBnuIOJ0U9rfvxwlp1Csh9Dc62r-Iwpbc,4260
52
+ dw_pmo/_payload/lib/dw_pmo/evidence.py,sha256=6fj-15M2-1CE0AGDtnyaAxx1j1db21nJdr7euqDp-t4,6097
53
+ dw_pmo/_payload/lib/dw_pmo/gate.py,sha256=1wzx7v3l6pkGzyqUy3SFG7rOCuPUfh3EQP2HEvHffOI,22217
54
+ dw_pmo/_payload/lib/dw_pmo/gitio.py,sha256=Ih0by-FIZHu59UJ8OChYk1jjWhDoqr8aDurPgaOUHh4,4066
55
+ dw_pmo/_payload/lib/dw_pmo/launcher.py,sha256=2sXtuVWv6OxykqWwvS0XhNxEiIEILC6z8koJ1yjy9Wg,4163
56
+ dw_pmo/_payload/lib/dw_pmo/mcpserver.py,sha256=SqOq4S-NuiF599I2oIPk8TJXAhdxmPgF6pOulugXABA,19654
57
+ dw_pmo/_payload/lib/dw_pmo/model.py,sha256=j2Z3Hubr7NS-YMeJIIArnuVAmuqasX0uk95kheI3JuU,1957
58
+ dw_pmo/_payload/lib/dw_pmo/mutations.py,sha256=UFi-Fh6EsHiUyzZfJo1ILIVhWlHXaD6nJNXgNgvq5Yw,15238
59
+ dw_pmo/_payload/lib/dw_pmo/parse.py,sha256=e2yjGa21qXE2F-v9BvjV5W17TZd78o2ltguW-wHTblg,7617
60
+ dw_pmo/_payload/lib/dw_pmo/paths.py,sha256=OzJ4YaNZcgIA6DV1w_rZ-jgX8D2C1FmN5XYTlaYDRD4,3592
61
+ dw_pmo/_payload/lib/dw_pmo/render.py,sha256=7MwInwAZPA-rJgmvh1VR4TaZsi2CY9eHU9mlgYDP_5s,8120
62
+ dw_pmo/_payload/lib/dw_pmo/trace.py,sha256=qs8l1zbIDoQWT5KFDdAkeULeHYCQ8jcF7Rmz5vA4l3Y,2854
63
+ dw_pmo/_payload/lib/dw_pmo/validate.py,sha256=Qd9UnWsWz6WjVFf4ksol-B_lRcMry5r8jY4gjIHkVdo,13070
64
+ dw_pmo/_payload/lib/dw_pmo/verify.py,sha256=a0feJjKGbwkriBNgLo3ndzTmqN4XBSAj-99ifmhXMsM,15876
65
+ dw_pmo/_payload/lib/dw_pmo/workbench.py,sha256=V3gy5hveWaPmUOyQVBeWesI7WoQi7Tu-2lWOHGFD70M,22756
66
+ dw_pmo/_payload/templates/CLAUDE-snippet.md,sha256=uC5PCXce_dE0zOK0qnNm3BnGeuqQzB4RTxmlXt112co,3570
67
+ dw_pmo/_payload/templates/CONTRACT.md.tmpl,sha256=bVUV3OYPAUAI_Rnwcpacfp5mPXO5DMKV_FNAe6SDtp8,441
68
+ dw_pmo/_payload/templates/PMO-CONTRACT.md,sha256=OSavn36lZ7RiNQF4j3ISxDH4RfIOMNyXXC2X7V8zMPs,14123
69
+ dw_pmo/_payload/templates/adoption-discovery-prompt.md,sha256=WXrOZ6yUG3-FgRJG4L5x2BJ23gab5e4ZvlUVDDXOiu8,5065
70
+ dw_pmo/_payload/templates/phase-status.md.tmpl,sha256=u525_coZDgmCzzkC1dISsctd06xyGQb5fK0cf6uunHY,1608
71
+ dw_pmo/_payload/templates/project-README.md.tmpl,sha256=vwDHRLyXfU7ht4Q4LCTMBKJqHktSI0Q_xdtepB-1G84,1648
72
+ dw_pmo/_payload/templates/roadmap-builder.md,sha256=hZm8Yj1GBzoQTZCASmkbBCVpPmq-dDy5y8jpx6NHZdo,19612
73
+ dw_pmo/_payload/templates/session-intake.md.tmpl,sha256=9NhUrCHeJJd8zmnSlqalOR1NoOXyXlFTJpyvOFP9K7c,1142
74
+ dw_pmo/_payload/templates/story.md.tmpl,sha256=xXo_-Ggo3CpvboODWzB59OfczalnhxR1SnSI1twkcBI,1064
75
+ dw_pmo/_payload/templates/examples/project-extension-example.md,sha256=sGsyWlADRzbYdjSwEq1JPpHmdxK9AFfxPEapzVDbClI,2707
76
+ dw_pmo/_payload/templates/examples/roadmap-builder-worked-example.md,sha256=S-q9bzYrxmfMQpi_rz_w2929NCHgDRGjyVGEz1FWl2o,1728
77
+ dw_pmo/_payload/workbench/app.js,sha256=MmYT7owe8Ook7NI_H-ms2QwDdJHvkfwgjsfLNzhK1Cg,32779
78
+ dw_pmo/_payload/workbench/index.html,sha256=fbk3iEntx4vPbMUafHk_RQIuxPuD7-0JQE9UnSdy5t4,982
79
+ dw_pmo/_payload/workbench/style.css,sha256=Pxo-xrCCLRS5Y_7zLxm3O6CQNVIpJJtnhUgd6JPAHsw,8245
80
+ delivery_workbench-1.7.0.dist-info/METADATA,sha256=KvLgUWL3hUmMMW2znGYdUlqxOUVuHY55bXlyJ4hJmNg,11955
81
+ delivery_workbench-1.7.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
82
+ delivery_workbench-1.7.0.dist-info/entry_points.txt,sha256=FUDZmQ9WG48uNlLVa7TIlLqlBhkwopXi492jIZTyu74,44
83
+ delivery_workbench-1.7.0.dist-info/top_level.txt,sha256=y_B81lzPqWAx_qM-_un4p1owm9wzcQYKAK-DXRzgG9Y,7
84
+ delivery_workbench-1.7.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ dw = dw_pmo.launcher:main
@@ -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 @@
1
+ dw_pmo
dw_pmo/__init__.py ADDED
@@ -0,0 +1,130 @@
1
+ """Delivery Workbench PMO core.
2
+
3
+ Deterministic parser, validator, trace, and mutation primitives over the
4
+ Markdown roadmap under ``pm/roadmap/**``. This package is the single
5
+ source of behavior for ``bin/dw`` and any future adapter (workbench
6
+ server, gate engine). Markdown stays authoritative: nothing here caches
7
+ state outside the roadmap tree.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from .model import (
13
+ DONE_STATUSES,
14
+ OPEN_STATUSES,
15
+ PHASE_RE,
16
+ STORY_ID_RE,
17
+ STORY_RE,
18
+ DwError,
19
+ Phase,
20
+ Project,
21
+ StoryRow,
22
+ die,
23
+ )
24
+ from .paths import (
25
+ ensure_under,
26
+ find_root,
27
+ read_text,
28
+ rel,
29
+ roadmap_dir,
30
+ slugify,
31
+ strip_code,
32
+ template_dir,
33
+ work_log_root,
34
+ write_text,
35
+ )
36
+ from .parse import (
37
+ current_phase_status_path,
38
+ discover_phases,
39
+ discover_projects,
40
+ find_story,
41
+ get_phase,
42
+ get_project,
43
+ header_status,
44
+ hook_snapshot,
45
+ infer_prefix,
46
+ link_target,
47
+ parse_current_phase_target,
48
+ parse_story_rows,
49
+ split_table_row,
50
+ story_num_from_file,
51
+ story_title,
52
+ supplemental_canon,
53
+ )
54
+ from .trace import parse_work_log_entry, recent_commits, work_log_entries
55
+ from .render import (
56
+ evidence_link_for,
57
+ render_evidence,
58
+ render_final_summary,
59
+ render_phase_template,
60
+ render_story_template,
61
+ replace_phase_index_content,
62
+ replace_story_table_content,
63
+ update_phase_index_status_content,
64
+ update_story_header_status_content,
65
+ update_story_table_row_content,
66
+ )
67
+ from .validate import check_project, project_warnings
68
+ from .mutations import (
69
+ FileChange,
70
+ MutationPlan,
71
+ apply_plan,
72
+ plan_fingerprint,
73
+ plan_phase_close,
74
+ plan_phase_create,
75
+ plan_story_create,
76
+ plan_story_evidence,
77
+ plan_story_status,
78
+ preview_plan,
79
+ projected_issues,
80
+ write_changes,
81
+ )
82
+ from .api import build_context_payload, handoff_summary, next_story, phase_events, project_context, story_context, story_timeline
83
+ from .contract import (
84
+ append_trailers,
85
+ build_contract,
86
+ contract_box_lines,
87
+ contract_digest,
88
+ contract_rule_titles,
89
+ detect_story_ids,
90
+ parse_contract_facts,
91
+ rules_doc_path,
92
+ write_contract,
93
+ )
94
+ from .evidence import (
95
+ CAPTURE_HEADING_RE,
96
+ TRUNCATION_MARKER,
97
+ find_captured_run,
98
+ latest_passing_capture,
99
+ parse_captured_runs,
100
+ render_capture_block,
101
+ run_capture,
102
+ )
103
+ from .gate import (
104
+ GateFailure,
105
+ GateResult,
106
+ render_gate_failure,
107
+ render_gate_porcelain,
108
+ run_gate,
109
+ )
110
+ from .verify import (
111
+ VerifyResult,
112
+ Violation,
113
+ render_verify,
114
+ render_verify_porcelain,
115
+ run_verify,
116
+ )
117
+ from .model import EVIDENCE_PLACEHOLDER, STORY_STATUSES
118
+ from .validate import classify_issue, classify_warning, evidence_content_issues, health_report, hook_seam_explanations
119
+ from .agentdocs import (
120
+ BEGIN_MARKER,
121
+ END_MARKER,
122
+ agent_docs_status,
123
+ canonical_block,
124
+ render_block,
125
+ write_agent_docs,
126
+ )
127
+ from .doctor import DoctorCheck, render_doctor, run_doctor
128
+ from .adopt import AdoptionReport, parse_adoption_report, run_adoption
129
+
130
+ __version__ = "1.7.0"
@@ -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.