godpowers 2.6.0 → 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 (72) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +26 -22
  3. package/RELEASE.md +38 -35
  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 +6 -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 +39 -1
  18. package/lib/context-writer.js +4 -4
  19. package/lib/gate.js +107 -9
  20. package/lib/installer-args.js +24 -0
  21. package/lib/pillars.js +2 -4
  22. package/lib/recipes.js +16 -0
  23. package/lib/router.js +1 -5
  24. package/lib/source-sync.js +1 -1
  25. package/lib/state-advance.js +244 -0
  26. package/lib/state-lock.js +8 -4
  27. package/lib/state-views.js +460 -0
  28. package/lib/state.js +52 -3
  29. package/package.json +1 -1
  30. package/routing/god-audit.yaml +1 -1
  31. package/routing/god-build.yaml +1 -1
  32. package/routing/god-context.yaml +1 -1
  33. package/routing/god-deploy.yaml +3 -1
  34. package/routing/god-design.yaml +2 -2
  35. package/routing/god-launch.yaml +4 -1
  36. package/routing/god-migrate.yaml +0 -1
  37. package/routing/god-mode.yaml +1 -1
  38. package/routing/god-observe.yaml +4 -1
  39. package/routing/god-prd.yaml +1 -1
  40. package/routing/god-reconcile.yaml +2 -5
  41. package/routing/god-sync.yaml +1 -1
  42. package/routing/recipes/returning-after-break.yaml +1 -1
  43. package/schema/state.v1.json +68 -1
  44. package/skills/god-arch.md +1 -1
  45. package/skills/god-build.md +6 -4
  46. package/skills/god-deploy.md +16 -14
  47. package/skills/god-design.md +3 -3
  48. package/skills/god-fast.md +2 -2
  49. package/skills/god-feature.md +1 -1
  50. package/skills/god-harden.md +3 -3
  51. package/skills/god-hotfix.md +1 -1
  52. package/skills/god-init.md +14 -10
  53. package/skills/god-launch.md +14 -12
  54. package/skills/god-lifecycle.md +2 -1
  55. package/skills/god-mode.md +5 -4
  56. package/skills/god-observe.md +15 -13
  57. package/skills/god-pause-work.md +2 -2
  58. package/skills/god-prd.md +5 -4
  59. package/skills/god-quick.md +1 -1
  60. package/skills/god-repo.md +1 -1
  61. package/skills/god-resume-work.md +5 -4
  62. package/skills/god-roadmap-update.md +1 -1
  63. package/skills/god-roadmap.md +1 -1
  64. package/skills/god-rollback.md +1 -1
  65. package/skills/god-skip.md +2 -2
  66. package/skills/god-stack.md +1 -1
  67. package/skills/god-standards.md +1 -1
  68. package/skills/god-status.md +2 -2
  69. package/skills/god-story.md +1 -1
  70. package/skills/god-sync.md +2 -2
  71. package/workflows/bluefield-arc.yaml +2 -4
  72. package/workflows/brownfield-arc.yaml +2 -4
@@ -8,7 +8,7 @@ metadata:
8
8
 
9
9
  prerequisites:
10
10
  required:
11
- - check: file:.godpowers/PROGRESS.md
11
+ - check: state:initialized == true
12
12
  auto-complete: /god-init
13
13
  human-required: true
14
14
 
@@ -21,11 +21,8 @@ execution:
21
21
  - .godpowers/roadmap/ROADMAP.md
22
22
  - .godpowers/stack/DECISION.md
23
23
  - .godpowers/repo/AUDIT.md
24
- - .godpowers/build/STATE.md
25
- - .godpowers/deploy/STATE.md
26
- - .godpowers/observe/STATE.md
24
+ - .godpowers/state.json
27
25
  - .godpowers/harden/FINDINGS.md
28
- - .godpowers/launch/STATE.md
29
26
  - .godpowers/backlog/BACKLOG.md
30
27
  - .godpowers/seeds/
31
28
  - .godpowers/todos/TODOS.md
@@ -8,7 +8,7 @@ metadata:
8
8
 
9
9
  prerequisites:
10
10
  required:
11
- - check: file:.godpowers/PROGRESS.md
11
+ - check: state:initialized == true
12
12
  auto-complete: /god-init
13
13
  human-required: true
14
14
 
@@ -15,7 +15,7 @@ triggers:
15
15
  - "back after a week"
16
16
  - "coming back"
17
17
  state-conditions:
18
- - "file:.godpowers/PROGRESS.md"
18
+ - "state:initialized == true"
19
19
 
20
20
  sequences:
21
21
  default:
