shipwright-cli 2.1.2 → 2.2.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 (129) hide show
  1. package/.claude/agents/devops-engineer.md +14 -12
  2. package/.claude/agents/doc-fleet-agent.md +99 -0
  3. package/.claude/agents/test-specialist.md +5 -3
  4. package/README.md +48 -27
  5. package/claude-code/CLAUDE.md.shipwright +2 -2
  6. package/config/policy.json +73 -0
  7. package/config/policy.schema.json +75 -0
  8. package/docs/AGI-PLATFORM-PLAN.md +122 -0
  9. package/docs/AGI-WHATS-NEXT.md +69 -0
  10. package/docs/KNOWN-ISSUES.md +1 -23
  11. package/docs/PLATFORM-TODO-BACKLOG.md +41 -0
  12. package/docs/PLATFORM-TODO-TRIAGE.md +56 -0
  13. package/docs/README.md +83 -0
  14. package/docs/TIPS.md +39 -2
  15. package/docs/config-policy.md +40 -0
  16. package/docs/definition-of-done.example.md +2 -0
  17. package/docs/patterns/README.md +5 -0
  18. package/docs/strategy/02-mission-and-brand.md +3 -3
  19. package/docs/strategy/README.md +4 -3
  20. package/docs/tmux-research/TMUX-AUDIT.md +2 -0
  21. package/docs/tmux-research/TMUX-RESEARCH-INDEX.md +17 -0
  22. package/package.json +3 -2
  23. package/scripts/lib/daemon-health.sh +32 -0
  24. package/scripts/lib/pipeline-quality.sh +23 -0
  25. package/scripts/lib/policy.sh +32 -0
  26. package/scripts/sw +5 -1
  27. package/scripts/sw-activity.sh +35 -46
  28. package/scripts/sw-adaptive.sh +30 -39
  29. package/scripts/sw-adversarial.sh +30 -36
  30. package/scripts/sw-architecture-enforcer.sh +30 -33
  31. package/scripts/sw-auth.sh +30 -42
  32. package/scripts/sw-autonomous.sh +60 -40
  33. package/scripts/sw-changelog.sh +29 -30
  34. package/scripts/sw-checkpoint.sh +30 -18
  35. package/scripts/sw-ci.sh +30 -42
  36. package/scripts/sw-cleanup.sh +32 -15
  37. package/scripts/sw-code-review.sh +26 -32
  38. package/scripts/sw-connect.sh +30 -19
  39. package/scripts/sw-context.sh +30 -19
  40. package/scripts/sw-cost.sh +30 -40
  41. package/scripts/sw-daemon.sh +66 -36
  42. package/scripts/sw-dashboard.sh +31 -40
  43. package/scripts/sw-db.sh +30 -20
  44. package/scripts/sw-decompose.sh +30 -38
  45. package/scripts/sw-deps.sh +30 -41
  46. package/scripts/sw-developer-simulation.sh +30 -36
  47. package/scripts/sw-discovery.sh +36 -19
  48. package/scripts/sw-doc-fleet.sh +822 -0
  49. package/scripts/sw-docs-agent.sh +30 -36
  50. package/scripts/sw-docs.sh +29 -31
  51. package/scripts/sw-doctor.sh +52 -20
  52. package/scripts/sw-dora.sh +29 -34
  53. package/scripts/sw-durable.sh +30 -20
  54. package/scripts/sw-e2e-orchestrator.sh +36 -21
  55. package/scripts/sw-eventbus.sh +30 -17
  56. package/scripts/sw-feedback.sh +30 -41
  57. package/scripts/sw-fix.sh +30 -40
  58. package/scripts/sw-fleet-discover.sh +30 -41
  59. package/scripts/sw-fleet-viz.sh +30 -20
  60. package/scripts/sw-fleet.sh +30 -40
  61. package/scripts/sw-github-app.sh +30 -41
  62. package/scripts/sw-github-checks.sh +30 -41
  63. package/scripts/sw-github-deploy.sh +30 -41
  64. package/scripts/sw-github-graphql.sh +30 -38
  65. package/scripts/sw-guild.sh +30 -37
  66. package/scripts/sw-heartbeat.sh +30 -19
  67. package/scripts/sw-hygiene.sh +134 -42
  68. package/scripts/sw-incident.sh +30 -39
  69. package/scripts/sw-init.sh +31 -14
  70. package/scripts/sw-instrument.sh +30 -41
  71. package/scripts/sw-intelligence.sh +39 -44
  72. package/scripts/sw-jira.sh +31 -41
  73. package/scripts/sw-launchd.sh +30 -17
  74. package/scripts/sw-linear.sh +31 -41
  75. package/scripts/sw-logs.sh +32 -17
  76. package/scripts/sw-loop.sh +32 -19
  77. package/scripts/sw-memory.sh +32 -43
  78. package/scripts/sw-mission-control.sh +31 -40
  79. package/scripts/sw-model-router.sh +30 -20
  80. package/scripts/sw-otel.sh +30 -20
  81. package/scripts/sw-oversight.sh +30 -36
  82. package/scripts/sw-patrol-meta.sh +31 -0
  83. package/scripts/sw-pipeline-composer.sh +30 -39
  84. package/scripts/sw-pipeline-vitals.sh +30 -44
  85. package/scripts/sw-pipeline.sh +275 -6388
  86. package/scripts/sw-pm.sh +31 -41
  87. package/scripts/sw-pr-lifecycle.sh +30 -42
  88. package/scripts/sw-predictive.sh +32 -34
  89. package/scripts/sw-prep.sh +30 -19
  90. package/scripts/sw-ps.sh +32 -17
  91. package/scripts/sw-public-dashboard.sh +30 -40
  92. package/scripts/sw-quality.sh +42 -40
  93. package/scripts/sw-reaper.sh +32 -15
  94. package/scripts/sw-recruit.sh +428 -48
  95. package/scripts/sw-regression.sh +30 -38
  96. package/scripts/sw-release-manager.sh +30 -38
  97. package/scripts/sw-release.sh +29 -31
  98. package/scripts/sw-remote.sh +31 -40
  99. package/scripts/sw-replay.sh +30 -18
  100. package/scripts/sw-retro.sh +33 -42
  101. package/scripts/sw-scale.sh +41 -24
  102. package/scripts/sw-security-audit.sh +30 -20
  103. package/scripts/sw-self-optimize.sh +33 -37
  104. package/scripts/sw-session.sh +31 -15
  105. package/scripts/sw-setup.sh +30 -16
  106. package/scripts/sw-standup.sh +30 -20
  107. package/scripts/sw-status.sh +33 -13
  108. package/scripts/sw-strategic.sh +55 -43
  109. package/scripts/sw-stream.sh +33 -37
  110. package/scripts/sw-swarm.sh +30 -21
  111. package/scripts/sw-team-stages.sh +30 -38
  112. package/scripts/sw-templates.sh +31 -16
  113. package/scripts/sw-testgen.sh +30 -31
  114. package/scripts/sw-tmux-pipeline.sh +29 -31
  115. package/scripts/sw-tmux-role-color.sh +31 -0
  116. package/scripts/sw-tmux-status.sh +31 -0
  117. package/scripts/sw-tmux.sh +31 -15
  118. package/scripts/sw-trace.sh +30 -19
  119. package/scripts/sw-tracker-github.sh +31 -0
  120. package/scripts/sw-tracker-jira.sh +31 -0
  121. package/scripts/sw-tracker-linear.sh +31 -0
  122. package/scripts/sw-tracker.sh +30 -40
  123. package/scripts/sw-triage.sh +68 -61
  124. package/scripts/sw-upgrade.sh +30 -16
  125. package/scripts/sw-ux.sh +30 -35
  126. package/scripts/sw-webhook.sh +30 -25
  127. package/scripts/sw-widgets.sh +30 -19
  128. package/scripts/sw-worktree.sh +32 -15
  129. package/tmux/templates/doc-fleet.json +43 -0
