godpowers 2.5.2 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +49 -19
  3. package/RELEASE.md +41 -29
  4. package/SKILL.md +46 -48
  5. package/agents/god-deploy-engineer.md +2 -2
  6. package/agents/god-designer.md +3 -2
  7. package/agents/god-greenfieldifier.md +2 -4
  8. package/agents/god-launch-strategist.md +4 -5
  9. package/agents/god-observability-engineer.md +5 -5
  10. package/agents/god-reconciler.md +10 -4
  11. package/agents/god-retrospective.md +1 -1
  12. package/agents/god-updater.md +5 -5
  13. package/bin/install.js +9 -1
  14. package/fixtures/gate/build-pass/.godpowers/state.json +33 -0
  15. package/lib/README.md +2 -0
  16. package/lib/artifact-map.js +15 -3
  17. package/lib/cli-dispatch.js +51 -1
  18. package/lib/context-writer.js +4 -4
  19. package/lib/gate.js +107 -9
  20. package/lib/host-capabilities.js +53 -3
  21. package/lib/installer-args.js +25 -0
  22. package/lib/mcp-info.js +93 -0
  23. package/lib/pillars.js +2 -4
  24. package/lib/recipes.js +16 -0
  25. package/lib/router.js +1 -5
  26. package/lib/source-sync.js +1 -1
  27. package/lib/state-advance.js +244 -0
  28. package/lib/state-lock.js +8 -4
  29. package/lib/state-views.js +460 -0
  30. package/lib/state.js +52 -3
  31. package/package.json +7 -2
  32. package/routing/god-audit.yaml +1 -1
  33. package/routing/god-build.yaml +1 -1
  34. package/routing/god-context.yaml +1 -1
  35. package/routing/god-deploy.yaml +3 -1
  36. package/routing/god-design.yaml +2 -2
  37. package/routing/god-launch.yaml +4 -1
  38. package/routing/god-migrate.yaml +0 -1
  39. package/routing/god-mode.yaml +1 -1
  40. package/routing/god-observe.yaml +4 -1
  41. package/routing/god-prd.yaml +1 -1
  42. package/routing/god-reconcile.yaml +2 -5
  43. package/routing/god-sync.yaml +1 -1
  44. package/routing/recipes/returning-after-break.yaml +1 -1
  45. package/schema/state.v1.json +68 -1
  46. package/skills/god-arch.md +1 -1
  47. package/skills/god-build.md +6 -4
  48. package/skills/god-deploy.md +16 -14
  49. package/skills/god-design.md +3 -3
  50. package/skills/god-fast.md +2 -2
  51. package/skills/god-feature.md +1 -1
  52. package/skills/god-harden.md +3 -3
  53. package/skills/god-hotfix.md +1 -1
  54. package/skills/god-init.md +14 -10
  55. package/skills/god-launch.md +14 -12
  56. package/skills/god-lifecycle.md +2 -1
  57. package/skills/god-mode.md +5 -4
  58. package/skills/god-next.md +2 -1
  59. package/skills/god-observe.md +15 -13
  60. package/skills/god-pause-work.md +2 -2
  61. package/skills/god-prd.md +5 -4
  62. package/skills/god-quick.md +1 -1
  63. package/skills/god-repo.md +1 -1
  64. package/skills/god-resume-work.md +5 -4
  65. package/skills/god-roadmap-update.md +1 -1
  66. package/skills/god-roadmap.md +1 -1
  67. package/skills/god-rollback.md +1 -1
  68. package/skills/god-skip.md +2 -2
  69. package/skills/god-stack.md +1 -1
  70. package/skills/god-standards.md +1 -1
  71. package/skills/god-status.md +6 -5
  72. package/skills/god-story.md +1 -1
  73. package/skills/god-sync.md +2 -2
  74. package/workflows/bluefield-arc.yaml +2 -4
  75. package/workflows/brownfield-arc.yaml +2 -4
package/CHANGELOG.md CHANGED
@@ -7,6 +7,46 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.7.0] - 2026-06-10
11
+
12
+ ### Added
13
+ - Added `godpowers state advance --step=<step> --status=<status> --project=.`
14
+ as a locked state mutation helper that updates `.godpowers/state.json` and
15
+ regenerates managed state views.
16
+ - Added generated checksummed state views for Godpowers-owned design, build,
17
+ deploy, observe, and launch `STATE.md` files, all sourced from
18
+ `.godpowers/state.json`.
19
+
20
+ ### Changed
21
+ - Changed route prerequisites, executable gates, workflow handoffs, command
22
+ prompts, and specialist agent contracts so Godpowers decision reads use
23
+ `.godpowers/state.json` instead of generated markdown state views.
24
+ - Changed tier completion instructions to use `godpowers state advance` or an
25
+ owning command wrapper instead of direct edits to `.godpowers/PROGRESS.md`.
26
+
27
+ ### Fixed
28
+ - Fixed state-view drift by regenerating `.godpowers/PROGRESS.md` and
29
+ Godpowers-owned per-tier `STATE.md` files after state mutations and replacing
30
+ tampered managed fences on the next mutation.
31
+
32
+ ## [2.6.0] - 2026-06-10
33
+
34
+ ### Added
35
+ - Added the `@godpowers/mcp` companion package with read-only MCP tools for
36
+ status, next, gate checks, artifact linting, and requirement tracing.
37
+ - Added `godpowers mcp-info --project=.` as a read-only main-package helper
38
+ that prints setup instructions without loading the MCP SDK.
39
+ - Added MCP protocol tests that spawn the companion server over stdio, list
40
+ tools, and call each tool against the quick-proof fixture.
41
+
42
+ ### Changed
43
+ - Updated dashboard and quick-proof host guarantee output to include MCP
44
+ availability.
45
+ - Updated `/god-status` and `/god-next` to prefer MCP tools when available and
46
+ fall back to CLI or runtime modules otherwise.
47
+ - Updated release checks to verify the companion package protocol and package
48
+ contents while keeping the main `godpowers` package dependency-free.
49
+
10
50
  ## [2.5.2] - 2026-06-10