@@ -269,7 +269,7 @@
269
269
  "properties": {
270
270
  "status": {
271
271
  "type": "string",
272
- "enum": ["pending", "in-flight", "done", "skipped", "imported", "failed", "re-invoked"]
272
+ "enum": ["pending", "in-flight", "done", "skipped", "imported", "failed", "re-invoked", "not-required"]
273
273
  },
274
274
  "artifact": {
275
275
  "type": "string",
@@ -297,8 +297,75 @@
297
297
  "notes": {
298
298
  "type": "string",
299
299
  "description": "Free-form for skip reason, failure detail, etc."
300
+ },
301
+ "readiness-scope": {
302
+ "type": "string",
303
+ "description": "Deploy, observe, or launch readiness scope such as local-readiness, local-staging, ci-readiness, deployed-staging, live-target, or deferred-external-access."
304
+ },
305
+ "verified-target-type": {
306
+ "type": "string",
307
+ "description": "Target class verified by deploy, observe, or launch work, such as local-staging, ci, deployed-staging, production, or live."
308
+ },
309
+ "target-evidence": {
310
+ "type": "string",
311
+ "description": "Evidence source for a deploy, observe, or launch target, such as config, CI variable, IaC output, provider CLI output, docs, or current user input."
312
+ },
313
+ "external-access-deferral": {
314
+ "type": "string",
315
+ "description": "Relative artifact path or concise reason when deployed staging, provider, dashboard, or live launch access is deferred."
316
+ },
317
+ "waiting-artifact": {
318
+ "type": "string",
319
+ "description": "Relative artifact path for the smallest outstanding external access bundle."
320
+ },
321
+ "rollback-evidence": {
322
+ "type": "string",
323
+ "description": "Deploy rollback command, run result, or artifact path proving rollback was tested."
324
+ },
325
+ "slo-evidence": {
326
+ "type": "string",
327
+ "description": "Observability evidence for SLO definitions and error budget policy coverage."
328
+ },
329
+ "alert-evidence": {
330
+ "type": "string",
331
+ "description": "Observability evidence for alert definitions and alert response coverage."
332
+ },
333
+ "runbook-evidence": {
334
+ "type": "string",
335
+ "description": "Observability or launch evidence for tested runbooks."
336
+ },
337
+ "launch-evidence": {
338
+ "type": "string",
339
+ "description": "Launch evidence for live launch, local launch-readiness, source attribution, or launch deferral."
340
+ },
341
+ "verification": {
342
+ "type": "object",
343
+ "description": "Structured verification evidence used by executable gates instead of markdown STATE.md parsing.",
344
+ "properties": {
345
+ "commands": {
346
+ "type": "array",
347
+ "items": { "$ref": "#/$defs/VerificationCommand" }
348
+ }
349
+ },
350
+ "additionalProperties": true
300
351
  }
301
352
  }
353
+ },
354
+ "VerificationCommand": {
355
+ "type": "object",
356
+ "required": ["command", "status"],
357
+ "properties": {
358
+ "command": { "type": "string" },
359
+ "status": {
360
+ "type": "string",
361
+ "enum": ["pass", "passed", "green", "success", "succeeded", "ok", "fail", "failed", "red", "error", "skipped"]
362
+ },
363
+ "exitCode": { "type": "integer" },
364
+ "ranAt": { "type": "string", "format": "date-time" },
365
+ "durationMs": { "type": "integer", "minimum": 0 },
366
+ "diagnostics": { "type": "string" }
367
+ },
368
+ "additionalProperties": true
302
369
  }
303
370
  },
304
371
  "additionalProperties": false
@@ -27,7 +27,7 @@ After god-architect returns:
27
27
  1. Verify ARCH.md and ADRs exist on disk
28
28
  2. Spawn god-auditor to verify have-nots pass
29
29
  3. Run `npx godpowers gate --tier=arch --project=.` and do not proceed on a non-zero exit
30
- 4. Update `.godpowers/PROGRESS.md`: Architecture status = done
30
+ 4. Run `npx godpowers state advance --step=arch --status=done --project=.` to update `state.json` and regenerate `.godpowers/PROGRESS.md`.
31
31
 
32
32
  ## Pause Format
33
33
 
@@ -61,7 +61,8 @@ For each slice in the wave (parallel):
61
61
  - If FAIL: return slice to god-executor with findings, including any
62
62
  overcomplication, speculative abstraction, or unrelated cleanup
63
63
  - If PASS: commit the slice atomically
64
- 5. Update `.godpowers/build/STATE.md`
64
+ 5. Record build status and slice evidence in `.godpowers/state.json` so
65
+ `.godpowers/build/STATE.md` regenerates as a managed view.
65
66
 
66
67
  Move to next wave only when current wave is fully committed.
67
68
 
@@ -76,9 +77,10 @@ After all waves:
76
77
  decompose, prune, or escalate. Pass the exact failing diagnostics, rerun the
77
78
  command, and repeat until green or until the same root failure exhausts the
78
79
  repair budget.
79
- 5. Record the exact verification commands that passed in `.godpowers/build/STATE.md`
80
+ 5. Record the exact verification commands that passed in `.godpowers/state.json`
81
+ under `tiers.tier-2.build.verification.commands`
80
82
  6. Run `npx godpowers gate --tier=build --project=.` and do not proceed on a non-zero exit