@@ -6,18 +6,20 @@ You are a DevOps and CI/CD specialist for the Shipwright project. You work on Gi
6
6
 
7
7
  Workflows live in `.github/workflows/` with the `shipwright-*.yml` naming prefix:
8
8
 
9
- | Workflow | Purpose |
10
- | --------------------------- | ----------------------------- |
11
- | `shipwright-release.yml` | Release automation |
12
- | `shipwright-auto-label.yml` | Issue/PR auto-labeling |
13
- | `shipwright-auto-retry.yml` | Failed pipeline auto-retry |
14
- | `shipwright-health.yml` | Health check monitoring |
15
- | `shipwright-patrol.yml` | Security patrol scans |
16
- | `shipwright-pipeline.yml` | CI pipeline trigger |
17
- | `shipwright-sweep.yml` | Stale resource cleanup |
18
- | `shipwright-watchdog.yml` | Process watchdog |
19
- | `shipwright-test.yml` | Test suite runner |
20
- | `shipwright-website.yml` | Documentation site deployment |
9
+ | Workflow | Purpose |
10
+ | -------------------------------- | ------------------------------- |
11
+ | `shipwright-release.yml` | Release automation |
12
+ | `shipwright-auto-label.yml` | Issue/PR auto-labeling |
13
+ | `shipwright-auto-retry.yml` | Failed pipeline auto-retry |
14
+ | `shipwright-health.yml` | Health check monitoring |
15
+ | `shipwright-platform-health.yml` | Platform health monitoring |
16
+ | `shipwright-docs.yml` | Docs sync (AUTO sections, wiki) |
17
+ | `shipwright-patrol.yml` | Security patrol scans |
18
+ | `shipwright-pipeline.yml` | CI pipeline trigger |
19
+ | `shipwright-sweep.yml` | Stale resource cleanup |
20
+ | `shipwright-watchdog.yml` | Process watchdog |
21
+ | `shipwright-test.yml` | Test suite runner |
22
+ | `shipwright-website.yml` | Documentation site deployment |
21
23
 
22
24
  ## GitHub CLI Patterns
23
25
 
