godpowers 1.0.0 → 1.6.1

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.
@@ -20,6 +20,8 @@ Optional: `.godpowers/prep/INITIAL-FINDINGS.md` may exist as preparation
20
20
  context.
21
21
  Optional: `.godpowers/prep/IMPORTED-CONTEXT.md` may exist as preparation
22
22
  context.
23
+ Optional: `.godpowers/domain/GLOSSARY.md` may exist as domain preparation
24
+ context.
23
25
  Optional: `.godpowers/design/DESIGN.md` and `.godpowers/design/PRODUCT.md`
24
26
  may exist as early product-experience preparation.
25
27
 
@@ -39,6 +41,12 @@ stories and plans as hypothesis-level input only. Convert imported terminology
39
41
  into Godpowers vocabulary. Do not preserve imported methodology terminology in
40
42
  Godpowers artifacts unless the user explicitly asked for it.
41
43
 
44
+ If `.godpowers/domain/GLOSSARY.md` exists, read it before sequencing work.
45
+ Use canonical terms in increment goals, gates, dependencies, and feature
46
+ names. Treat unresolved glossary ambiguities as roadmap `[OPEN QUESTION]`
47
+ entries when they affect dependency order, scope boundaries, or completion
48
+ gates.
49
+
42
50
  If DESIGN.md or PRODUCT.md exists, read them before sequencing delivery
43
51
  increments.
44
52
  Use screens, flows, components, accessibility obligations, and product voice to
@@ -51,6 +59,9 @@ Rules:
51
59
  - If imported context conflicts with PRD or ARCH, PRD and ARCH win.
52
60
  - Mark any imported sequencing assumption as `[HYPOTHESIS]` until confirmed by
53
61
  Godpowers artifacts or the user.
62
+ - Do not invent roadmap terms when a canonical glossary term exists.
63
+ - If glossary language conflicts with PRD or ARCH, PRD and ARCH win and the
64
+ conflict becomes an `[OPEN QUESTION]`.
54
65
  - Keep design-derived delivery increments grounded in the PRD and ARCH.
55
66
  - If ROADMAP creates durable delivery or sequencing truth, plan updates for
56
67
  relevant pillars. In `--yolo`, apply those updates and log them to
@@ -19,6 +19,8 @@ Optional: `.godpowers/prep/INITIAL-FINDINGS.md` may exist as preparation
19
19
  context.
20
20
  Optional: `.godpowers/prep/IMPORTED-CONTEXT.md` may exist as preparation
21
21
  context.
22
+ Optional: `.godpowers/domain/GLOSSARY.md` may exist as domain preparation
23
+ context.
22
24
  Optional: `.godpowers/design/DESIGN.md` and `.godpowers/design/PRODUCT.md`
23
25
  may exist as product-experience preparation.
24
26
 
@@ -31,6 +33,10 @@ If `.godpowers/prep/IMPORTED-CONTEXT.md` exists, read its technical and stack
31
33
  signals before scoring candidates. Use imported technology choices, constraints,
32
34
  and team familiarity as hypothesis-level input only.
33
35
 
36
+ If `.godpowers/domain/GLOSSARY.md` exists, read it before scoring candidates.
37
+ Use it to understand domain relationships, ownership boundaries, data shape,
38
+ integration language, and ambiguity that may affect stack fit.
39
+
34
40
  If DESIGN.md or PRODUCT.md exists, read them before scoring frontend,
35
41
  component, styling, accessibility, animation, and design-token tooling
36
42
  candidates.
@@ -40,6 +46,8 @@ Rules:
40
46
  - Treat imported technology choices as candidate evidence, not decisions.
41
47
  - If imported context conflicts with ARCH, ARCH wins and the conflict becomes a
42
48
  stack open question.
49
+ - If glossary language changes apparent data ownership, integration boundaries,
50
+ or workflow complexity, reflect that in candidate scoring as evidence.
43
51
  - If design intent conflicts with ARCH NFRs, ARCH wins and the conflict becomes
44
52
  a stack or architecture open question.
45
53
 
package/lib/README.md CHANGED
@@ -1,28 +1,80 @@
1
- # lib/ - Runtime Library (placeholder)
1
+ # lib/ - Runtime Library
2
2
 
3
- This directory is reserved for v0.5+ runtime modules. v0.4 has the schemas
4
- defined; v0.5 implements them.
3
+ This directory contains the JavaScript runtime modules that support Godpowers
4
+ validation, routing, workflow execution, state management, observability, and
5
+ package-level integrations.
5
6
 