81
- 7. Update PROGRESS.md: Build status = done
83
+ 7. Run `npx godpowers state advance --step=build --status=done --project=.` to update `state.json` and regenerate `.godpowers/PROGRESS.md` plus `.godpowers/build/STATE.md`.
82
84
  8. If the build plan or implementation establishes durable conventions, plan
83
85
  pillar updates through `lib/pillars.planArtifactSync`. Under
84
86
  `/god-mode --yolo`, apply those updates immediately and log the decision.
@@ -93,7 +95,7 @@ Pause for user ONLY if:
93
95
  ## On Completion
94
96
 
95
97
  ```
96
- Build complete: .godpowers/build/STATE.md
98
+ Build complete: .godpowers/build/STATE.md (generated view)
97
99
  [N] slices delivered. [N] commits. All tests passing.
98
100
 
99
101
  Suggested next: /god-harden (adversarial review, gates Launch)
@@ -13,15 +13,15 @@ Spawn the **god-deploy-engineer** agent in a fresh context via the host platform
13
13
 
14
14
  ## Setup
15
15
 
16
- 1. Verify build is complete (`.godpowers/build/STATE.md` exists with passing state).
16
+ 1. Verify build is complete through `.godpowers/state.json` `tier-2.build.status == done` and passing build verification commands.
17
17
  2. Verify all tests pass.
18
18
  3. Spawn god-deploy-engineer with ARCH and stack DECISION paths.
19
- 4. The agent writes `.godpowers/deploy/STATE.md`.
19
+ 4. The agent returns structured deploy evidence for `.godpowers/state.json`; the generated `.godpowers/deploy/STATE.md` view refreshes after state mutation.
20
20
 
21
21
  ## Verification
22
22
 
23
23
  After god-deploy-engineer returns:
24
- 1. Verify STATE.md exists on disk
24
+ 1. Verify deploy evidence is recorded in `.godpowers/state.json`
25
25
  2. Verify rollback procedure has been tested (not paper-only)
26
26
  3. Verify the deploy path is one of:
27
27
  - real staging or production target tested
@@ -29,15 +29,17 @@ After god-deploy-engineer returns:
29
29
  commands
30
30
  - local/CI deploy readiness complete with deployed staging verification
31
31
  deferred in `.godpowers/deploy/WAITING-FOR-EXTERNAL-ACCESS.md`
32
- 4. Update `.godpowers/PROGRESS.md`: Deploy status can be done when a tested
33
- real target or tested local staging harness exists. If deployed staging is
34
- deferred, annotate Deploy as done-local with the waiting artifact path and
35
- do not pause unless the user explicitly requested staging.
32
+ 4. Run `npx godpowers state advance --step=deploy --status=done --project=.`
33
+ only when a tested real target or tested local staging harness exists. If
34
+ deployed staging is deferred, record the waiting artifact path in
35
+ `.godpowers/deploy/WAITING-FOR-EXTERNAL-ACCESS.md` and keep that evidence
36
+ in `state.json` through the owning deploy command rather than editing the
37
+ generated progress or deploy state views.
36
38
 
37
39
  ## On Completion
38
40
 
39
41
  ```
40
- Deploy pipeline complete: .godpowers/deploy/STATE.md
42
+ Deploy pipeline complete: .godpowers/deploy/STATE.md (generated view)
41
43
 
42
44
  Suggested next: /god-observe (wire SLOs, alerts, runbooks)