@@ -0,0 +1,99 @@
1
+ # Documentation Fleet Agent
2
+
3
+ You are a specialized agent in the Shipwright documentation fleet. The fleet orchestrates multiple agents, each with a focused documentation role. Your specific role is assigned at spawn time.
4
+
5
+ ## Fleet Roles
6
+
7
+ ### 1. Doc Architect (leader)
8
+
9
+ You own the **documentation structure and information architecture**. Your job:
10
+
11
+ - Audit the full docs tree: `docs/`, `.claude/`, `README.md`, `STRATEGY.md`, `CHANGELOG*.md`
12
+ - Identify duplicate content, orphan pages, missing cross-links, and structural gaps
13
+ - Propose a coherent information hierarchy with clear navigation paths
14
+ - Ensure every doc has a clear audience (contributor, user, operator, agent)
15
+ - Create/update index files (`docs/README.md`, `docs/strategy/README.md`, etc.)
16
+ - Maintain a docs manifest in `.claude/pipeline-artifacts/docs-manifest.json`
17
+
18
+ ### 2. Claude MD Specialist
19
+
20
+ You own **all CLAUDE.md files and agent role definitions**. Your job:
21
+
22
+ - Audit `.claude/CLAUDE.md` for accuracy, completeness, and freshness
23
+ - Ensure AUTO sections are current (cross-reference with actual script files)
24
+ - Audit `.claude/agents/*.md` role definitions — are they accurate? complete?
25
+ - Audit `claude-code/CLAUDE.md.shipwright` template for downstream repos
26
+ - Remove stale content, update command tables, fix broken references
27
+ - Ensure development guidelines match actual codebase conventions
28
+ - Keep the CLAUDE.md focused and scannable — no bloat
29
+
30
+ ### 3. Strategy & Plans Curator
31
+
32
+ You own **strategic documentation and planning artifacts**. Your job:
33
+
34
+ - Audit `STRATEGY.md` — are priorities still current? are metrics up to date?
35
+ - Audit `docs/AGI-PLATFORM-PLAN.md` — completed items should be marked done
36
+ - Audit `docs/AGI-WHATS-NEXT.md` — remove completed gaps, add new ones
37
+ - Audit `docs/PLATFORM-TODO-BACKLOG.md` — triage and prioritize
38
+ - Audit `docs/strategy/` directory — market research, brand, GTM freshness
39
+ - Cross-reference strategy docs with actual shipped features
40
+ - Remove aspirational content that's now reality; add new aspirations
41
+
42
+ ### 4. Pattern & Guide Writer
43
+
44
+ You own **developer-facing guides and patterns**. Your job:
45
+
46
+ - Audit `docs/patterns/` — are all wave patterns still accurate?
47
+ - Audit `docs/TIPS.md` — add new tips from recent development
48
+ - Audit `docs/KNOWN-ISSUES.md` — resolved issues should be removed
49
+ - Audit `docs/config-policy.md` — does it match `config/policy.json` schema?
50
+ - Audit `docs/definition-of-done.example.md` vs `.claude/DEFINITION-OF-DONE.md`
51
+ - Create any missing how-to guides (e.g., "How to add a new agent")
52
+ - Ensure tmux docs in `docs/tmux-research/` are current
53
+
54
+ ### 5. README & Onboarding Optimizer
55
+
56
+ You own the **public-facing documentation and first-impression experience**. Your job:
57
+
58
+ - Audit `README.md` — is it accurate, compelling, and up-to-date?
59
+ - Verify all command tables match actual CLI behavior (test with `sw <cmd> help`)
60
+ - Ensure install instructions work on a fresh machine
61
+ - Audit the "Quick Start" flow — does it actually work?
62
+ - Check that badge URLs, links, and examples are valid
63
+ - Optimize for scannability: TOC, headers, tables over prose
64
+ - Audit `.github/pull_request_template.md` for completeness
65
+
66
+ ## Rules for All Roles
67
+
68
+ ### DO
69
+
70
+ - Read before writing — always verify current state before making changes
71
+ - Preserve existing AUTO section markers — they power the docs sync system
72
+ - Use tables for reference content, prose for concepts
73
+ - Cross-link between documents using relative paths
74
+ - Commit after each meaningful change with descriptive messages
75
+ - Verify links point to files that actually exist
76
+ - Keep line lengths reasonable (< 120 chars for prose)
77
+
78
+ ### DON'T
79
+
80
+ - Don't create documentation for features that don't exist yet
81
+ - Don't duplicate content across files — link instead
82
+ - Don't remove AUTO section markers (they're used by `sw docs sync`)
83
+ - Don't change the structure of `.claude/CLAUDE.md` without good reason — many tools parse it
84
+ - Don't add aspirational/marketing language to technical docs
85
+ - Don't introduce emoji in technical documentation
86
+ - Don't create new files when updating existing ones would suffice
87
+
88
+ ### Shell Standards (if editing scripts or examples)
89
+
90
+ - Bash 3.2 compatible
91
+ - `set -euo pipefail` at the top
92
+ - Atomic file writes: tmp + `mv`
93
+ - JSON via `jq --arg`, never string interpolation
94
+
95
+ ## Completion
96
+
97
+ - Output `LOOP_COMPLETE` when your assigned documentation scope is fully audited and updated
98
+ - List what you changed, what you removed, and what you recommend for follow-up
99
+ - Do not mark complete if you found issues you couldn't resolve — document them instead
@@ -1,6 +1,6 @@
1
1
  # Test Specialist
2
2
 
3
- You are a test development specialist for the Shipwright project. The project has 20 test suites with 320+ individual tests, all written in Bash following a consistent harness pattern.
3
+ You are a test development specialist for the Shipwright project. The project has 90+ test suites (see `package.json` scripts.test and the AUTO:test-suites table in `.claude/CLAUDE.md`), all written in Bash following a consistent harness pattern.
4
4
 
5
5
  ## Test Harness Conventions
6
6
 
@@ -160,9 +160,11 @@ echo "================================"
160
160
  - **Deterministic**: tests must produce the same results on every run
161
161
  - **Fast**: individual test functions should complete in under 5 seconds
162
162
 
163
- ## Current Test Suites (20)
163
+ ## Current Test Suites
164
164
 
165
- | Suite | Tests | Source Under Test |
165
+ See the AUTO:test-suites table in `.claude/CLAUDE.md` for the full list (90+ suites). Representative suites:
166
+
167
+ | Suite | Source Under Test |
166
168
  | ---------------------------- | ----------------------- | ------------------------------------- |
167
169
  | sw-pipeline-test.sh | Pipeline flow | sw-pipeline.sh |
168
170
  | sw-daemon-test.sh | Daemon lifecycle | sw-daemon.sh |
package/README.md CHANGED
@@ -12,35 +12,55 @@
12
12
  <p align="center">
13
13
  <a href="https://github.com/sethdford/shipwright/actions/workflows/test.yml"><img src="https://github.com/sethdford/shipwright/actions/workflows/test.yml/badge.svg" alt="Tests"></a>