6
- ## Planned modules
7
+ ## Core state and intent
7
8
 
8
- | Module | Purpose | Target version |
9
- |--------|---------|----------------|
10
- | `state.js` | Read/write `.godpowers/state.json` with schema validation | v0.5 |
11
- | `events.js` | Append OpenTelemetry-shape events to events.jsonl | v0.5 |
12
- | `intent.js` | Read/validate `intent.yaml` (or `.godpowers/intent.yaml`) | v0.5 |
13
- | `workflow-runtime.js` | Parse and execute workflow YAML | v0.5 |
14
- | `reflog.js` | Append to `.godpowers/log` and rewind state | v0.6 |
15
- | `trash.js` | Recoverable deletion to `.godpowers/.trash/` | v0.6 |
16
- | `metrics.js` | Compute per-tier stats from events.jsonl | v0.7 |
17
- | `extension-loader.js` | Lazy-activate skill packs | v0.8 |
9
+ | Module | Purpose |
10
+ |--------|---------|
11
+ | `state.js` | Read, initialize, validate, and write `.godpowers/state.json`. |
12
+ | `state-lock.js` | Coordinate state writes with a lock file. |
13
+ | `intent.js` | Read and validate `intent.yaml` from project roots or `.godpowers/`. |
14
+ | `checkpoint.js` | Create and inspect resumable checkpoint artifacts. |
15
+ | `budget.js` | Read and enforce configured budget controls. |
16
+ | `cost-tracker.js` | Track token and cost estimates from event streams. |
18
17
 
19
- ## Why placeholder
18
+ ## Events and observability
20
19
 
21
- In v0.4 (current), Godpowers is markdown skills + agent prose. There's no
22
- runtime that needs these modules; agents read/write artifacts directly.
20
+ | Module | Purpose |
21
+ |--------|---------|
22
+ | `events.js` | Append structured runtime events. |
23
+ | `event-reader.js` | Read and aggregate event streams. |
24
+ | `otel-exporter.js` | Export Godpowers events in an OpenTelemetry-shaped format. |
25
+ | `runtime-audit.js` | Audit runtime health and expected project state. |
26
+ | `runtime-test.js` | Provide runtime checks used by package tests. |
23
27
 
24
- In v0.5+, the workflow runtime needs structured access to state. That's when
25
- these modules ship.
28
+ ## Routing and execution
26
29
 
27
- See `../ARCHITECTURE.md` for the design and `../docs/ROADMAP.md` for the
28
- sequencing.
30
+ | Module | Purpose |
31
+ |--------|---------|
32
+ | `router.js` | Resolve user intent to skills, agents, recipes, and workflows. |
33
+ | `recipes.js` | Load and validate routing recipes. |
34
+ | `workflow-parser.js` | Parse workflow YAML into executable steps. |
35
+ | `workflow-runner.js` | Execute workflow steps with validation hooks. |
36
+ | `agent-cache.js` | Cache agent metadata for faster routing. |
37
+ | `agent-validator.js` | Validate agent frontmatter and contracts. |
38
+
39
+ ## Artifact quality
40
+
41
+ | Module | Purpose |
42
+ |--------|---------|
43
+ | `artifact-linter.js` | Check artifacts for required labels, evidence, and domain precision. |
44
+ | `artifact-diff.js` | Compare artifact changes for review and release workflows. |
45
+ | `have-nots-validator.js` | Check artifacts against known failure modes. |
46
+ | `meta-linter.js` | Validate Godpowers documentation and skill metadata. |
47
+ | `story-validator.js` | Validate story artifacts and story lifecycle state. |
48
+
49
+ ## Design, context, and integrations
50
+
51
+ | Module | Purpose |
52
+ |--------|---------|
53
+ | `context-writer.js` | Produce tool-specific context files. |
54
+ | `context-budget.js` | Keep generated context within budget. |
55
+ | `design-detector.js` | Detect design-system conventions. |
56
+ | `design-spec.js` | Normalize design specifications. |
57
+ | `awesome-design.js` | Validate design guidance against awesome-design rules. |
58
+ | `browser-bridge.js` | Connect browser verification flows. |
59
+ | `agent-browser-driver.js` | Drive browser-backed agent checks. |
60
+ | `skillui-bridge.js` | Bridge skill metadata into UI surfaces. |
61
+ | `impeccable-bridge.js` | Bridge runtime checks into impeccable quality workflows. |
62
+ | `extensions.js` | Load and validate extension packs. |
63
+
64
+ ## Repository and graph helpers
65
+
66
+ | Module | Purpose |
67
+ |--------|---------|
68
+ | `code-scanner.js` | Scan source trees for routing and quality evidence. |
69
+ | `cross-artifact-impact.js` | Detect relationships between changed artifacts. |
70
+ | `cross-repo-linkage.js` | Track suite-level repository relationships. |
71
+ | `drift-detector.js` | Detect context drift between artifacts and implementation. |
72
+ | `impact.js` | Summarize expected impact of proposed changes. |
73
+ | `linkage.js` | Connect artifacts, stories, and implementation files. |
74
+ | `multi-repo-detector.js` | Detect multi-repository workspaces. |
75
+ | `reverse-sync.js` | Reflect implementation changes back into artifacts. |
76
+ | `review-required.js` | Decide when review gates should block progress. |
77
+ | `suite-state.js` | Manage state across registered project suites. |
78
+
79
+ See `../ARCHITECTURE.md` for system design and `../docs/ROADMAP.md` for planned
80
+ runtime work.
@@ -6,7 +6,7 @@
6
6
  * findings.