43
45
  ```
@@ -69,15 +71,15 @@ known, do not use it as staging without explicit user approval.
69
71
 
70
72
  ## Re-invocation contract
71
73
 
72
- What happens if `/god-deploy` is run when `.godpowers/deploy/STATE.md` already exists:
74
+ What happens if `/god-deploy` is run when deploy state evidence already exists:
73
75
 
74
76
  | Existing state | Behavior |
75
77
  |---|---|
76
- | File does not exist | Spawn god-deploy-engineer; produce file; mark sub-step done |
77
- | File exists, passes lint, state.json says `done` | Pause: ask user (A) re-run anyway with diff preview, (B) treat as imported (no-op), (C) cancel |
78
- | File exists, fails lint or have-nots | Spawn god-deploy-engineer in update mode with current file + findings as input. Diff preview before overwrite. |
79
- | File exists, state.json says `pending` | Treat as imported: hash + register, no agent spawn. User can `/god-deploy --force` to re-run. |
80
- | `--force` flag passed | Snapshot existing file to `.godpowers/.trash/god-deploy-<ts>/`. Spawn agent fresh. |
78
+ | State evidence does not exist | Spawn god-deploy-engineer; record deploy evidence; mark sub-step done |
79
+ | State evidence exists and state.json says `done` | Pause: ask user (A) re-run anyway with diff preview, (B) treat as imported (no-op), (C) cancel |
80
+ | State evidence fails checks or the owning wrapper reports a generated view checksum warning | Spawn god-deploy-engineer in update mode with current evidence plus findings as input. Diff preview before overwrite. |
81
+ | State evidence exists, state.json says `pending` | Treat as imported: hash + register, no agent spawn. User can `/god-deploy --force` to re-run. |
82
+ | `--force` flag passed | Snapshot existing evidence to `.godpowers/.trash/god-deploy-<ts>/`. Spawn agent fresh. |
81
83
  | `--dry-run` flag passed | Show what would happen; touch nothing |
82
84
 
83
85
  Snapshots in `.trash/` are recoverable via `/god-restore` for 30 days.
@@ -96,9 +96,9 @@ applied to design.
96
96
 
97
97
  After god-designer and god-design-reviewer return:
98
98
  1. Verify `DESIGN.md` exists on disk
99
- 2. Verify `.godpowers/design/STATE.md` exists on disk
99
+ 2. Record design lint, review verdict, and command history in `.godpowers/state.json`
100
100
  3. Run `npx godpowers gate --tier=design --project=.` and do not proceed on a non-zero exit
101
- 4. Update `.godpowers/PROGRESS.md`: Design status = done when the project requires design
101
+ 4. Run `npx godpowers state advance --step=design --status=done --project=.` when the project requires design, or `npx godpowers state advance --step=design --status=not-required --project=.` when design is explicitly not required.
102
102
 
103
103
  ## Output
104
104
 
@@ -107,7 +107,7 @@ Project root:
107
107
  - `PRODUCT.md` (impeccable strategic file, when impeccable installed)
108
108
 
109
109
  Inside `.godpowers/design/`:
110
- - `STATE.md` (lint history, version, impeccable command log)
110
+ - `STATE.md` (generated design state view from `.godpowers/state.json`)
111
111
  - `HISTORY.md` (append-only log of design changes; populated by god-designer)
112
112
  - `REJECTED.md` (append-only log of blocked changes; populated by god-design-reviewer)
113
113
 
@@ -3,7 +3,7 @@ name: god-fast
3
3
  description: |
4
4
  Make a quick inline edit without full Godpowers planning overhead. For trivial
5
5
  changes: typo fixes, config tweaks, single-line updates. No agents, no plans,
6
- no PROGRESS.md updates.
6
+ no state mutation.
7
7
 
8
8
  Triggers on: "god fast", "/god-fast", "quick fix", "trivial change", "tiny tweak"
9
9
  ---
@@ -36,7 +36,7 @@ Skip the full pipeline. Make a small edit inline.
36
36
 
37
37
  - If running tests reveals regressions: STOP. Switch to /god-build or /god-debug.
38
38
  - If the change touches more than 3 lines: STOP. Switch to /god-build.
39
- - Skip PROGRESS.md updates (this is below the planning threshold).
39
+ - Skip state mutation and generated progress view refreshes because this is below the planning threshold.
40
40
 
41
41
  ## On Completion
42
42
 
@@ -57,7 +57,7 @@ Spawn **god-planner** scoped to the feature only.
57
57
  Then run god-executor + god-spec-reviewer + god-quality-reviewer per slice.
58
58
 
59
59
  ### Phase 4: Deploy
60
- Use existing deploy pipeline (.godpowers/deploy/STATE.md). No new pipeline.
60
+ Use existing deploy pipeline from `.godpowers/state.json` deploy evidence. No new pipeline.
61
61
  Feature flag the rollout if the feature is high-risk.
62
62
 
63
63
  ### Phase 5: Harden (just the new code)
@@ -13,7 +13,7 @@ Spawn the **god-harden-auditor** agent in a fresh context via the host platform'
13
13
 
14
14
  ## Setup
15
15
 
16
- 1. Verify build is complete (`.godpowers/build/STATE.md` exists).
16
+ 1. Verify build is complete through `.godpowers/state.json` `tier-2.build.status == done`.
17
17
  2. Spawn god-harden-auditor with full code access.
18
18
  3. The agent writes `.godpowers/harden/FINDINGS.md`.
19
19
 
@@ -23,8 +23,8 @@ After god-harden-auditor returns:
23
23
  1. Verify FINDINGS.md exists on disk
24
24
  2. Run `npx godpowers gate --tier=harden --project=.` and do not proceed on a non-zero exit
25
25
  3. Read findings classification:
26
- - If any Critical: PROGRESS.md status = failed, launch is BLOCKED
27
- - If only High/Medium/Low: PROGRESS.md status = done
26
+ - If any Critical: run `npx godpowers state advance --step=harden --status=failed --project=.` and keep launch BLOCKED
27
+ - If only High/Medium/Low: run `npx godpowers state advance --step=harden --status=done --project=.`
28
28
 
29
29
  ## Have-Nots
30
30
 
@@ -72,7 +72,7 @@ Spawn **god-observability-engineer** briefly:
72
72
  - Confirm recovery in metrics
73
73
 
74
74
  ### Phase 7: Schedule Postmortem
75
- Update PROGRESS.md with a TODO:
75
+ Record a state-backed follow-up TODO through the owning command wrapper:
76
76
  "Run /god-postmortem within 48 hours for incident <id>"
77
77
 
78
78
  Hotfix doesn't replace postmortem; it precedes it.
@@ -3,7 +3,8 @@ name: god-init
3
3
  description: |
4
4
  Initialize a Godpowers project. Detects operating mode (greenfield, gap-fill,
5
5
  audit, multi-repo) and project scale. Creates native Pillars project context
6
- plus the .godpowers/ workflow state directory with PROGRESS.md.
6
+ plus the .godpowers/ workflow state directory with state.json and generated
7
+ PROGRESS.md.
7
8
 
8
9
  Triggers on: "god init", "start a project", "new project", "initialize"
9
10
  ---
@@ -18,9 +19,11 @@ This skill is a thin wrapper. Detection happens automatically; user never
18
19
  needs to specify a mode.
19
20
 
20
21
  1. Check if `.godpowers/` already exists:
21
- - If yes: read PROGRESS.md, call `lib/pillars.pillarizeExisting(projectRoot)`
22
- to ensure the existing Godpowers project is also Pillar-ized, report
23
- current state, ask if user wants to reset or resume
22
+ - If yes: read `.godpowers/state.json`, use generated `.godpowers/PROGRESS.md`
23
+ only as a legacy fallback, call
24
+ `lib/pillars.pillarizeExisting(projectRoot)` to ensure the existing
25
+ Godpowers project is also Pillar-ized, report current state, ask if user
26
+ wants to reset or resume
24
27
  - If no: proceed with initialization
25
28
 
26
29
  2. **Auto-detect what kind of project this is** (background, no user prompt):
@@ -124,7 +127,8 @@ needs to specify a mode.
124
127
  - For brownfield: schedule preflight before archaeology + reconstruction
125
128
  - For bluefield: load org-context, then schedule preflight as constraint intake
126
129
  - Create directory structure
127
- - Write PROGRESS.md with mode, scale, timestamp, tier states
130
+ - Write `.godpowers/state.json` with mode, scale, timestamp, tier states,
131
+ then regenerate the managed `.godpowers/PROGRESS.md` view
128
132
  - Return mode/scale/announcement to this skill
129
133
 
130
134
  8. Detect scale by analyzing the description:
@@ -150,7 +154,7 @@ needs to specify a mode.
150
154
  deploy.md
151
155
  observe.md
152
156
  .godpowers/
153
- PROGRESS.md
157
+ PROGRESS.md # generated managed view
154
158
  prep/
155
159
  INITIAL-FINDINGS.md
156
160
  IMPORTED-CONTEXT.md # only when legacy planning / Superpowers / BMAD context exists
@@ -167,7 +171,7 @@ needs to specify a mode.
167
171
  harden/
168
172
  ```