11
51
 
12
52
  ### Added
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![CI](https://github.com/aihxp/godpowers/actions/workflows/ci.yml/badge.svg)](https://github.com/aihxp/godpowers/actions/workflows/ci.yml)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
- [![Version](https://img.shields.io/badge/version-2.5.2-blue)](CHANGELOG.md)
5
+ [![Version](https://img.shields.io/badge/version-2.7.0-blue)](CHANGELOG.md)
6
6
  [![npm](https://img.shields.io/npm/v/godpowers.svg)](https://www.npmjs.com/package/godpowers)
7
7
 
8
8
  **Ship fast. Ship right. Ship everything. Ship accountably.**
@@ -30,9 +30,13 @@ Godpowers makes AI coding accountable: every serious run should leave disk
30
30
  state, artifacts, validation gates, host guarantees, and a next action. Code is
31
31
  only one output. The project memory and proof trail matter too.
32
32
 
33
- Version 2.5.2 keeps the 2.5.1 Codex host-run proof studies and patches two
34
- Phase 2 blocker defects: installed runtime gate command access and build-gate
35
- false passes when verification evidence is red.
33
+ Version 2.7.0 makes `.godpowers/state.json` the one-directional state authority,
34
+ adds the locked `godpowers state advance` helper, and generates checksummed
35
+ markdown state views for humans. It keeps the optional `@godpowers/mcp`
36
+ companion package, the 2.5.2 installed-runtime gate and build-gate fixes, the
37
+ 2.5.1 Codex host proof studies, executable tier gates, 2.4 command-family UX,
38
+ external CLI canary evidence, prompt-size guardrails, legacy command quarantine,
39
+ lib coverage gating, and package verification before publish.
36
40
 
37
41
  Maintainer hardening continues on the 2.x line with small, audited public
38
42
  surface updates when they close real workflow gaps. The 2.1.0 patch closes a command-injection vector in the
@@ -207,9 +211,10 @@ You can also ask any time:
207
211
  /god-next
208
212
  ```
209
213
 
210
- This reads `.godpowers/PROGRESS.md`, scans disk, reconciles any drift, and
211
- suggests the next logical command with a compact action brief. The SessionStart
212
- hook does the same thing when you open a new session in a Godpowers project.
214
+ This reads `.godpowers/state.json`, treats `.godpowers/PROGRESS.md` as a
215
+ generated human view, scans disk, reconciles any drift, and suggests the next
216
+ logical command with a compact action brief. The SessionStart hook does the
217
+ same thing when you open a new session in a Godpowers project.
213
218
 
214
219
  ### Start With A Path
215
220
 
@@ -255,7 +260,9 @@ npx godpowers next --project=.
255
260
  npx godpowers status --project=. --brief
256
261
  npx godpowers status --project=. --json
257
262
  npx godpowers quick-proof --project=.
263
+ npx godpowers state advance --step=prd --status=done --project=.
258
264
  npx godpowers gate --tier=prd --project=.
265
+ npx godpowers mcp-info --project=.
259
266
  npx godpowers dogfood
260
267
  npx godpowers extension-scaffold --name=@godpowers/my-pack --output=.
261
268
  ```
@@ -284,12 +291,34 @@ npx godpowers gate --tier=build --project=.
284
291
  npx godpowers gate --tier=harden --project=.
285
292
  ```
286
293
 
287
- The gate reads disk artifacts, runs the shared artifact linter, checks build
288
- verification evidence, and blocks unresolved Critical harden findings.
294
+ The gate reads disk artifacts, runs the shared artifact linter, checks
295
+ structured `state.json` evidence for design and build gates, and blocks
296
+ unresolved Critical harden findings.
289
297
 
290
- The runtime remains dependency-free. YAML parsing is intentionally limited to
291
- the documented Godpowers subset used by intent, routing, workflow, and
292
- extension files, with parser coverage in `scripts/test-yaml-parser.js`.
298
+ The main `godpowers` runtime remains dependency-free. The optional
299
+ `@godpowers/mcp` companion package owns the MCP SDK dependency and exposes
300
+ read-only tools through explicit host setup. YAML parsing is intentionally
301
+ limited to the documented Godpowers subset used by intent, routing, workflow,
302
+ and extension files, with parser coverage in `scripts/test-yaml-parser.js`.
303
+
304
+ ### MCP Companion
305
+
306
+ MCP-capable hosts can use the optional companion package without adding an SDK
307
+ dependency to the main `godpowers` package:
308
+
309
+ ```bash
310
+ npx godpowers mcp-info --project=.
311
+ npx -y -p godpowers@2.7.0 -p @godpowers/mcp@2.7.0 godpowers-mcp serve --project=.
312
+ ```
313
+
314
+ The companion exposes `status`, `next`, `gate_check`, `lint_artifact`, and
315
+ `trace_requirement`. Host registration is opt-in:
316
+
317
+ ```bash
318
+ npx -y -p godpowers@2.7.0 -p @godpowers/mcp@2.7.0 godpowers-mcp setup --host=codex --project=. --write
319
+ ```
320
+
321
+ See [MCP Companion](docs/mcp.md) for package boundaries and setup details.
293
322
 
294
323
  ### Slash Commands
295
324
 
@@ -452,10 +481,10 @@ It spawns the right specialist agent in a **fresh context** to do the work.
452
481
  You type: /god-prd
453
482
  Skill loads: skills/god-prd.md
454
483
  Skill spawns: god-pm agent (fresh 200K context)
455
- Agent reads: .godpowers/PROGRESS.md
484
+ Agent reads: .godpowers/state.json + .godpowers/intent.yaml
456
485
  Agent writes: .godpowers/prd/PRD.md
457
486
  Skill verifies: artifact exists, have-nots pass
458
- Skill updates: PROGRESS.md
487
+ Skill updates: state.json via godpowers state advance
459
488
  ```
460
489
 
461
490
  ### The Four Tiers
@@ -470,7 +499,8 @@ Skill updates: PROGRESS.md
470
499
  ### Artifact Paths
471
500
 
472
501
  ```
473
- .godpowers/PROGRESS.md Cross-tier progress ledger
502
+ .godpowers/state.json Machine-readable project state
503
+ .godpowers/PROGRESS.md Generated cross-tier progress view
474
504
  .godpowers/REQUIREMENTS.md Requirement checklist (done / in progress / not started)
475
505
  .godpowers/prd/PRD.md Product Requirements Document
476
506
  .godpowers/domain/GLOSSARY.md Domain vocabulary and resolved ambiguities
@@ -480,10 +510,10 @@ Skill updates: PROGRESS.md
480
510
  .godpowers/stack/DECISION.md Stack Decision (with flip points)
481
511
  .godpowers/repo/AUDIT.md Repo Scaffold Audit
482
512
  .godpowers/build/PLAN.md Build Plan (slices, waves)
483
- .godpowers/build/STATE.md Build State
484
- .godpowers/deploy/STATE.md Deploy Pipeline State
485
- .godpowers/observe/STATE.md Observability State
486
- .godpowers/launch/STATE.md Launch State
513
+ .godpowers/build/STATE.md Generated build state view
514
+ .godpowers/deploy/STATE.md Generated deploy state view
515
+ .godpowers/observe/STATE.md Generated observability state view
516
+ .godpowers/launch/STATE.md Generated launch state view
487
517
  .godpowers/harden/FINDINGS.md Security Findings
488
518
  ```
489
519
 
package/RELEASE.md CHANGED
@@ -1,11 +1,11 @@
1
- # Godpowers 2.5.2 Release
1
+ # Godpowers 2.7.0 Release
2
2
 
3
- > Status: Ready for protected merge
3
+ > Status: Release candidate
4
4
  > Date: 2026-06-10
5
5
 
6
- [DECISION] Godpowers 2.5.2 is a Phase 2 blocker patch after the 2.5.1 host-proof docs release.
7
- [DECISION] This release fixes the installed-runtime gate command gap and build-gate false-pass gap captured during Phase 2 proof work.
8
- [DECISION] This release does not change the 2.5.1 host-proof case-study claims.
6
+ [DECISION] Godpowers 2.7.0 is the Phase 4 one-directional state release.
7
+ [DECISION] This release makes `.godpowers/state.json` the authority for Godpowers state decisions while treating `.godpowers/PROGRESS.md` and Godpowers-owned per-tier `STATE.md` files as generated human views.
8
+ [DECISION] This release preserves the optional `@godpowers/mcp` companion boundary and keeps the main `godpowers` package dependency-free.
9
9
 
10
10
  ## What's in this release
11
11
 
@@ -13,39 +13,51 @@
13
13
  - [DECISION] 40 specialist agents.
14
14
  - [DECISION] 13 executable workflows.
15
15
  - [DECISION] 42 intent recipes.
16
- - [DECISION] 8 installer CLI helpers.
16
+ - [DECISION] A locked `godpowers state advance --step=<step> --status=<status> --project=.` state mutation helper.
17
+ - [DECISION] Generated checksummed state views for `.godpowers/PROGRESS.md` and Godpowers-owned design, build, deploy, observe, and launch `STATE.md` files.
18
+ - [DECISION] Five read-only MCP tools in `@godpowers/mcp`.
17
19
 
18
20
  ## Highlights
19
21
 
20
- - [DECISION] `godpowers-runtime` now includes `bin/` next to `package.json`, so host workflows can run `npm exec --package <runtime> -- godpowers gate`.
21
- - [DECISION] Build gates now fail closed when `.godpowers/build/STATE.md` records any failed verification command.
22
- - [DECISION] Slot A, Slot B, and Slot C evidence remains the repository state shipped in 2.5.1.
22
+ - [DECISION] `godpowers state advance` updates `.godpowers/state.json` through the state lock and refreshes generated markdown views after the mutation.
23
+ - [DECISION] Route prerequisites, executable gates, workflow handoffs, command prompts, and specialist agent contracts now use `.godpowers/state.json` for Godpowers state decisions.
24
+ - [DECISION] Generated markdown views preserve user prose outside managed fences and replace tampered managed fences on the next state mutation.
25
+ - [DECISION] Design and build gates now use structured state evidence instead of markdown `STATE.md` authority.
26
+ - [DECISION] Deploy, observe, and launch handoffs now use structured state evidence for readiness, target, rollback, SLO, alert, runbook, and launch data.
27
+ - [DECISION] `god-repair` remains available as diagnostics and recovery while generated state views prove themselves.
23
28
 
24
29
  ## Validation
25
30
 
26
- - [DECISION] `node scripts/test-gate.js` passed before the latest `main` merge.
27
- - [DECISION] `node scripts/test-install-smoke.js` passed before the latest `main` merge.
28
- - [DECISION] `npm run test:e2e` passed before the latest `main` merge.
29
- - [DECISION] `node scripts/test-runtime-verification.js` passed before the latest `main` merge.
30
- - [DECISION] `node scripts/test-agent-browser.js` passed before the latest `main` merge.
31
- - [DECISION] `node scripts/static-check.js` passed before the latest `main` merge.
32
- - [DECISION] `npm run release:check` passed before the latest `main` merge with `coverage:lib` at 92.9 percent line coverage, `npm audit --omit=dev` reporting 0 vulnerabilities, public surface docs matching version 2.5.1, and package contents verified at 534 files.
33
- - [DECISION] Post-merge 2.5.2 `npm run test:surface` passed.
34
- - [DECISION] Post-merge 2.5.2 `node scripts/test-gate.js` passed.
35
- - [DECISION] Post-merge 2.5.2 `node scripts/test-install-smoke.js` passed.
36
- - [DECISION] Post-merge 2.5.2 `node scripts/static-check.js` passed.
37
- - [DECISION] Post-merge 2.5.2 `npm run test:e2e` passed.
38
- - [DECISION] Post-merge 2.5.2 `node scripts/test-runtime-verification.js` passed.
39
- - [DECISION] Post-merge 2.5.2 `node scripts/test-agent-browser.js` passed.
40
- - [DECISION] Post-merge 2.5.2 `npm run release:check` passed with `coverage:lib` at 92.9 percent line coverage, `npm audit --omit=dev` reporting 0 vulnerabilities, public surface docs matching version 2.5.2, and package contents verified at 534 files.
31
+ - [DECISION] `npm ci` passed and reported 0 vulnerabilities.
32
+ - [DECISION] `node scripts/test-state-advance.js` passed.
33
+ - [DECISION] `node scripts/test-state-views.js` passed.
34
+ - [DECISION] `npm --workspace @godpowers/mcp test` passed.
35
+ - [DECISION] `node scripts/static-check.js` passed.
36
+ - [DECISION] `npm run lint` passed.
37
+ - [DECISION] `npm run test:quick-proof` passed.
38
+ - [DECISION] `npm run test:audit` passed with `npm audit --omit=dev`, `git diff --check`, and public surface checks green.
39
+ - [DECISION] `npm run test:e2e` passed.
40
+ - [DECISION] `node scripts/test-runtime-verification.js` passed.
41
+ - [DECISION] `node scripts/test-agent-browser.js` passed.
42
+ - [DECISION] `npm run pack:check` passed with 538 root package files.
43
+ - [DECISION] `npm run pack:mcp:check` passed with 8 companion package files.
44
+ - [DECISION] `node bin/install.js dogfood --json` passed 5 of 5 scenarios.
45
+ - [DECISION] Repo documentation sync, repo surface sync, and release surface sync were fresh.
46
+ - [DECISION] Changed-file banned character scans passed.
47
+ - [DECISION] `npm run release:check` passed with `coverage:lib` at 92.78 percent line coverage, `npm audit --omit=dev` reporting 0 vulnerabilities, public surface docs matching version 2.7.0, root package contents verified at 538 files, and `@godpowers/mcp` package contents verified at 8 files.
48
+ - [DECISION] The final publish result must be recorded in `docs/BRIDGE-PLAN.md` after the tag-triggered GitHub workflow completes.
41
49
 
42
50
  ## Upgrade
43
51
 
44
- - [DECISION] Use `npm install -g godpowers@2.5.2` or `npx godpowers@2.5.2` after the package is published.
45
- - [DECISION] Reinstall Godpowers in host runtimes to refresh the installed runtime bundle.
46
- - [DECISION] Existing `.godpowers/` state remains compatible.
52
+ - [DECISION] Use `npm install -g godpowers@2.7.0` or `npx godpowers@2.7.0`.
53
+ - [DECISION] Use optional MCP package install `npm install -g godpowers @godpowers/mcp` when the host can register MCP servers.
54
+ - [DECISION] Re-run `/god-context` in each project to refresh installed runtime metadata.
55
+ - [DECISION] Existing `.godpowers/state.json` files remain compatible.
56
+ - [DECISION] Existing `.godpowers/PROGRESS.md` and Godpowers-owned per-tier `STATE.md` files become generated human views after the next state mutation.
47
57
 
48
58
  ## Notes
49
59
 
50
- - [DECISION] The npm `godpowers@2.5.1` package is already published.
51
- - [DECISION] Publishing 2.5.2 remains pending until protected merge, tag, and npm provenance publish complete.
60
+ - [DECISION] The npm `godpowers@2.7.0` package must be published through the tag-triggered GitHub workflow with provenance.
61
+ - [DECISION] The npm `@godpowers/mcp@2.7.0` package must be published through the same workflow with provenance.
62
+ - [DECISION] The `v2.7.0` tag must match the npm package version.
63
+ - [DECISION] The next bridge-plan phase after 2.7.0 publish verification is Phase 5: Surface Contraction.
package/SKILL.md CHANGED
@@ -321,8 +321,8 @@ Run or apply these by default in every relevant closeout:
321
321
 
322
322
  #### Level 2: Auto-run local helpers, visible and logged
323
323
  Run these local runtime helpers automatically when their trigger is present:
324
- - `lib/checkpoint.syncFromState` after every `state.json` or
325
- `PROGRESS.md` mutation.
324
+ - `lib/checkpoint.syncFromState` after every `state.json` mutation or
325
+ managed progress view refresh.
326
326
  - Lightweight reverse-sync or linkage scan after code or artifact edits.
327
327
  - Pillars sync planning after durable artifact truth changes.
328
328
  - `lib/planning-systems.importPlanningContext` when legacy planning, BMAD, or
@@ -405,9 +405,9 @@ Never auto-run these from inference alone:
405
405
  reports success
406
406
 
407
407
  Every auto-invoke decision must be explainable from one of these inputs:
408
- changed files, Godpowers artifacts, `state.json`, `PROGRESS.md`,
409
- `CHECKPOINT.md`, `SYNC-LOG.md`, `REVIEW-REQUIRED.md`, routing YAML, recipe YAML,
410
- or explicit user intent.
408
+ changed files, Godpowers artifacts, `state.json`, generated `PROGRESS.md`
409
+ view, `CHECKPOINT.md`, `SYNC-LOG.md`, `REVIEW-REQUIRED.md`, routing YAML,
410
+ recipe YAML, or explicit user intent.
411
411
 
412
412
  ---
413
413
 
@@ -433,11 +433,11 @@ coordination plan.
433
433
  ## Tier 0: Orchestration
434
434
 
435
435
  ### On every invocation:
436
- 1. Read `.godpowers/PROGRESS.md` if it exists
436
+ 1. Read `.godpowers/state.json` if it exists, using `.godpowers/PROGRESS.md` only as a generated legacy fallback when state is missing
437
437
  2. Scan for existing artifacts at all canonical paths
438
438
  3. Detect operating mode (A/B/C/D)
439
439
  4. Detect project scale (trivial / small / medium / large / enterprise)
440
- 5. Record mode and scale in PROGRESS.md
440
+ 5. Record mode and scale in `state.json`
441
441
  6. Route to the appropriate tier and sub-step
442
442
 
443
443
  ### Scale Detection
@@ -450,30 +450,27 @@ Assess the project description against these criteria:
450
450
 
451
451
  Scale determines which personas activate and how deep the planning goes.
452
452
 
453
- ### Progress Ledger (.godpowers/PROGRESS.md)
454
- ```markdown
455
- # Godpowers Progress
456
-
457
- Mode: A (greenfield)
458
- Scale: medium
459
- Started: 2026-05-09T14:30:00Z
460
-
461
- ## Tiers
462
-
463
- | Tier | Sub-step | Status | Artifact | Updated |
464
- |------|----------|--------|----------|---------|
465
- | 1 | PRD | done | .godpowers/prd/PRD.md | 2026-05-09T14:35:00Z |
466
- | 1 | Architecture | in-flight | -- | 2026-05-09T14:40:00Z |
467
- | 1 | Roadmap | pending | -- | -- |
468
- | 1 | Stack | pending | -- | -- |
469
- | 2 | Repo | pending | -- | -- |
470
- | 2 | Build | pending | -- | -- |
471
- | 3 | Deploy | pending | -- | -- |
472
- | 3 | Observe | pending | -- | -- |
473
- | 3 | Launch | pending | -- | -- |
474
- | 3 | Harden | pending | -- | -- |
453
+ ### State Ledger (`.godpowers/state.json`)
454
+ ```json
455
+ {
456
+ "project": { "name": "Example", "started": "2026-05-09T14:30:00Z" },
457
+ "mode": "A",
458
+ "tiers": {
459
+ "tier-1": {
460
+ "prd": { "status": "done" },
461
+ "arch": { "status": "in-flight" },
462
+ "roadmap": { "status": "pending" },
463
+ "stack": { "status": "pending" }
464
+ }
465
+ }
466
+ }
475
467
  ```
476
468
 
469
+ `.godpowers/PROGRESS.md` is a generated human-readable view of this state.
470
+ Commands update tracked steps through `npx godpowers state advance --step=<step>
471
+ --status=<status> --project=.` or through an owning command wrapper, never by
472
+ editing the generated view.
473
+
477
474
  Valid statuses: pending, in-flight, done, skipped, imported, failed, re-invoked.
478
475
  Silence is not a status. Every tier must have an explicit entry.
479
476
 
@@ -501,7 +498,7 @@ Silence is not a status. Every tier must have an explicit entry.
501
498
  3. Run substitution test on every claim
502
499
  4. Run three-label test on every sentence
503
500
  5. Write to `.godpowers/prd/PRD.md`
504
- 6. Update PROGRESS.md
501
+ 6. Run `npx godpowers state advance --step=prd --status=done --project=.`
505
502
 
506
503
  **Have-nots (PRD fails if any are true)**:
507
504
  - Problem statement passes substitution test (reads the same for any product)
@@ -536,7 +533,7 @@ Silence is not a status. Every tier must have an explicit entry.
536
533
  - Data model (entities, relationships, ownership)
537
534
  4. Run have-nots check
538
535
  5. Write to `.godpowers/arch/ARCH.md`
539
- 6. Update PROGRESS.md
536
+ 6. Run `npx godpowers state advance --step=arch --status=done --project=.`
540
537
 
541
538
  **Have-nots (Architecture fails if any are true)**:
542
539
  - A box in the diagram has no clear responsibility
@@ -569,7 +566,7 @@ Silence is not a status. Every tier must have an explicit entry.
569
566
  - Dependency list
570
567
  - Estimated scope (T-shirt size, not fake precision)
571
568
  6. Write to `.godpowers/roadmap/ROADMAP.md`
572
- 7. Update PROGRESS.md
569
+ 7. Run `npx godpowers state advance --step=roadmap --status=done --project=.`
573
570
 
574
571
  **Have-nots (Roadmap fails if any are true)**:
575
572
  - Milestone goal passes substitution test
@@ -592,7 +589,7 @@ Silence is not a status. Every tier must have an explicit entry.
592
589
  - Document the flip point (when would you reverse this choice?)
593
590
  - Document the lock-in cost
594
591
  3. Write to `.godpowers/stack/DECISION.md`
595
- 4. Update PROGRESS.md
592
+ 4. Run `npx godpowers state advance --step=stack --status=done --project=.`
596
593
 
597
594
  **Pause conditions**:
598
595
  - Two candidates score within 10% and the flip point is a human constraint
@@ -613,7 +610,7 @@ Silence is not a status. Every tier must have an explicit entry.
613
610
  5. .gitignore, .editorconfig
614
611
  6. Run repo audit
615
612
  7. Write audit to `.godpowers/repo/AUDIT.md`
616
- 8. Update PROGRESS.md
613
+ 8. Run `npx godpowers state advance --step=repo --status=done --project=.`
617
614
 
618
615
  ### 2.2 Build (god build)
619
616
 
@@ -636,8 +633,8 @@ Silence is not a status. Every tier must have an explicit entry.
636
633
  - Agent refactors (REFACTOR)
637
634
  - Two-stage review: spec compliance, then code quality
638
635
  - Atomic commit on pass
639
- 7. Update `.godpowers/build/STATE.md`
640
- 8. Update PROGRESS.md
636
+ 7. Record build verification evidence in `.godpowers/state.json`
637
+ 8. Run `npx godpowers state advance --step=build --status=done --project=.` to regenerate the build state view
641
638
 
642
639
  **TDD Enforcement**:
643
640
  - If a subagent writes implementation before tests, flag the violation
@@ -664,7 +661,7 @@ Silence is not a status. Every tier must have an explicit entry.
664
661
  2. Environment parity (dev matches prod)
665
662
  3. Rollback plan (documented, tested)
666
663
  4. Health checks (not just "is the process running")
667
- 5. Write to `.godpowers/deploy/STATE.md`
664
+ 5. Record deploy evidence in `.godpowers/state.json` and regenerate the deploy state view
668
665
 
669
666
  **Have-nots**:
670
667
  - Different build per environment
@@ -681,7 +678,7 @@ Silence is not a status. Every tier must have an explicit entry.
681
678
  3. Alerting (symptoms, not causes)
682
679
  4. Structured logging
683
680
  5. Runbooks (tested, not paper)
684
- 6. Write to `.godpowers/observe/STATE.md`
681
+ 6. Record observability evidence in `.godpowers/state.json` and regenerate the observability state view
685
682
 
686
683
  **Have-nots**:
687
684
  - SLO has no error budget policy
@@ -699,7 +696,7 @@ Silence is not a status. Every tier must have an explicit entry.
699
696
  3. Launch channels identified with messaging per channel
700
697
  4. Launch-day telemetry (source attribution on every signup)
701
698
  5. D-7 to D+7 runbook
702
- 6. Write to `.godpowers/launch/STATE.md`
699
+ 6. Record launch evidence in `.godpowers/state.json` and regenerate the launch state view
703
700
 
704
701
  **Have-nots**:
705
702
  - Landing copy passes substitution test (reads generic)
@@ -750,7 +747,7 @@ God Mode pauses ONLY when:
750
747
  God Mode NEVER pauses to:
751
748
  - Ask permission to proceed to the next tier
752
749
  - Confirm it should write a file
753
- - Report progress (PROGRESS.md does that)
750
+ - Report progress (the generated progress view does that)
754
751
  - Ask "is this okay?" without specific options
755
752
 
756
753
  ### Pause Format
@@ -762,7 +759,7 @@ Every pause includes:
762
759
 
763
760
  ### Resume Protocol
764
761
  On resume:
765
- 1. Read `.godpowers/PROGRESS.md`
762
+ 1. Read `.godpowers/state.json`, with `.godpowers/PROGRESS.md` only as a generated legacy fallback when state is missing
766
763
  2. Scan all artifact paths
767
764
  3. Verify artifact integrity (have-nots check on existing artifacts)
768
765
  4. Pick up at the first non-done tier
@@ -786,8 +783,8 @@ grep-testable against the produced artifact.
786
783
  - **AI-slop**: Output passes substitution test (reads generic)
787
784
  - **Phantom resume**: Agent claims done, artifact not on disk
788
785
  - **Ghost handoff**: Tier invoked before upstream artifact exists
789
- - **Rubber-stamp**: PROGRESS.md says done with no artifact
790
- - **Silence as skip**: Tier absent from PROGRESS.md
786
+ - **Rubber-stamp**: state.json says done with no artifact
787
+ - **Silence as skip**: Tier absent from state.json
791
788
  - **Paper artifact**: Document exists but mechanism does not
792
789
  - **Theater**: Sentences that are neither decision, hypothesis, nor open question
793
790
 
@@ -815,7 +812,8 @@ See individual tier sections above.
815
812
 
816
813
  ```
817
814
  .godpowers/
818
- PROGRESS.md # Cross-tier progress ledger
815
+ state.json # Machine-readable source of truth
816
+ PROGRESS.md # Generated cross-tier progress view
819
817
  prd/
820
818
  PRD.md # Product Requirements Document
821
819
  domain/
@@ -830,13 +828,13 @@ See individual tier sections above.
830
828
  repo/
831
829
  AUDIT.md # Repo Scaffold Audit
832
830
  build/
833
- STATE.md # Build State
831
+ STATE.md # Generated build state view
834
832
  deploy/
835
- STATE.md # Deploy Pipeline State
833
+ STATE.md # Generated deploy pipeline state view
836
834
  observe/
837
- STATE.md # Observability State
835
+ STATE.md # Generated observability state view
838
836
  launch/
839
- STATE.md # Launch State
837
+ STATE.md # Generated launch state view
840
838
  harden/
841
839
  FINDINGS.md # Security Findings
842
840
  ```
@@ -14,7 +14,7 @@ Set up the deploy pipeline.
14
14
 
15
15
  ## Gate Check
16
16
 
17
- Build is complete. All tests pass. `.godpowers/build/STATE.md` shows green.
17
+ Build is complete. All tests pass. `.godpowers/state.json` records `tier-2.build.status == done` with passing build verification commands.
18
18
 
19
19
  ## Process
20
20
 
@@ -91,7 +91,7 @@ Build is complete. All tests pass. `.godpowers/build/STATE.md` shows green.
91
91
 
92
92
  ## Output
93
93
 
94
- Write `.godpowers/deploy/STATE.md`:
94
+ Return deploy evidence for `.godpowers/state.json`; `lib/state-views.js` generates `.godpowers/deploy/STATE.md` from these fields:
95
95
 
96
96
  ```markdown
97
97
  # Deploy State
@@ -105,8 +105,9 @@ result before applying.
105
105
  (parsed by `lib/design-spec.js`)
106
106
  - `PRODUCT.md` at project root, when impeccable is present (impeccable owns
107
107
  the format)
108
- - `.godpowers/design/STATE.md` with: lint history, version, impeccable
109
- command log, drift snapshot
108
+ - `.godpowers/state.json` design evidence with lint history, version,
109
+ impeccable command log, and drift snapshot; `lib/state-views.js`
110
+ regenerates `.godpowers/design/STATE.md`
110
111
 
111
112
  ## Validation
112
113
 
@@ -29,10 +29,8 @@ intent, architecture, delivery commitments, or org constraints.
29
29
  - `.godpowers/roadmap/ROADMAP.md`
30
30
  - `.godpowers/stack/DECISION.md`
31
31
  - `.godpowers/repo/AUDIT.md`
32
- - `.godpowers/build/STATE.md`
33
- - `.godpowers/deploy/STATE.md`
34
- - `.godpowers/observe/STATE.md`
35
- - `.godpowers/launch/STATE.md`
32
+ - `.godpowers/state.json` build, deploy, observe, and launch evidence
33
+ - `.godpowers/build/PLAN.md`
36
34
  - `.godpowers/harden/FINDINGS.md`
37
35
  - Source evidence from code, org context, and imported planning systems.
38
36
 
@@ -69,9 +69,8 @@ For each channel:
69
69
  - D+7: post-launch retrospective
70
70
 
71
71
  ### 6. Shipping Closure
72
- - Read `.godpowers/deploy/STATE.md`,
73
- `.godpowers/deploy/WAITING-FOR-EXTERNAL-ACCESS.md` if present, and
74
- `.godpowers/observe/STATE.md`.
72
+ - Read `.godpowers/state.json` deploy and observe evidence plus
73
+ `.godpowers/deploy/WAITING-FOR-EXTERNAL-ACCESS.md` if present.
75
74
  - If deploy or observe is waiting on external access, do not create a broad
76
75
  dashboard checklist. Reference only the smallest next access item from the
77
76
  waiting bundle and write launch state as local-ready with deployed
@@ -96,7 +95,7 @@ For each channel:
96
95
 
97
96
  ## Output
98
97
 
99
- Write `.godpowers/launch/STATE.md` with all artifacts.
98
+ Return launch evidence for `.godpowers/state.json`; `lib/state-views.js` generates `.godpowers/launch/STATE.md` with the launch artifact summary.
100
99
 
101
100
  ## Have-Nots
102
101
 
@@ -129,7 +128,7 @@ pause. Log to YOLO-DECISIONS.md so the user can revise:
129
128
  - Auto-picked tone: direct/professional (default)
130
129
  - Auto-picked headline: [actual headline written]
131
130
  - Reason: substitution-tested headline that emphasizes the strongest PRD value prop
132
- - Reversible by: edit `.godpowers/launch/STATE.md` headline section
131
+ - Reversible by: update launch evidence in `.godpowers/state.json` and regenerate the launch state view
133
132
  - Timestamp: [ISO 8601]
134
133
  ```
135
134
 
@@ -15,10 +15,10 @@ Wire observability.
15
15
 
16
16
  ## Gate Check
17
17
 
18
- `.godpowers/deploy/STATE.md` exists. App is deployed and reachable, or deploy
19
- state documents a tested local staging harness plus a single external access
20
- bundle. A deferred staging URL must not block observability setup when local or
21
- CI-verifiable checks can still run.
18
+ `.godpowers/state.json` records deploy completion. The deploy evidence says the
19
+ app is deployed and reachable, or it documents a tested local staging harness
20
+ plus a single external access bundle. A deferred staging URL must not block
21
+ observability setup when local or CI-verifiable checks can still run.
22
22
 
23
23
  ## Process
24
24
 
@@ -78,7 +78,7 @@ For each PRD success metric, define an SLO:
78
78
 
79
79
  ## Output
80
80
 
81
- Write `.godpowers/observe/STATE.md` with:
81
+ Return observability evidence for `.godpowers/state.json`; `lib/state-views.js` generates `.godpowers/observe/STATE.md` with:
82
82
  - SLO definitions
83
83
  - Error budget policies
84
84
  - Alert catalog
@@ -82,12 +82,16 @@ For each artifact below, check (in parallel where possible):
82
82
 
83
83
  ### Tier 3 artifacts
84
84
 
85
- #### DEPLOY (`.godpowers/deploy/STATE.md`)
85
+ #### DEPLOY state evidence
86
+
87
+ Source: `.godpowers/state.json` `tier-3.deploy`.
86
88
  - Does the feature need a new env var?
87
89
  - New deploy step (e.g., new service)?
88
90
  - Verdict: covered / needs-extension
89
91
 
90
- #### OBSERVE (`.godpowers/observe/STATE.md`)
92
+ #### OBSERVE state evidence
93
+
94
+ Source: `.godpowers/state.json` `tier-3.observe`.
91
95
  - Does the feature need a new SLO?
92
96
  - New error budget category?
93
97
  - New alert + runbook?
@@ -99,7 +103,9 @@ For each artifact below, check (in parallel where possible):
99
103
  - New input source to validate?
100
104
  - Verdict: covered / needs-review / new-surface
101
105
 
102
- #### LAUNCH (`.godpowers/launch/STATE.md`)
106
+ #### LAUNCH state evidence
107
+
108
+ Source: `.godpowers/state.json` `tier-3.launch`.
103
109
  - Is the feature user-visible?
104
110
  - Does launch copy need updating?
105
111
  - New channel-specific messaging needed?
@@ -168,7 +174,7 @@ Return structured JSON to the orchestrating skill:
168
174
  "roadmap": { "status": "enhancement", "match": "Milestone 2", "action": "fold in or amend" },
169
175
  "stack": { "status": "covered" },
170
176
  "repo": { "status": "scaffolded" },
171
- "deploy": { "status": "needs-extension", "action": "add env var to deploy/STATE.md" },
177
+ "deploy": { "status": "needs-extension", "action": "record new env var in state.json deploy evidence" },
172
178
  "observe": { "status": "needs-slo", "action": "add SLO for new endpoint" },
173
179
  "harden": { "status": "needs-review", "action": "scope-to-new-code review" },
174
180
  "launch": { "status": "copy-update", "action": "update landing if launching publicly" },
@@ -22,7 +22,7 @@ sprint, not generic platitudes.
22
22
  ### 1. Gather Data
23
23
  Read:
24
24
  - Sprint PLAN.md (what was committed)
25
- - Sprint slice completion record from `.godpowers/build/STATE.md`
25
+ - Sprint slice completion record from `.godpowers/state.json`
26
26
  - Git log for the sprint window
27
27
  - Any HANDOFF.md or pause logs from the sprint
28
28