7
7
  *
8
8
  * Public API:
9
- * detectType(filePath) -> 'prd'|'arch'|'roadmap'|'stack'|'design'|'product'|null
9
+ * detectType(filePath) -> 'prd'|'arch'|'roadmap'|'stack'|'design'|'product'|'domain'|null
10
10
  * lintFile(filePath, opts) -> { type, findings, summary }
11
11
  * lintAll(projectRoot, opts) -> [{ path, type, findings, summary }, ...]
12
12
  *
@@ -28,6 +28,7 @@ function detectType(filePath) {
28
28
  if (lower.includes('/arch/') || basename === 'arch.md') return 'arch';
29
29
  if (lower.includes('/roadmap/') || basename === 'roadmap.md') return 'roadmap';
30
30
  if (lower.includes('/stack/') || basename === 'stack-decision.md' || basename === 'decision.md') return 'stack';
31
+ if (lower.includes('/domain/') || basename === 'domain-glossary.md' || basename === 'glossary.md') return 'domain';
31
32
  if (basename === 'design.md') return 'design';
32
33
  if (basename === 'product.md') return 'product';
33
34
  if (basename === 'postmortem.md') return 'postmortem';
@@ -82,6 +83,7 @@ function lintAll(projectRoot, opts = {}) {
82
83
  '.godpowers/arch/ARCH.md',
83
84
  '.godpowers/roadmap/ROADMAP.md',
84
85
  '.godpowers/stack/DECISION.md',
86
+ '.godpowers/domain/GLOSSARY.md',
85
87
  '.godpowers/design/DESIGN.md',
86
88
  'DESIGN.md',
87
89
  'PRODUCT.md'
@@ -22,6 +22,11 @@
22
22
  * P-08 open-q without owner mechanical (table column scan)
23
23
  * P-09 open-q without due date mechanical (table column scan)
24
24
  * A-04 NFR not mapped mechanical (PRD NFR vs ARCH map)
25
+ * DG-01 term without avoid aliases mechanical (term block scan)
26
+ * DG-02 implementation detail partial mechanical (technical-word scan)
27
+ * DG-03 ambiguity owner/due mechanical (section scan)
28
+ * DG-04 relationship undefined mechanical (bold term cross-check)
29
+ * DG-05 behavior definition partial mechanical (verb scan)
25
30
  *
26
31
  * Substitution test (U-01) is a partial mechanical check: flags sentences
27
32
  * containing only generic nouns ('users', 'developers', 'scalable',
@@ -524,6 +529,163 @@ function checkArchNfrMap(content, opts = {}) {
524
529
  return findings;
525
530
  }
526
531
 
532
+ /** DG-01: canonical term without avoided aliases */
533
+ function checkDomainAvoidAliases(content) {
534
+ const findings = [];
535
+ const lines = content.split('\n');
536
+ for (let i = 0; i < lines.length; i++) {
537
+ const line = lines[i].trim();
538
+ const match = line.match(/^\*\*([^*\]]+)\*\*:\s*(.+)/);
539
+ if (!match) continue;
540
+ const term = match[1].trim();
541
+ if (!term || term.startsWith('[')) continue;
542
+ let hasAvoid = false;
543
+ for (let j = i + 1; j < Math.min(lines.length, i + 5); j++) {
544
+ const next = lines[j].trim();
545
+ if (/^\*\*[^*]+\*\*:/.test(next) || /^#{1,6}\s/.test(next)) break;
546
+ const avoidMatch = next.match(/^_Avoid_:\s*(.+)/i);
547
+ if (avoidMatch && avoidMatch[1].trim() && !avoidMatch[1].includes('[')) {
548
+ hasAvoid = true;
549
+ break;
550
+ }
551
+ }
552
+ if (!hasAvoid) {
553
+ findings.push({
554
+ code: 'DG-01',
555
+ severity: 'warning',
556
+ line: i + 1,
557
+ column: 1,
558
+ message: `Glossary term "${term}" has no avoided aliases listed.`,
559
+ suggestion: 'Add an _Avoid_: line with non-canonical aliases or overloaded words.'
560
+ });
561
+ }
562
+ }
563
+ return findings;
564
+ }
565
+
566
+ /** DG-02: implementation detail in glossary */
567
+ function checkDomainImplementationDetails(content) {
568
+ const findings = [];
569
+ const technicalWords = /\b(src\/|lib\/|\.js\b|\.ts\b|\.tsx\b|React|Vue|Svelte|Postgres|MySQL|Redis|Kafka|API endpoint|endpoint|function|class|module|component|database|ORM|queue|HTTP|GraphQL)\b/i;
570
+ const lines = content.split('\n');
571
+ for (let i = 0; i < lines.length; i++) {
572
+ const line = lines[i];
573
+ if (technicalWords.test(line)) {
574
+ findings.push({
575
+ code: 'DG-02',
576
+ severity: 'warning',
577
+ line: i + 1,
578
+ column: 1,
579
+ message: 'Possible implementation detail in domain glossary.',
580
+ suggestion: 'Keep implementation details in PRD, ARCH, STACK, docs, or code-linked artifacts.'
581
+ });
582
+ }
583
+ }
584
+ return findings;
585
+ }
586
+
587
+ /** DG-03: unresolved ambiguity without owner or due date */
588
+ function checkDomainAmbiguityOwners(content) {
589
+ const findings = [];
590
+ const section = extractSection(content, /^##\s*Flagged Ambiguities/im);
591
+ if (!section) return findings;
592
+ const lines = section.body.split('\n');
593
+ for (let i = 0; i < lines.length; i++) {
594
+ const line = lines[i].trim();
595
+ if (!line.startsWith('-')) continue;
596
+ const lineWithoutLabel = line.replace(/\[OPEN QUESTION\]/g, '');
597
+ if (lineWithoutLabel.includes('[')) continue;
598
+ const isOpen = line.includes('[OPEN QUESTION]') || /\bambigu/i.test(line);
599
+ if (!isOpen) continue;
600
+ if (!/\bOwner:\s*[^.\]]+/i.test(line)) {
601
+ findings.push({
602
+ code: 'DG-03',
603
+ severity: 'error',
604
+ line: section.startLine + i,
605
+ column: 1,
606
+ message: 'Glossary ambiguity has no owner.',
607
+ suggestion: 'Add Owner: [name] to the ambiguity.'
608
+ });
609
+ }
610
+ if (!/\bDue:\s*[^.\]]+/i.test(line)) {
611
+ findings.push({
612
+ code: 'DG-03',
613
+ severity: 'error',
614
+ line: section.startLine + i,
615
+ column: 1,
616
+ message: 'Glossary ambiguity has no due date.',
617
+ suggestion: 'Add Due: [date or command gate] to the ambiguity.'
618
+ });
619
+ }
620
+ }
621
+ return findings;
622
+ }
623
+
624
+ /** DG-04: relationship references undefined canonical term */
625
+ function checkDomainRelationshipTerms(content) {
626
+ const findings = [];
627
+ const language = extractSection(content, /^##\s*Language/im);
628
+ const relationships = extractSection(content, /^##\s*Relationships/im);
629
+ if (!language || !relationships) return findings;
630
+
631
+ const canonical = new Set();
632
+ const languageLines = language.body.split('\n');
633
+ for (const line of languageLines) {
634
+ const match = line.trim().match(/^\*\*([^*\]]+)\*\*:/);
635
+ if (match && !match[1].startsWith('[')) {
636
+ canonical.add(match[1].trim());
637
+ }
638
+ }
639
+
640
+ const relLines = relationships.body.split('\n');
641
+ for (let i = 0; i < relLines.length; i++) {
642
+ const relLineWithoutLabels = relLines[i]
643
+ .replace(/\[DECISION\]/g, '')
644
+ .replace(/\[HYPOTHESIS\]/g, '')
645
+ .replace(/\[OPEN QUESTION\]/g, '');
646
+ if (relLineWithoutLabels.includes('[')) continue;
647
+ const boldTerms = [...relLines[i].matchAll(/\*\*([^*\]]+)\*\*/g)].map(m => m[1].trim());
648
+ for (const term of boldTerms) {
649
+ if (term.startsWith('[')) continue;
650
+ if (!canonical.has(term)) {
651
+ findings.push({
652
+ code: 'DG-04',
653
+ severity: 'warning',
654
+ line: relationships.startLine + i,
655
+ column: 1,
656
+ message: `Relationship references undefined glossary term "${term}".`,
657
+ suggestion: 'Define the term in Language or replace it with a canonical term.'
658
+ });
659
+ }
660
+ }
661
+ }
662
+ return findings;
663
+ }
664
+
665
+ /** DG-05: definition describes behavior instead of identity */
666
+ function checkDomainDefinitionBehavior(content) {
667
+ const findings = [];
668
+ const behaviorWords = /\b(handles|processes|manages|stores|renders|calls|sends|receives|creates|updates|deletes|calculates|syncs)\b/i;
669
+ const lines = content.split('\n');
670
+ for (let i = 0; i < lines.length; i++) {
671
+ const line = lines[i].trim();
672
+ const match = line.match(/^\*\*([^*\]]+)\*\*:\s*(.+)/);
673
+ if (!match || match[1].startsWith('[')) continue;
674
+ const definition = match[2];
675
+ if (behaviorWords.test(definition)) {
676
+ findings.push({
677
+ code: 'DG-05',
678
+ severity: 'warning',
679
+ line: i + 1,
680
+ column: 1,
681
+ message: `Glossary definition for "${match[1]}" may describe behavior instead of identity.`,
682
+ suggestion: 'Define what the term is in one sentence. Put behavior in PRD, ARCH, or docs.'
683
+ });
684
+ }
685
+ }
686
+ return findings;
687
+ }
688
+
527
689
  // ============================================================================
528
690
  // Helpers
529
691
  // ============================================================================
@@ -579,6 +741,13 @@ const ARTIFACT_CHECKS = {
579
741
  ],
580
742
  arch: [
581
743
  { code: 'A-04', fn: checkArchNfrMap }
744
+ ],
745
+ domain: [
746
+ { code: 'DG-01', fn: checkDomainAvoidAliases },
747
+ { code: 'DG-02', fn: checkDomainImplementationDetails },
748
+ { code: 'DG-03', fn: checkDomainAmbiguityOwners },
749
+ { code: 'DG-04', fn: checkDomainRelationshipTerms },
750
+ { code: 'DG-05', fn: checkDomainDefinitionBehavior }
582
751
  ]
583
752
  };