169
173
 
170
- 10. Write PROGRESS.md with mode, scale, timestamp, all tiers set to `pending`
174
+ 10. Write `state.json` with mode, scale, timestamp, and all tiers set to `pending`, then regenerate `.godpowers/PROGRESS.md`
171
175
 
172
176
  11. Report to the user:
173
177
  - Detected mode and scale
@@ -186,7 +190,7 @@ needs to specify a mode.
186
190
 
187
191
  ## Output
188
192
 
189
- `.godpowers/PROGRESS.md` created with initial state.
193
+ `.godpowers/state.json` created with initial state and `.godpowers/PROGRESS.md` generated as a managed human view.
190
194
 
191
195
  Always create `.godpowers/prep/INITIAL-FINDINGS.md`. This is Godpowers'
192
196
  durable answer to "what did init find in this codebase?" It captures codebase
@@ -201,7 +205,7 @@ as hypothesis-level input only.
201
205
 
202
206
  ## Native Pillars context and AI-tool context
203
207
 
204
- After PROGRESS.md is written, Pillars context is already present. Every
208
+ After `state.json` is written and the progress view is generated, Pillars context is already present. Every
205
209
  Godpowers project uses `AGENTS.md` plus `agents/*.md` as its native project
206
210
  truth layer.
207
211
 
@@ -243,7 +247,7 @@ If the user later wants to enable it manually, they run `/god-context on`.
243
247
 
244
248
  ## Mode D detection (multi-repo workspace)
245
249
 
246
- After PROGRESS.md is written, also check whether this directory is
250
+ After `state.json` is written, also check whether this directory is
247
251
  part of a multi-repo suite:
248
252
 
249
253
  1. Call `lib/multi-repo-detector.detect(projectRoot)`.
@@ -17,21 +17,23 @@ Spawn the **god-launch-strategist** agent in a fresh context via the host platfo
17
17
  2. If Critical findings exist: REFUSE to proceed. Tell user to resolve or
