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.
- delivery_workbench-1.7.0.dist-info/METADATA +271 -0
- delivery_workbench-1.7.0.dist-info/RECORD +84 -0
- delivery_workbench-1.7.0.dist-info/WHEEL +5 -0
- delivery_workbench-1.7.0.dist-info/entry_points.txt +2 -0
- delivery_workbench-1.7.0.dist-info/licenses/LICENSE +21 -0
- delivery_workbench-1.7.0.dist-info/top_level.txt +1 -0
- dw_pmo/__init__.py +130 -0
- dw_pmo/_payload/agent/dw-adopt.md +21 -0
- dw_pmo/_payload/agent/dw-contract.md +23 -0
- dw_pmo/_payload/agent/dw-next.md +18 -0
- dw_pmo/_payload/agent/dw-story-done.md +28 -0
- dw_pmo/_payload/bin/dw +605 -0
- dw_pmo/_payload/bin/dw-mcp +59 -0
- dw_pmo/_payload/bin/dw-workbench +53 -0
- dw_pmo/_payload/bin/work-log-read +115 -0
- dw_pmo/_payload/bin/work-log-summarize +210 -0
- dw_pmo/_payload/bootstrap/adopt-project.sh +204 -0
- dw_pmo/_payload/bootstrap/new-project.sh +76 -0
- dw_pmo/_payload/bootstrap/session-intake.sh +453 -0
- dw_pmo/_payload/hooks/commit-msg +39 -0
- dw_pmo/_payload/hooks/post-commit +243 -0
- dw_pmo/_payload/hooks/pre-commit +345 -0
- dw_pmo/_payload/install.sh +265 -0
- dw_pmo/_payload/lib/delivery_workbench.egg-info/PKG-INFO +271 -0
- dw_pmo/_payload/lib/delivery_workbench.egg-info/SOURCES.txt +63 -0
- dw_pmo/_payload/lib/delivery_workbench.egg-info/dependency_links.txt +1 -0
- dw_pmo/_payload/lib/delivery_workbench.egg-info/entry_points.txt +2 -0
- dw_pmo/_payload/lib/delivery_workbench.egg-info/top_level.txt +1 -0
- dw_pmo/_payload/lib/dw_pmo/__init__.py +130 -0
- dw_pmo/_payload/lib/dw_pmo/adopt.py +213 -0
- dw_pmo/_payload/lib/dw_pmo/agentdocs.py +157 -0
- dw_pmo/_payload/lib/dw_pmo/api.py +288 -0
- dw_pmo/_payload/lib/dw_pmo/contract.py +447 -0
- dw_pmo/_payload/lib/dw_pmo/docslint.py +359 -0
- dw_pmo/_payload/lib/dw_pmo/doctor.py +131 -0
- dw_pmo/_payload/lib/dw_pmo/evidence.py +186 -0
- dw_pmo/_payload/lib/dw_pmo/gate.py +523 -0
- dw_pmo/_payload/lib/dw_pmo/gitio.py +141 -0
- dw_pmo/_payload/lib/dw_pmo/launcher.py +120 -0
- dw_pmo/_payload/lib/dw_pmo/mcpserver.py +536 -0
- dw_pmo/_payload/lib/dw_pmo/model.py +70 -0
- dw_pmo/_payload/lib/dw_pmo/mutations.py +400 -0
- dw_pmo/_payload/lib/dw_pmo/parse.py +220 -0
- dw_pmo/_payload/lib/dw_pmo/paths.py +120 -0
- dw_pmo/_payload/lib/dw_pmo/render.py +263 -0
- dw_pmo/_payload/lib/dw_pmo/trace.py +85 -0
- dw_pmo/_payload/lib/dw_pmo/validate.py +278 -0
- dw_pmo/_payload/lib/dw_pmo/verify.py +432 -0
- dw_pmo/_payload/lib/dw_pmo/workbench.py +538 -0
- dw_pmo/_payload/templates/CLAUDE-snippet.md +72 -0
- dw_pmo/_payload/templates/CONTRACT.md.tmpl +27 -0
- dw_pmo/_payload/templates/PMO-CONTRACT.md +334 -0
- dw_pmo/_payload/templates/adoption-discovery-prompt.md +150 -0
- dw_pmo/_payload/templates/examples/project-extension-example.md +68 -0
- dw_pmo/_payload/templates/examples/roadmap-builder-worked-example.md +38 -0
- dw_pmo/_payload/templates/phase-status.md.tmpl +52 -0
- dw_pmo/_payload/templates/project-README.md.tmpl +54 -0
- dw_pmo/_payload/templates/roadmap-builder.md +523 -0
- dw_pmo/_payload/templates/session-intake.md.tmpl +69 -0
- dw_pmo/_payload/templates/story.md.tmpl +39 -0
- dw_pmo/_payload/update.sh +205 -0
- dw_pmo/_payload/workbench/app.js +618 -0
- dw_pmo/_payload/workbench/index.html +29 -0
- dw_pmo/_payload/workbench/style.css +207 -0
- dw_pmo/adopt.py +213 -0
- dw_pmo/agentdocs.py +157 -0
- dw_pmo/api.py +288 -0
- dw_pmo/contract.py +447 -0
- dw_pmo/docslint.py +359 -0
- dw_pmo/doctor.py +131 -0
- dw_pmo/evidence.py +186 -0
- dw_pmo/gate.py +523 -0
- dw_pmo/gitio.py +141 -0
- dw_pmo/launcher.py +120 -0
- dw_pmo/mcpserver.py +536 -0
- dw_pmo/model.py +70 -0
- dw_pmo/mutations.py +400 -0
- dw_pmo/parse.py +220 -0
- dw_pmo/paths.py +120 -0
- dw_pmo/render.py +263 -0
- dw_pmo/trace.py +85 -0
- dw_pmo/validate.py +278 -0
- dw_pmo/verify.py +432 -0
- 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
|
+

|
|
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
|
+

|
|
180
|
+
|
|
181
|
+

|
|
182
|
+
|
|
183
|
+

|
|
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
|
+

|
|
197
|
+
|
|
198
|
+

|
|
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,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.
|