584
753
 
@@ -643,5 +812,10 @@ module.exports = {
643
812
  checkPrdNoGos,
644
813
  checkPrdOpenQuestions,
645
814
  checkArchNfrMap,
815
+ checkDomainAvoidAliases,
816
+ checkDomainImplementationDetails,
817
+ checkDomainAmbiguityOwners,
818
+ checkDomainRelationshipTerms,
819
+ checkDomainDefinitionBehavior,
646
820
  extractSection
647
821
  };
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "godpowers",
3
- "version": "1.0.0",
4
- "description": "AI-powered development system: 105 slash commands and 39 specialist agents that take a project from raw idea to hardened production. Runs inside Claude Code, Codex, Cursor, Windsurf, Gemini, and 10+ other AI coding tools.",
3
+ "version": "1.6.1",
4
+ "description": "AI-powered development system: 106 slash commands and 39 specialist agents that take a project from raw idea to hardened production. Runs inside Claude Code, Codex, Cursor, Windsurf, Gemini, and 10+ other AI coding tools.",
5
5
  "bin": {
6
6
  "godpowers": "./bin/install.js"
7
7
  },
8
8
  "scripts": {
9
- "test": "node scripts/validate-skills.js && node scripts/test-doc-surface-counts.js && bash scripts/smoke.sh && node scripts/test-runtime.js && node scripts/test-router.js && node scripts/test-recipes.js && node scripts/test-context-writer.js && node scripts/test-pillars.js && node scripts/test-artifact-linter.js && node scripts/test-artifact-diff.js && node scripts/test-design-foundation.js && node scripts/test-linkage.js && node scripts/test-impact.js && node scripts/test-reverse-sync.js && node scripts/test-integration.js && node scripts/test-cross-artifact.js && node scripts/test-awesome-design.js && node scripts/test-skillui-bridge.js && node scripts/test-runtime-verification.js && node scripts/test-agent-browser.js && node scripts/test-mode-d.js && node scripts/test-runtime-heuristics.js && node scripts/test-agent-validator.js && node scripts/test-story-validator.js && node scripts/test-state.js && node scripts/test-intent.js && node scripts/test-events.js && node scripts/test-golden-artifacts.js && node scripts/test-install-smoke.js && node scripts/test-checkpoint.js && node scripts/test-extensions.js && node scripts/test-event-reader.js && node scripts/test-state-lock.js && node scripts/test-cost-saver.js && node scripts/test-budget-onoff.js && node scripts/test-workflow-runner.js && node scripts/test-otel-exporter.js && node scripts/test-extensions-publish.js",
9
+ "test": "node scripts/validate-skills.js && node scripts/test-doc-surface-counts.js && bash scripts/smoke.sh && node scripts/test-runtime.js && node scripts/test-router.js && node scripts/test-recipes.js && node scripts/test-context-writer.js && node scripts/test-pillars.js && node scripts/test-artifact-linter.js && node scripts/test-artifact-diff.js && node scripts/test-design-foundation.js && node scripts/test-linkage.js && node scripts/test-impact.js && node scripts/test-reverse-sync.js && node scripts/test-integration.js && node scripts/test-cross-artifact.js && node scripts/test-awesome-design.js && node scripts/test-skillui-bridge.js && node scripts/test-runtime-verification.js && node scripts/test-agent-browser.js && node scripts/test-mode-d.js && node scripts/test-runtime-heuristics.js && node scripts/test-agent-validator.js && node scripts/test-story-validator.js && node scripts/test-state.js && node scripts/test-intent.js && node scripts/test-events.js && node scripts/test-golden-artifacts.js && node scripts/test-install-smoke.js && node scripts/test-checkpoint.js && node scripts/test-extensions.js && node scripts/test-event-reader.js && node scripts/test-state-lock.js && node scripts/test-cost-saver.js && node scripts/test-budget-onoff.js && node scripts/test-workflow-runner.js && npm run test:e2e && node scripts/test-otel-exporter.js && node scripts/test-extensions-publish.js",
10
10
  "prepublishOnly": "npm test",
11
11
  "validate-skills": "node scripts/validate-skills.js",
12
12
  "test:surface": "node scripts/test-doc-surface-counts.js",
@@ -17,7 +17,11 @@
17
17
  "test:context": "node scripts/test-context-writer.js",
18
18
  "test:pillars": "node scripts/test-pillars.js",
19
19
  "test:linter": "node scripts/test-artifact-linter.js",
20
- "test:diff": "node scripts/test-artifact-diff.js"
20
+ "test:diff": "node scripts/test-artifact-diff.js",
21
+ "test:e2e": "node tests/integration/full-arc.test.js",
22
+ "test:audit": "npm audit --omit=dev && git diff --check && npm run test:surface",
23
+ "pack:check": "node scripts/check-package-contents.js",
24
+ "release:check": "npm test && npm run test:audit && npm run pack:check"
21
25
  },