18
18
  explicitly accept the risk first.
19
19
  3. Spawn god-launch-strategist with PRD path and harden FINDINGS.md path.
20
- 4. The agent writes `.godpowers/launch/STATE.md` plus landing copy artifacts.
20
+ 4. The agent returns structured launch evidence for `.godpowers/state.json` plus landing copy artifacts; the generated `.godpowers/launch/STATE.md` view refreshes after state mutation.
21
21
 
22
22
  ## Verification
23
23
 
24
24
  After god-launch-strategist returns:
25
- 1. Verify STATE.md exists on disk
25
+ 1. Verify launch evidence is recorded in `.godpowers/state.json`
26
26
  2. Verify landing copy passes substitution test
27
27
  3. Verify OG cards rendered (not just meta tags)
28
28
  4. Verify one of:
29
29
  - launch target is live and smoke checked
30
30
  - local launch-readiness harness passed and external access bundle is the
31
31
  only missing item
32
- 5. Update `.godpowers/PROGRESS.md`: Launch status = done only when live launch
33
- or explicit local launch-readiness scope is complete. If external access is
34
- missing, mark Launch = waiting-for-external-access.
32
+ 5. Run `npx godpowers state advance --step=launch --status=done --project=.`
33
+ only when live launch or explicit local launch-readiness scope is complete.
34
+ If external access is missing, record the waiting artifact path in launch
35
+ state through the owning command wrapper rather than editing the generated
36
+ progress or launch state views.
35
37
 
36
38
  ## Pause Conditions
37
39
 
@@ -41,7 +43,7 @@ approval require human input.
41
43
  ## On Completion
42
44
 