14
14
  <a href="https://github.com/sethdford/shipwright/actions/workflows/shipwright-pipeline.yml"><img src="https://github.com/sethdford/shipwright/actions/workflows/shipwright-pipeline.yml/badge.svg" alt="Pipeline"></a>
15
- <img src="https://img.shields.io/badge/tests-500%2B_passing-4ade80?style=flat-square" alt="500+ tests">
16
- <img src="https://img.shields.io/badge/version-2.1.0-00d4ff?style=flat-square" alt="v2.1.0">
15
+ <img src="https://img.shields.io/badge/tests-99_suites_passing-4ade80?style=flat-square" alt="99 suites">
16
+ <img src="https://img.shields.io/badge/version-2.1.2-00d4ff?style=flat-square" alt="v2.1.2">
17
17
  <img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="MIT License">
18
18
  <img src="https://img.shields.io/badge/bash-3.2%2B-7c3aed?style=flat-square" alt="Bash 3.2+">
19
19
  </p>
20
20
 
21
21
  ---
22
22
 
23
+ ## Table of Contents
24
+
25
+ - [Shipwright Builds Itself](#shipwright-builds-itself)
26
+ - [What's New in v2.1.2](#whats-new-in-v212)
27
+ - [How It Works](#how-it-works)
28
+ - [Install](#install)
29
+ - [Quick Start](#quick-start)
30
+ - [Features](#features)
31
+ - [Commands](#commands)
32
+ - [Pipeline Templates for Teams](#pipeline-templates-for-teams)
33
+ - [Configuration](#configuration)
34
+ - [Prerequisites](#prerequisites)
35
+ - [Architecture](#architecture)
36
+ - [Contributing](#contributing)
37
+ - [License](#license)
38
+
39
+ ---
40
+
23
41
  ## Shipwright Builds Itself
24
42
 
25
43
  This repo uses Shipwright to process its own issues. Label a GitHub issue with `shipwright` and the autonomous pipeline takes over: semantic triage, plan, design, build, test, review, quality gates, PR. No human in the loop.
26
44
 
27
- **[See it live](../../actions/workflows/shipwright-pipeline.yml)** | **[Create an issue](../../issues/new?template=shipwright.yml)** and watch it build.
45
+ **[See it live](https://github.com/sethdford/shipwright/actions/workflows/shipwright-pipeline.yml)** | **[Create an issue](https://github.com/sethdford/shipwright/issues/new?template=shipwright.yml)** and watch it build.
28
46
 
29
47
  ---
30
48
 
31
- ## What's New in v2.1.0
49
+ ## What's New in v2.1.2
50
+
51
+ **AGI-Level Agent Recruitment** — dynamic role creation, LLM-powered matching, closed-loop learning:
32
52
 
33
- **tmux visual overhaul** — role-colored borders, pipeline status widgets, and active pane depth:
53
+ - **`recruit match`**AI/heuristic task→role matching with `--json` output for pipeline integration
54
+ - **`recruit team`** — Context-aware team composition with cost estimation
55
+ - **`recruit route`** — Smart routing based on agent performance history
56
+ - **Cross-system integration** — Pipeline, PM, triage, loop, and swarm all use recruit for model/role selection
57
+ - **Self-tuning heuristics** — System learns keyword→role mappings from successful outcomes
58
+ - **Meta-learning** — Accuracy tracking and self-correction for matching decisions
59
+ - **CI auto-discovery** — All 99 test suites now run in CI (previously 26)
34
60
 
35
- - **Role-Colored Pane Borders**Border color reflects agent role (builder=blue, reviewer=orange, tester=yellow)
36
- - **Pipeline Stage Badge** — Live `⚙ BUILD` / `⚡ TEST` / `↑ PR` widget in status bar with stage-colored badges
37
- - **Active Pane Lift** — Subtle background depth effect between active and inactive panes
38
- - **Agent Count Widget** — `λN` heartbeat-based agent counter in status bar
39
- - **`shipwright init --repair`** — Force clean reinstall after OS upgrades
40
- - **Color Palette Overhaul** — Warm grays replace harsh near-white text across all tmux chrome
41
- - **7 tmux Bug Fixes** — Pane indexing, capture bindings, reload, clipboard, and more
61
+ **v2.1.0**: tmux visual overhaul role-colored borders, pipeline status widgets, active pane depth
42
62
 
43
- **v2.0.0 highlights**: 18 autonomous agents, 100+ CLI commands, intelligence layer, multi-repo fleet, local mode
63
+ **v2.0.0**: 18 autonomous agents, 100+ CLI commands, intelligence layer, multi-repo fleet, local mode
44
64
 
45
65
  ---
46
66
 
@@ -187,7 +207,7 @@ Each stage is configurable with quality gates that auto-proceed or pause for app
187
207
  | Template | Stages | Use Case |
188
208
  | ------------ | --------------------------------- | ------------------------- |
189
209
  | `fast` | intake → build → test → PR | Quick fixes, score >= 70 |
190
- | `standard` | + plan, review | Normal feature work |
210
+ | `standard` | + plan, design, review | Normal feature work |
191
211
  | `full` | All 12 stages | Production deployment |
192
212
  | `hotfix` | Minimal, all auto | Urgent production fixes |
193
213
  | `autonomous` | All stages, all auto | Daemon-driven delivery |
@@ -282,12 +302,12 @@ Instant issue processing via GitHub webhooks instead of polling. Register webhoo
282
302
  ### PR Lifecycle Automation
283
303
 
284
304
  ```bash
285
- shipwright pr auto-review
286
- shipwright pr merge
305
+ shipwright pr review <pr#>
306
+ shipwright pr merge <pr#>
287
307
  shipwright pr cleanup
288
308
  ```
289
309
 
290
- Fully automated PR management: auto-review based on predictive risk and coverage, intelligent auto-merge when gates pass, cleanup stale branches. Reduces manual PR overhead by 90%.
310
+ Fully automated PR management: review based on predictive risk and coverage, intelligent auto-merge when gates pass, cleanup stale branches. Reduces manual PR overhead by 90%.
291
311
 
292
312
  ### Fleet Auto-Discovery
293
313
 
@@ -304,10 +324,11 @@ ACID-safe state management replacing JSON files. Replaces volatile `.claude/pipe
304
324
  ### Issue Decomposition
305
325
 
306
326
  ```bash
307
- shipwright decompose --issue 42
327
+ shipwright decompose analyze 42
328
+ shipwright decompose decompose 42
308
329
  ```
309
330
 
310
- AI-powered issue analysis: auto-split complex features into manageable subtasks, create child issues with inherited labels/assignees, generate dependency graph for parallel execution.
331
+ AI-powered issue analysis: `analyze` scores complexity; `decompose` creates child issues with inherited labels/assignees and a dependency graph.
311
332
 
312
333
  ### Linux systemd Support
313
334
 
@@ -338,16 +359,16 @@ shipwright pipeline start --issue 42
338
359
  shipwright daemon start --detach
339
360
 
340
361
  # Agent teams
341
- shipwright swarm list
362
+ shipwright swarm status
342
363
  shipwright recruit --roles builder,tester
343
364
  shipwright standup
344
- shipwright guild members
365
+ shipwright guild list
345
366
 
346
367
  # Quality gates
347
368
  shipwright code-review
348
369
  shipwright security-audit
349
370
  shipwright testgen
350
- shipwright quality check
371
+ shipwright quality validate
351
372
 
352
373
  # Observability
353
374
  shipwright vitals
@@ -375,11 +396,11 @@ shipwright upgrade --apply
375
396
  shipwright --help
376
397
  ```
377
398
 
378
- See `.claude/CLAUDE.md` for the complete 100+ command reference organized by workflow.
399
+ See [.claude/CLAUDE.md](.claude/CLAUDE.md) for the complete 100+ command reference organized by workflow. Full documentation: [docs/](docs/).
379
400
 
380
401
  ## Pipeline Templates for Teams
381
402
 
382
- 24 team templates covering the full SDLC:
403
+ 25 team templates covering the full SDLC:
383
404
 
384
405
  ```bash
385
406
  shipwright templates list
@@ -411,7 +432,7 @@ shipwright templates list
411
432
 
412
433
  ## Architecture
413
434
 
414
- 95+ bash scripts (~100K lines), 27 test suites (500+ tests), plus a TypeScript dashboard server. Bash 3.2 compatible — runs on macOS and Linux out of the box.
435
+ 100+ bash scripts (~100K lines), 99 test suites (1000+ tests), plus a TypeScript dashboard server. Bash 3.2 compatible — runs on macOS and Linux out of the box.
415
436
 
416
437
  **Core Layers:**
417
438
 
@@ -477,12 +498,12 @@ Tools & UX
477
498
 
478
499
  ## Contributing
479
500
 
480
- **Let Shipwright build it:** Create an issue using the [Shipwright template](../../issues/new?template=shipwright.yml) and label it `shipwright`. The autonomous pipeline will triage, plan, build, test, review, and create a PR.
501
+ **Let Shipwright build it:** Create an issue using the [Shipwright template](https://github.com/sethdford/shipwright/issues/new?template=shipwright.yml) and label it `shipwright`. The autonomous pipeline will triage, plan, build, test, review, and create a PR.
481
502
 
482
503
  **Manual development:** Fork, branch, then:
483
504
 
484
505
  ```bash
485
- npm test # 450+ tests across 24 suites
506
+ npm test # 1000+ tests across 99 suites
486
507
  ```
487
508
 
488
509
  ## License
@@ -19,7 +19,7 @@ This project uses [Shipwright](https://github.com/sethdford/shipwright) for auto
19
19
  | `shipwright cost show` | Token usage and spending dashboard |
20
20
  | `shipwright cost budget set <amount>` | Set daily budget limit |
21
21
  | `shipwright cost remaining-budget` | Check remaining daily budget (used by auto-scaler) |
22
- | `shipwright memory list` | View captured failure patterns |
22
+ | `shipwright memory show` | View captured failure patterns |
23
23
  | `shipwright dashboard` | Real-time web dashboard (requires Bun) |
24
24
  | `shipwright dashboard start` | Start dashboard in background |
25
25
  | `shipwright heartbeat list` | Show agent heartbeat status |
@@ -170,7 +170,7 @@ Generate with `shipwright daemon init`, then edit `.claude/daemon-config.json`:
170
170
  | Command | Purpose |
171
171
  |---------|---------|
172
172
  | `shipwright pipeline resume` | Resume from last completed stage |
173
- | `shipwright memory show` | View captured failure patterns |
173
+ | `shipwright memory show` | View captured failure patterns |
174
174
  | `shipwright doctor` | Diagnose setup issues |
175
175
  | `shipwright status` | Check team and agent status |
176
176
  | `shipwright cleanup --force` | Kill orphaned sessions |
@@ -0,0 +1,73 @@
1
+ {
2
+ "$schema": "https://shipwright.dev/schemas/policy-v1.json",
3
+ "description": "Central policy for Shipwright — timeouts, limits, thresholds. Prefer adaptive/learned overrides when available.",
4
+ "version": "1",
5
+ "daemon": {
6
+ "poll_interval_seconds": 60,
7
+ "health_heartbeat_timeout": 120,
8
+ "stage_timeouts": {
9
+ "intake": 60,
10
+ "plan": 60,
11
+ "design": 60,
12
+ "lint": 60,
13
+ "format": 60,
14
+ "build": 300,
15
+ "test": 180,
16
+ "review": 180,
17
+ "compound_quality": 180
18
+ },
19
+ "auto_scale_interval_cycles": 5,
20
+ "optimize_interval_cycles": 10,
21
+ "stale_reaper_interval_cycles": 10,
22
+ "stale_timeout_multiplier": 2,
23
+ "stale_state_hours": 2
24
+ },
25
+ "pipeline": {
26
+ "max_iterations_default": 10,
27
+ "max_cycles_convergence_cap": 50,
28
+ "coverage_threshold_percent": 60,
29
+ "quality_gate_score_threshold": 70,
30
+ "memory_baseline_fallback_percent": 20,
31
+ "memory_inject_fallback_percent": 30
32
+ },
33
+ "quality": {
34
+ "coverage_threshold": 60,
35
+ "gate_score_threshold": 70,
36
+ "audit_weights": {
37
+ "test_pass": 30,
38
+ "coverage": 20,
39
+ "security": 20,
40
+ "architecture": 15,
41
+ "correctness": 15
42
+ }
43
+ },
44
+ "strategic": {
45
+ "max_issues_per_cycle": 5,
46
+ "cooldown_seconds": 14400,
47
+ "overlap_threshold_percent": 60,
48
+ "strategy_lines": 200
49
+ },
50
+ "sweep": {
51
+ "cron_minutes": 30,
52
+ "stuck_threshold_hours": 4,
53
+ "retry_template": "full",
54
+ "retry_max_iterations": 25,
55
+ "stuck_retry_max_iterations": 30
56
+ },
57
+ "hygiene": {
58
+ "artifact_age_days": 7
59
+ },
60
+ "recruit": {
61
+ "self_tune_min_matches": 5,
62
+ "self_tune_min_success_rate": 60,
63
+ "match_confidence_threshold": 0.3,
64
+ "max_match_history_size": 5000,
65
+ "max_profile_task_history": 50,
66
+ "meta_learning_accuracy_floor": 50,
67
+ "auto_evolve_after_outcomes": 20,
68
+ "llm_timeout_seconds": 30,
69
+ "default_model": "sonnet",
70
+ "promote_threshold_tasks": 10,
71
+ "promote_threshold_success_rate": 85
72
+ }
73
+ }
@@ -0,0 +1,75 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://shipwright.dev/schemas/policy-v1.json",
4
+ "title": "Shipwright Policy",
5
+ "description": "Central policy for Shipwright — timeouts, limits, thresholds.",
6
+ "type": "object",
7
+ "properties": {
8
+ "version": { "type": "string" },
9
+ "daemon": {
10
+ "type": "object",
11
+ "properties": {
12
+ "poll_interval_seconds": { "type": "integer", "minimum": 10 },
13
+ "health_heartbeat_timeout": { "type": "integer", "minimum": 60 },
14
+ "stage_timeouts": {
15
+ "type": "object",
16
+ "additionalProperties": { "type": "integer", "minimum": 0 }
17
+ },
18
+ "auto_scale_interval_cycles": { "type": "integer" },
19
+ "optimize_interval_cycles": { "type": "integer" },
20
+ "stale_reaper_interval_cycles": { "type": "integer" }
21
+ }
22
+ },
23
+ "pipeline": {
24
+ "type": "object",
25
+ "properties": {
26
+ "max_iterations_default": { "type": "integer" },
27
+ "coverage_threshold_percent": {
28
+ "type": "integer",
29
+ "minimum": 0,
30
+ "maximum": 100
31
+ },
32
+ "quality_gate_score_threshold": {
33
+ "type": "integer",
34
+ "minimum": 0,
35
+ "maximum": 100
36
+ },
37
+ "memory_baseline_fallback_percent": { "type": "integer" },
38
+ "memory_inject_fallback_percent": { "type": "integer" }
39
+ }
40
+ },
41
+ "quality": {
42
+ "type": "object",
43
+ "properties": {
44
+ "coverage_threshold": { "type": "integer" },
45
+ "gate_score_threshold": { "type": "integer" }
46
+ }
47
+ },
48
+ "strategic": {
49
+ "type": "object",
50
+ "properties": {
51
+ "max_issues_per_cycle": { "type": "integer" },
52
+ "cooldown_seconds": { "type": "integer" },
53
+ "overlap_threshold_percent": { "type": "integer" },
54
+ "strategy_lines": { "type": "integer" }
55
+ }
56
+ },
57
+ "sweep": {
58
+ "type": "object",
59
+ "properties": {
60
+ "cron_minutes": { "type": "integer" },
61
+ "stuck_threshold_hours": { "type": "integer" },
62
+ "retry_template": { "type": "string" },
63
+ "retry_max_iterations": { "type": "integer" },
64
+ "stuck_retry_max_iterations": { "type": "integer" }
65
+ }
66
+ },
67
+ "hygiene": {
68
+ "type": "object",
69
+ "properties": {
70
+ "artifact_age_days": { "type": "integer" }
71
+ }
72
+ }
73
+ },
74
+ "additionalProperties": true
75
+ }
@@ -0,0 +1,122 @@
1
+ # AGI-Level Platform Plan: Refactor, Refine, Remove, Redo
2
+
3
+ **Status:** Active
4
+ **Created:** 2026-02-16
5
+ **Goal:** Make Shipwright a fully autonomous product development team — reduce hardcoded/static policy, clean architecture, and let the platform improve itself.
6
+
7
+ ---
8
+
9
+ ## Success Criteria
10
+
11
+ - **Policy:** All tunables (timeouts, limits, thresholds) live in `config/policy.json` or env; scripts read via `policy_get` or jq. Zero new hardcoded magic numbers in core paths.
12
+ - **Monoliths:** `sw-pipeline.sh` and `sw-daemon.sh` decomposed into sourced modules (stages, health, poll loop); single-file line count < 2000 for core orchestration.
13
+ - **Helpers:** All scripts use `lib/helpers.sh` for colors/output/events (or a single other canonical source); no duplicated info/success/warn/error blocks.
14
+ - **Platform health:** `shipwright hygiene platform-refactor` counts trend down (hardcoded, fallback, TODO/FIXME/HACK); strategic agent routinely suggests platform refactor issues.
15
+ - **Continuous:** Hygiene + platform-refactor run in CI or weekly; strategic reads platform-hygiene and policy; AGI-level criterion is part of product thinking.
16
+
17
+ ---
18
+
19
+ ## Phase 1: Foundation (Policy + Helpers Adoption)
20
+
21
+ **Goal:** Policy and helpers are the default; at least two key scripts read from policy; plan is visible and tracked.
22
+
23
+ **Status:** Done. 1.1–1.3 done (strategic + hygiene read policy; plan linked from STRATEGY P6). 1.4 done — 4 scripts migrated to helpers (hygiene, doctor, pipeline, quality); batch migration continuing.
24
+
25
+ | # | Task | Owner | Acceptance |
26
+ | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | -------------------------------------------------------------------------------------------- |
27
+ | 1.1 | **Strategic reads policy** — In sw-strategic.sh, after constants block, source policy.sh and override STRATEGIC_MAX_ISSUES, COOLDOWN, STRATEGY_LINES, OVERLAP_THRESHOLD from policy when present. | Agent | strategic run uses config/policy.json values when file exists; fallback to current literals. |
28
+ | 1.2 | **Hygiene reads policy** — In sw-hygiene.sh, read artifact_age_days from policy (policy_get ".hygiene.artifact_age_days" 7) when policy.sh available. | Agent | hygiene --artifact-age default comes from policy when present. |
29
+ | 1.3 | **Document plan** — This doc (docs/AGI-PLATFORM-PLAN.md) is the single source of truth; link from STRATEGY.md P6. | Done | STRATEGY P6 references this plan. |
30
+ | 1.4 | **Helpers adoption** — Migrate 3–5 high-traffic scripts to source lib/helpers.sh instead of defining info/success/warn/error (e.g. sw-strategic, sw-hygiene, sw-quality). | Agent | No duplicate color/output blocks in those scripts; they source helpers. |
31
+
32
+ ---
33
+
34
+ ## Phase 2: Policy Migration (First Batch)
35
+
36
+ **Goal:** Daemon, pipeline, quality, and sweep read their key tunables from policy; hardcoded count drops.
37
+
38
+ **Status:** Done. 2.1–2.5 complete. Daemon (timeouts, intervals), pipeline (coverage/quality thresholds), quality (thresholds), sweep (workflow reads policy.json and exports env vars).
39
+
40
+ | # | Task | Owner | Acceptance |
41
+ | --- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------- |
42
+ | 2.1 | **Daemon timeouts** — In sw-daemon.sh, health heartbeat and stage timeouts read from policy_get when policy exists (else keep current defaults). | Agent | daemon_health_timeout_for_stage uses policy .daemon.stage_timeouts and .daemon.health_heartbeat_timeout. |
43
+ | 2.2 | **Daemon intervals** — POLL_INTERVAL, AUTO_SCALE_INTERVAL, OPTIMIZE_INTERVAL, STALE_REAPER_INTERVAL read from policy when present. | Agent | One place (policy) controls daemon timing. |
44
+ | 2.3 | **Pipeline thresholds** — Coverage and quality gate thresholds in pipeline read from policy (pipeline.coverage_threshold_percent, quality_gate_score_threshold, memory fallbacks). | Agent | Pipeline quality gate uses policy_get for thresholds when policy exists. |
45
+ | 2.4 | **Quality script** — sw-quality.sh reads coverage_threshold and gate_score_threshold from policy. | Agent | quality validate/gate use policy. |
46
+ | 2.5 | **Sweep (workflow)** — Document in plan that sweep workflow (shipwright-sweep.yml) uses hardcoded 4h/30min; add optional env or later step to read from policy (e.g. script that emits workflow inputs from policy). | Agent | Either sweep reads policy in a wrapper or doc states “sweep defaults documented in config/policy.json; override via env.” |
47
+
48
+ ---
49
+
50
+ ## Phase 3: Monolith Decomposition
51
+
52
+ **Goal:** Pipeline and daemon are split into sourced modules; no single file > 2000 lines for orchestration core.
53
+
54
+ **Status:** 3.2 and 3.4 done (pipeline-quality.sh and daemon-health.sh created, wired, and sourced). 3.1 and 3.3 (full stage/poll extraction) deferred — high risk, requires incremental approach.
55
+
56
+ | # | Task | Owner | Acceptance |
57
+ | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----- | --------------------------------------------------------------------- |
58
+ | 3.1 | **Pipeline stages lib** — Extract stage run logic (run_intake, run_plan, run_build, run_test, …) into scripts/lib/pipeline-stages.sh or scripts/lib/pipeline-stages/\*.sh; source from sw-pipeline.sh. | Agent | sw-pipeline.sh sources stages; line count drops; existing tests pass. |
59
+ | 3.2 | **Pipeline quality gate** — Extract quality gate and audit selection into scripts/lib/pipeline-quality.sh; source from sw-pipeline.sh. | Agent | Quality gate logic in one place; pipeline sources it. |
60
+ | 3.3 | **Daemon poll loop** — Extract daemon_poll_loop, daemon_poll_issues, daemon_reap_completed into scripts/lib/daemon-poll.sh; source from sw-daemon.sh. | Agent | Daemon sources daemon-poll; line count drops. |
61
+ | 3.4 | **Daemon health** — Extract health check and timeout logic into scripts/lib/daemon-health.sh. | Agent | Daemon sources daemon-health; tests pass. |
62
+
63
+ ---
64
+
65
+ ## Phase 4: Cleanup (TODO / FIXME / HACK / Dead Code)
66
+
67
+ **Goal:** Triage all TODO/FIXME/HACK; remove dead code; reduce fallback count.
68
+
69
+ **Status:** 4.1–4.2 done (PLATFORM-TODO-BACKLOG.md + file:line triage one-liner). 4.3–4.4 ongoing (run hygiene dead-code; reduce fallbacks over time).
70
+
71
+ | # | Task | Owner | Acceptance |
72
+ | --- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | -------------------------------------------------------- |
73
+ | 4.1 | **TODO/FIXME backlog** — Generate list (from platform-refactor findings); create GitHub issues for each or mark “accepted tech debt” in code; strategic can then suggest “Resolve TODO in X” as issues. | Agent | Every TODO/FIXME has an issue or comment; count tracked. |
74
+ | 4.2 | **HACK/KLUDGE** — Same as 4.1; replace or document. | Agent | HACK count explained or reduced. |
75
+ | 4.3 | **Dead code** — Run hygiene dead-code; remove or refactor unused functions/scripts. | Agent | Dead code count in hygiene report drops. |
76
+ | 4.4 | **Fallback reduction** — Where adaptive/learned data exists, remove duplicate hardcoded fallbacks so one code path wins (policy → adaptive → minimal default). | Agent | Fallback count in platform-refactor scan drops. |
77
+
78
+ ---
79
+
80
+ ## Phase 5: Continuous (CI + Strategic + Metrics)
81
+
82
+ **Goal:** Platform health is measured and improved continuously.
83
+
84
+ **Status:** 5.1 done (shipwright-platform-health.yml with threshold gate). 5.2 done (strategic reads platform-hygiene + AGI rule). 5.3 done (doctor shows platform health counts). 5.4 done (policy.schema.json + optional ajv in CI). Policy read test added to hygiene-test.
85
+
86
+ | # | Task | Owner | Acceptance |
87
+ | --- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | --------------------------------------------------------- |
88
+ | 5.1 | **Hygiene in CI** — Add a job (e.g. in shipwright-sweep or a new workflow) that runs `shipwright hygiene platform-refactor` and fails or warns if counts exceed thresholds (e.g. hardcoded > 100). | Agent | CI runs platform-refactor; optional gate. |
89
+ | 5.2 | **Strategic creates refactor issues** — Ensure strategic prompt and platform-hygiene input are used; run strategic periodically so it suggests platform refactor issues. | Done | Strategic already has platform health + AGI rule. |
90
+ | 5.3 | **Metrics dashboard** — Optional: add a small “platform health” section to dashboard or doctor showing platform-hygiene counts and trend. | Agent | Doctor or dashboard shows hardcoded/fallback/TODO counts. |
91
+ | 5.4 | **Policy schema** — Add JSON schema for config/policy.json and validate in CI or on load. | Agent | policy.json validated against schema. |
92
+
93
+ ---
94
+
95
+ ## Current Snapshot (from platform-refactor scan)
96
+
97
+ - **hardcoded:** 58 | **fallback:** 54 | **TODO:** 37 | **FIXME:** 19 | **HACK/KLUDGE:** 17
98
+ - **Largest scripts:** sw-pipeline.sh (8600+), sw-daemon.sh (6000+), sw-loop.sh (2400+), sw-recruit.sh (2200+), sw-prep.sh (1600+), sw-memory.sh (1600+).
99
+ - _Last scan: 2026-02-16. Re-scan after helpers migration to track delta._
100
+
101
+ ---
102
+
103
+ ## Sweep defaults (Phase 2.5)
104
+
105
+ Sweep workflow (`.github/workflows/shipwright-sweep.yml`) uses hardcoded values: stuck = 4h, cron every 30min, retry template = full, retry max_iterations = 25, stuck retry = 30. These are documented in **config/policy.json** under `sweep`. To override: set env in the workflow (e.g. `STUCK_THRESHOLD_HOURS`, `RETRY_MAX_ITERATIONS`) or add a wrapper step that reads policy and exports env for the dispatch step.
106
+
107
+ ## How to Use This Plan
108
+
109
+ 1. **Run platform-refactor:** `shipwright hygiene platform-refactor` to refresh `.claude/platform-hygiene.json`.
110
+ 2. **Run strategic:** `shipwright strategic run` to get AI-suggested issues (including platform refactor).
111
+ 3. **Execute phases in order:** Phase 1 → 2 → 3 → 4 → 5; mark tasks done in this doc or in issues.
112
+ 4. **Policy first:** Any new tunable goes in config/policy.json; scripts use policy_get or jq.
113
+
114
+ ---
115
+
116
+ ## References
117
+
118
+ - **STRATEGY.md** — P6 Platform Self-Improvement, Technical Principle 8 (AGI-level criterion).
119
+ - **config/policy.json** — Central policy schema.
120
+ - **docs/config-policy.md** — Policy usage and roadmap.
121
+ - **scripts/lib/policy.sh** — policy_get helper.
122
+ - **scripts/lib/helpers.sh** — Canonical colors and output helpers.