22
26
  "keywords": [
23
27
  "ai",
@@ -179,6 +179,30 @@ Choice motivated by "looks good on resume" rather than fit-for-PRD. Fail.
179
179
  Looks robust on paper but fails first real load. NFR validation must include
180
180
  worst-case analysis. Fail.
181
181
 
182
+ #### A-13 ADR inflation
183
+ An ADR records a decision that is easy to reverse, obvious without context, or
184
+ not the result of a real tradeoff. Fail.
185
+
186
+ ### Domain Glossary Have-Nots
187
+
188
+ #### DG-01 Canonical term without avoided aliases
189
+ A glossary term names the canonical language but does not list avoided aliases.
190
+ Fail.
191
+
192
+ #### DG-02 Implementation detail in glossary
193
+ The domain glossary stores implementation details, stack choices, code paths,
194
+ or technical scratch notes. The glossary is domain language only. Fail.
195
+
196
+ #### DG-03 Unresolved ambiguity without owner or due date
197
+ An ambiguity is recorded without an owner or due date. Fail.
198
+
199
+ #### DG-04 Relationship uses non-canonical term
200
+ A relationship references a term that is not defined in the glossary language
201
+ section. Fail.
202
+
203
+ #### DG-05 Definition does behavior work
204
+ A definition describes what the system does instead of what the term is. Fail.
205
+
182
206
  ### Roadmap Have-Nots
183
207
 
184
208
  #### R-01 Generic milestone goal
@@ -4,14 +4,12 @@ Per-tier reference content for Tier 2 (Building: Repo, Build).
4
4
 
5
5
  ## Files
6
6
 
7
- - (placeholder)
7
+ - `BUILD-ANTIPATTERNS.md`: failure modes for implementation planning and execution.
8
+ - `BUILD-VERTICAL-SLICES.md`: guidance for slicing work into user-visible increments.
9
+ - `BUILD-WAVES.md`: dependency-aware parallelism patterns for multi-agent work.
8
10
 
9
- ## Planned content
11
+ ## Use
10
12
 
11
- - TDD violation examples with how-to-fix
12
- - Two-stage review checklists with worked findings
13
- - Vertical slice anatomy with anti-examples (horizontal "set up the database")
14
- - Atomic commit examples
15
- - Wave parallelism dependency analysis worked examples
16
-
17
- See [HAVE-NOTS.md](../HAVE-NOTS.md) for the canonical failure-mode catalog.
13
+ Use these references when reviewing implementation plans, build execution, and
14
+ agent workstream shape. Pair them with [HAVE-NOTS.md](../HAVE-NOTS.md) for the
15
+ canonical failure-mode catalog.
@@ -4,13 +4,16 @@ Per-tier reference content for Tier 1 (Planning: PRD, Architecture, Roadmap, Sta
4
4
 
5
5
  ## Files
6
6
 
7
- - (placeholder; antipattern catalogs and worked examples to be added)
7
+ - `PRD-ANATOMY.md`: structure and evidence expectations for product requirements.
8
+ - `PRD-ANTIPATTERNS.md`: common ways PRDs become generic, untestable, or ungrounded.
9
+ - `ARCH-ANATOMY.md`: architecture decision structure, boundaries, and tradeoff framing.
10
+ - `ARCH-ANTIPATTERNS.md`: architecture theater, cargo-cult patterns, and weak constraints.
11
+ - `STACK-ANATOMY.md`: stack decision shape, flip points, and operational fit.
12
+ - `STACK-ANTIPATTERNS.md`: technology-choice failure modes and substitution-test misses.
13
+ - `ROADMAP-ANATOMY.md`: sequencing, dependency, and milestone structure.
14
+ - `ROADMAP-ANTIPATTERNS.md`: feature-factory, Gantt theater, and shelf-roadmap failures.
8
15
 
9
- ## Planned content
16
+ ## Use
10
17
 
11
- - PRD anatomy with line-by-line annotations of a substitution-tested example
12
- - ARCH antipatterns: architecture theater, paper-tiger, cargo-cult cloud-native
13
- - Worked Stack decision examples with flip-point analysis
14
- - Roadmap anti-examples: Gantt theater, feature-factory output, shelf roadmaps
15
-
16
- See [HAVE-NOTS.md](../HAVE-NOTS.md) for the canonical failure-mode catalog.
18
+ Use these references when reviewing or generating Tier 1 artifacts. Pair them
19
+ with [HAVE-NOTS.md](../HAVE-NOTS.md) for the canonical failure-mode catalog.
@@ -4,15 +4,16 @@ Per-tier reference content for Tier 3 (Deploy, Observe, Launch, Harden).
4
4
 
5
5
  ## Files
6
6
 
7
- - (placeholder)
7
+ - `DEPLOY-PATTERNS.md`: deployment promotion patterns and release safety checks.
8
+ - `DEPLOY-ANTIPATTERNS.md`: deployment failure modes and operational shortcuts.
9
+ - `OBSERVE-SLO-EXAMPLES.md`: SLO, alerting, and error-budget examples.
10
+ - `OBSERVE-ANTIPATTERNS.md`: observability gaps, noisy alerts, and weak signals.
11
+ - `LAUNCH-ANTIPATTERNS.md`: launch readiness, messaging, and adoption failure modes.
12
+ - `HARDEN-OWASP-WORKSHEETS.md`: security review worksheets based on OWASP categories.
13
+ - `HARDEN-ANTIPATTERNS.md`: hardening gaps and security theater patterns.
8
14
 
9
- ## Planned content
15
+ ## Use
10
16
 
11
- - Same-artifact promotion patterns and anti-patterns
12
- - SLO worked examples with error budget policies
13
- - Symptom-vs-cause alerting catalog
14
- - OWASP Top 10 manual review worksheets
15
- - Launch copy substitution-test calibration set
16
- - D-7 to D+7 runbook templates
17
-
18
- See [HAVE-NOTS.md](../HAVE-NOTS.md) for the canonical failure-mode catalog.
17
+ Use these references when preparing production releases, observability plans,
18
+ launch plans, and hardening reviews. Pair them with
19
+ [HAVE-NOTS.md](../HAVE-NOTS.md) for the canonical failure-mode catalog.
@@ -17,7 +17,8 @@ execution:
17
17
  reads:
18
18
  - .godpowers/prep/INITIAL-FINDINGS.md
19
19
  - .godpowers/prep/IMPORTED-CONTEXT.md
20
- secondary-spawns: [god-pm, god-designer, god-architect, god-roadmapper, god-stack-selector, god-repo-scaffolder, god-planner, god-executor, god-spec-reviewer, god-quality-reviewer, god-deploy-engineer, god-observability-engineer, god-harden-auditor, god-launch-strategist]
20
+ - .godpowers/preflight/PREFLIGHT.md
21
+ secondary-spawns: [god-auditor, god-pm, god-designer, god-architect, god-roadmapper, god-stack-selector, god-repo-scaffolder, god-planner, god-executor, god-spec-reviewer, god-quality-reviewer, god-deploy-engineer, god-observability-engineer, god-harden-auditor, god-launch-strategist]
21
22
  writes:
22
23
  []
23
24
 
@@ -0,0 +1,36 @@
1
+ apiVersion: godpowers/v1
2
+ kind: CommandRouting
3
+ metadata:
4
+ command: /god-preflight
5
+ description: Read-only intake audit before arc-ready and pillars
6
+ tier: 0
7
+
8
+ prerequisites:
9
+ required:
10
+ - check: codebase-present
11
+ human-required: true
12
+
13
+ execution:
14
+ spawns: [god-auditor]
15
+ context: fresh
16
+ writes:
17
+ - .godpowers/preflight/PREFLIGHT.md
18
+
19
+ success-path:
20
+ next-recommended: /god-archaeology
21
+ alternatives:
22
+ - command: /god-init
23
+ when: missing-basic-project-state
24
+ - command: /god-reconstruct
25
+ when: planning-artifacts-missing
26
+ - command: /god-tech-debt
27
+ when: debt-dominates-risk
28
+ - command: /god-audit
29
+ when: artifacts-exist
30
+
31
+ failure-path:
32
+ on-error: /god-doctor
33
+
34
+ endoff:
35
+ state-update: preflight completed
36
+ events: [agent.start, artifact.created, agent.end]
@@ -19,6 +19,8 @@ sequences:
19
19
  steps:
20
20
  - command: "/god-org-context init"
21
21
  why: "Capture org-level standards and constraints"
22
+ - command: "/god-preflight"
23
+ why: "Inspect inherited context before arc-ready and pillars"
22
24
  - command: "/god-init"
23
25
  why: "Detect bluefield mode"
24
26
  - command: "/god-mode --bluefield"
@@ -3,7 +3,7 @@ kind: Recipe
3
3
  metadata:
4
4
  name: brownfield-onboarding
5
5
  category: starting
6
- description: "Inheriting an existing codebase; archaeology + reconstruction first"
6
+ description: "Inheriting an existing codebase; preflight before archaeology"
7
7
 
8
8
  triggers:
9
9
  intent-keywords:
@@ -16,8 +16,10 @@ triggers:
16
16
 
17
17
  sequences:
18
18
  default:
19
- description: "Inheriting an existing codebase; archaeology + reconstruction first"
19
+ description: "Inheriting an existing codebase; preflight before archaeology"
20
20
  steps:
21
+ - command: "/god-preflight"
22
+ why: "Read-only intake audit before arc-ready and pillars"
21
23
  - command: "/god-archaeology"
22
24
  why: "Deep history, decisions, conventions, risks"
23
25
  - command: "/god-reconstruct"