43
45
  ```
44
- Launch complete: .godpowers/launch/STATE.md
46
+ Launch complete: .godpowers/launch/STATE.md (generated view)
45
47
 
46
48
  All Godpowers tiers done. Project is live.
47
49
 
@@ -71,15 +73,15 @@ approval.
71
73
 
72
74
  ## Re-invocation contract
73
75
 
74
- What happens if `/god-launch` is run when `.godpowers/launch/STATE.md` already exists:
76
+ What happens if `/god-launch` is run when launch state evidence already exists:
75
77
 
76
78
  | Existing state | Behavior |
77
79
  |---|---|
78
- | File does not exist | Spawn god-launch-strategist; produce file; mark sub-step done |
79
- | File exists, passes lint, state.json says `done` | Pause: ask user (A) re-run anyway with diff preview, (B) treat as imported (no-op), (C) cancel |
80
- | File exists, fails lint or have-nots | Spawn god-launch-strategist in update mode with current file + findings as input. Diff preview before overwrite. |
81
- | File exists, state.json says `pending` | Treat as imported: hash + register, no agent spawn. User can `/god-launch --force` to re-run. |
82
- | `--force` flag passed | Snapshot existing file to `.godpowers/.trash/god-launch-<ts>/`. Spawn agent fresh. |
80
+ | State evidence does not exist | Spawn god-launch-strategist; record launch evidence; mark sub-step done |
81
+ | State evidence exists and state.json says `done` | Pause: ask user (A) re-run anyway with diff preview, (B) treat as imported (no-op), (C) cancel |
82
+ | State evidence fails checks or the owning wrapper reports a generated view checksum warning | Spawn god-launch-strategist in update mode with current evidence plus findings as input. Diff preview before overwrite. |
83
+ | State evidence exists, state.json says `pending` | Treat as imported: hash + register, no agent spawn. User can `/god-launch --force` to re-run. |
84
+ | `--force` flag passed | Snapshot existing evidence to `.godpowers/.trash/god-launch-<ts>/`. Spawn agent fresh. |
83
85
  | `--dry-run` flag passed | Show what would happen; touch nothing |
84
86
 
85
87
  Snapshots in `.trash/` are recoverable via `/god-restore` for 30 days.
@@ -17,7 +17,8 @@ Show project phase and contextually appropriate workflows.
17
17
 
18
18
  1. Detect lifecycle phase from disk:
19
19
  - **No `.godpowers/`** -> Pre-init
20
- - **`.godpowers/PROGRESS.md` exists, not all tiers done** -> In progress
20
+ - **`.godpowers/state.json` exists, not all tracked steps done** -> In progress
21
+ - **Only generated legacy `.godpowers/PROGRESS.md` exists** -> In progress after re-deriving state from disk
21
22
  - **All tiers done, no special markers** -> Steady state
22
23
  - **`.godpowers/postmortems/<id>/` exists with no POSTMORTEM.md** -> Post-incident pending
23
24
  - **`.godpowers/migrations/<slug>/MIGRATION.md` exists, status != complete** -> In-migration
@@ -19,8 +19,9 @@ workflow.
19
19
 
20
20
  1. Resolve whether this is a new project run or a resume:
21
21
  - If `.godpowers/state.json`, `.godpowers/PROGRESS.md`, or
22
- `.godpowers/CHECKPOINT.md` exists, this is a resume. Do not ask the user
23
- to describe the project again. Call
22
+ `.godpowers/CHECKPOINT.md` exists, this is a resume. Treat `state.json`
23
+ as the source of truth and `PROGRESS.md` as a generated legacy fallback.
24
+ Do not ask the user to describe the project again. Call
24
25
  `lib/pillars.pillarizeExisting(projectRoot)` first, then rehydrate intent
25
26
  from disk and continue.
26
27
  - If no durable Godpowers state exists and no project description was
@@ -41,7 +42,7 @@ workflow.
41
42
  starting with `agents/context.md` and `agents/repo.md`
42
43
  - `.godpowers/CHECKPOINT.md` first, when present
43
44
  - `.godpowers/state.json`
44
- - `.godpowers/PROGRESS.md`
45
+ - `.godpowers/PROGRESS.md` only as a generated legacy fallback when state is missing
45
46
  - `.godpowers/intent.yaml`, when present
46
47
  - `.godpowers/prep/INITIAL-FINDINGS.md`, when present
47
48
  - `.godpowers/prep/IMPORTED-CONTEXT.md`, when present
@@ -78,7 +79,7 @@ workflow.
78
79
  - The detected mode (A/B/C/E)
79
80
  - The active flags
80
81
  - Instruction that existing `.godpowers` state means resume, not prompt
81
- - Instruction to read `.godpowers/PROGRESS.md` from disk if it exists
82
+ - Instruction to read `.godpowers/state.json` from disk, using `.godpowers/PROGRESS.md` only as generated legacy fallback when state is missing
82
83
  - Instruction to read `.godpowers/prep/INITIAL-FINDINGS.md` and
83
84
  `.godpowers/prep/IMPORTED-CONTEXT.md` if present before choosing the
84
85
  first planning or build step
@@ -13,14 +13,14 @@ Spawn the **god-observability-engineer** agent in a fresh context via the host p
13
13
 
14
14
  ## Setup
15
15
 
16
- 1. Verify `.godpowers/deploy/STATE.md` exists. App is deployed.
16
+ 1. Verify `.godpowers/state.json` records `tier-3.deploy.status == done`.
17
17
  2. Spawn god-observability-engineer with PRD (for success metrics) and ARCH paths.
18
- 3. The agent writes `.godpowers/observe/STATE.md`.
18
+ 3. The agent returns structured observability evidence for `.godpowers/state.json`; the generated `.godpowers/observe/STATE.md` view refreshes after state mutation.
19
19
 
20
20
  ## Verification
21
21
 
22
22
  After god-observability-engineer returns:
23
- 1. Verify STATE.md exists on disk
23
+ 1. Verify observability evidence is recorded in `.godpowers/state.json`
24
24
  2. Verify each SLO has an error budget policy
25
25
  3. Verify each alert has a runbook
26
26
  4. Verify provider work is one of:
@@ -28,14 +28,16 @@ After god-observability-engineer returns:
28
28
  - provider-neutral definitions as code created and locally checked
29
29
  - missing dashboard/API credentials appended to the single external access
30
30
  bundle
31
- 5. Update `.godpowers/PROGRESS.md`: Observe status = done only for verified
32
- real provider config or local definitions as code. If external access is
33
- missing, mark Observe = waiting-for-external-access.
31
+ 5. Run `npx godpowers state advance --step=observe --status=done --project=.`
32
+ only for verified real provider config or local definitions as code. If
33
+ external access is missing, record the missing access bundle in deploy or
34
+ observe state through the owning command wrapper rather than editing the
35
+ generated progress or observe state views.
34
36
 
35
37
  ## On Completion
36
38
 
37
39
  ```
38
- Observability complete: .godpowers/observe/STATE.md
40
+ Observability complete: .godpowers/observe/STATE.md (generated view)
39
41
 
40
42
  Suggested next: /god-harden (adversarial security review, gates Launch)
41
43
  ```
@@ -53,15 +55,15 @@ named command cannot run without one exact credential.
53
55
 
54
56
  ## Re-invocation contract
55
57
 
56
- What happens if `/god-observe` is run when `.godpowers/observe/STATE.md` already exists:
58
+ What happens if `/god-observe` is run when observe state evidence already exists:
57
59
 
58
60
  | Existing state | Behavior |
59
61
  |---|---|
60
- | File does not exist | Spawn god-observability-engineer; produce file; mark sub-step done |
61
- | File exists, passes lint, state.json says `done` | Pause: ask user (A) re-run anyway with diff preview, (B) treat as imported (no-op), (C) cancel |
62
- | File exists, fails lint or have-nots | Spawn god-observability-engineer in update mode with current file + findings as input. Diff preview before overwrite. |
63
- | File exists, state.json says `pending` | Treat as imported: hash + register, no agent spawn. User can `/god-observe --force` to re-run. |
64
- | `--force` flag passed | Snapshot existing file to `.godpowers/.trash/god-observe-<ts>/`. Spawn agent fresh. |
62
+ | State evidence does not exist | Spawn god-observability-engineer; record observability evidence; mark sub-step done |
63
+ | State evidence exists and state.json says `done` | Pause: ask user (A) re-run anyway with diff preview, (B) treat as imported (no-op), (C) cancel |
64
+ | State evidence fails checks or the owning wrapper reports a generated view checksum warning | Spawn god-observability-engineer in update mode with current evidence plus findings as input. Diff preview before overwrite. |
65
+ | State evidence exists, state.json says `pending` | Treat as imported: hash + register, no agent spawn. User can `/god-observe --force` to re-run. |
66
+ | `--force` flag passed | Snapshot existing evidence to `.godpowers/.trash/god-observe-<ts>/`. Spawn agent fresh. |
65
67
  | `--dry-run` flag passed | Show what would happen; touch nothing |
66
68
 
67
69
  Snapshots in `.trash/` are recoverable via `/god-restore` for 30 days.
@@ -15,7 +15,7 @@ Create a context handoff so you can resume cleanly later.
15
15
 
16
16
  ## Process
17
17
 
18
- 1. Read `.godpowers/PROGRESS.md` to capture current state
18
+ 1. Read `.godpowers/state.json` to capture current state; use `.godpowers/PROGRESS.md` only as a generated legacy fallback when state is missing.
19
19
  2. Identify what was actively being worked on:
20
20
  - Which slice? Which agent was running?
21
21
  - What was the next step?
@@ -53,7 +53,7 @@ Paused: [timestamp]
53
53
  `/god-resume-work` to load this context, then continue.
54
54
  ```
55
55
 
56
- 5. Update PROGRESS.md to mark current sub-step as `in-flight` if not already
56
+ 5. Run `npx godpowers state advance --step=<current-step> --status=in-flight --project=.` if the current sub-step is not already in flight.
57
57
 
58
58
  ## On Completion
59
59
 
package/skills/god-prd.md CHANGED
@@ -13,11 +13,12 @@ Spawn the **god-pm** agent in a fresh context via the host platform's native age
13
13
 
14
14
  ## Setup
15
15
 
16
- 1. If `.godpowers/PROGRESS.md` does not exist: tell the user to run `/god-init` first
16
+ 1. If `.godpowers/state.json` does not exist: tell the user to run `/god-init` first.
17
17
  2. Read `.godpowers/prep/INITIAL-FINDINGS.md` if present.
18
18
  3. Read `.godpowers/prep/IMPORTED-CONTEXT.md` if present.
19
- 4. Spawn god-pm with the user's project description from PROGRESS.md plus any
20
- prep artifacts. Prep artifacts are context, not source of truth.
19
+ 4. Spawn god-pm with the user's project description from `state.json`,
20
+ `.godpowers/intent.yaml`, and any prep artifacts. Prep artifacts are
21
+ context, not source of truth.
21
22
  5. The agent writes `.godpowers/prd/PRD.md`
22
23
  6. The agent runs have-nots checks before declaring done
23
24
  7. If god-pm pauses for a human question: relay to user using pause format
@@ -31,7 +32,7 @@ After god-pm returns:
31
32
  1. Verify `.godpowers/prd/PRD.md` exists on disk
32
33
  2. Spawn god-auditor briefly to verify have-nots pass
33
34
  3. Run `npx godpowers gate --tier=prd --project=.` and do not proceed on a non-zero exit
34
- 4. Update `.godpowers/PROGRESS.md`: PRD status = done
35
+ 4. Run `npx godpowers state advance --step=prd --status=done --project=.` to update `state.json` and regenerate `.godpowers/PROGRESS.md`.
35
36
 
36
37
  ## Pause Format
37
38
 
@@ -39,7 +39,7 @@ workflow.
39
39
 
40
40
  - Planning tier (PRD/ARCH/ROADMAP/STACK)
41
41
  - Build planning into waves (single slice only)
42
- - PROGRESS.md updates if no `.godpowers/` exists
42
+ - State mutation if no `.godpowers/` exists
43
43
 
44
44
  ## On Completion
45
45
 
@@ -23,7 +23,7 @@ After god-repo-scaffolder returns:
23
23
  1. Verify AUDIT.md exists on disk
24
24
  2. Verify CI passes on the empty scaffold
25
25
  3. Run `npx godpowers gate --tier=repo --project=.` and do not proceed on a non-zero exit
26
- 4. Update `.godpowers/PROGRESS.md`: Repo status = done
26
+ 4. Run `npx godpowers state advance --step=repo --status=done --project=.` to update `state.json` and regenerate `.godpowers/PROGRESS.md`.
27
27
 
28
28
  ## On Completion
29
29