@wemuda/launchrail 1.12.0 → 1.14.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 (47) hide show
  1. package/README.md +3 -1
  2. package/assets/agents-docs/domain.md +2 -2
  3. package/assets/agents-docs/issue-tracker-github.md +1 -1
  4. package/assets/agents-docs/issue-tracker-linear.md +1 -1
  5. package/assets/ralph.workflow.js +640 -273
  6. package/assets/skills/NOTICE.md +4 -0
  7. package/assets/skills/launchrail/launch/SKILL.md +9 -7
  8. package/assets/skills/launchrail/launch/workflow.md +57 -4
  9. package/assets/skills/launchrail/launch-code-review/SKILL.md +1 -1
  10. package/assets/skills/launchrail/launch-design-handoff/SKILL.md +3 -2
  11. package/assets/skills/launchrail/launch-design-validation/SKILL.md +3 -3
  12. package/assets/skills/launchrail/launch-discovery/SKILL.md +3 -3
  13. package/assets/skills/launchrail/launch-grill/SKILL.md +51 -15
  14. package/assets/skills/launchrail/launch-grill/domain-modeling.md +3 -1
  15. package/assets/skills/launchrail/launch-implement/SKILL.md +10 -10
  16. package/assets/skills/launchrail/launch-project-alignment/SKILL.md +3 -3
  17. package/assets/skills/launchrail/launch-ralph/SKILL.md +79 -59
  18. package/assets/skills/launchrail/launch-ralph-implement/SKILL.md +8 -7
  19. package/assets/skills/launchrail/launch-resolving-merge-conflicts/SKILL.md +1 -1
  20. package/assets/skills/launchrail/launch-spec/SKILL.md +8 -6
  21. package/assets/skills/launchrail/launch-tickets/SKILL.md +10 -7
  22. package/assets/skills/launchrail/launch-vision-creation/SKILL.md +2 -2
  23. package/assets/skills/launchrail/launch-wayfinder/SKILL.md +15 -9
  24. package/dist/commands/add.js +2 -1
  25. package/dist/commands/add.js.map +1 -1
  26. package/dist/commands/doctor.js +29 -0
  27. package/dist/commands/doctor.js.map +1 -1
  28. package/dist/commands/init.js +2 -1
  29. package/dist/commands/init.js.map +1 -1
  30. package/dist/commands/verify.d.ts +11 -2
  31. package/dist/commands/verify.js +22 -7
  32. package/dist/commands/verify.js.map +1 -1
  33. package/dist/index.js +4 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/lib/adr.d.ts +27 -0
  36. package/dist/lib/adr.js +87 -0
  37. package/dist/lib/adr.js.map +1 -0
  38. package/dist/lib/manifest.d.ts +7 -1
  39. package/dist/lib/manifest.js +8 -1
  40. package/dist/lib/manifest.js.map +1 -1
  41. package/dist/lib/project.d.ts +2 -0
  42. package/dist/lib/project.js +2 -1
  43. package/dist/lib/project.js.map +1 -1
  44. package/dist/lib/seeds.d.ts +2 -0
  45. package/dist/lib/seeds.js +14 -6
  46. package/dist/lib/seeds.js.map +1 -1
  47. package/package.json +1 -1
package/dist/lib/seeds.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { ADR_REGISTRY_PATH, adrRegistryContent, scanAdrs } from "./adr.js";
1
2
  function agentsMd(ctx) {
2
3
  const { manifest } = ctx;
3
4
  const commands = manifest.testing.unitCommand
@@ -26,7 +27,7 @@ TODO: One paragraph on what this project is, who it serves, and what it is not.
26
27
  ## Canonical context
27
28
 
28
29
  1. [docs/vision.md](docs/vision.md) — product vision and non-goals
29
- 2. [docs/adr/](docs/adr/) — accepted architecture decisions
30
+ 2. [docs/adr/README.md](docs/adr/README.md) — the decision registry: read its index first, then only the ADRs touching your area
30
31
  3. ${specPointer}
31
32
 
32
33
  ## Commands
@@ -38,7 +39,7 @@ ${commitSection}
38
39
  - Ask, don't guess. On product decisions, data-model or schema changes, security-relevant behaviour, or anything genuinely ambiguous, stop and ask rather than guessing — a wrong guess on these costs more than the question.
39
40
  - Do not silently change scope; surface deviations from the spec or ADRs.
40
41
  - If implementation invalidates an artifact (vision, spec, ADR, design note), update that artifact in the same change.
41
- - Meaningful decisions become lightweight ADRs in \`docs/adr/\` using [docs/adr/0000-template.md](docs/adr/0000-template.md).
42
+ - Decisions that are hard to reverse, surprising without context, and the result of a real trade-off become lightweight ADRs in \`docs/adr/\` using [docs/adr/0000-template.md](docs/adr/0000-template.md), with a row added to the registry index in the same commit. Prefer amending the ADR that owns an area over minting a sibling; product decisions belong in the spec, not an ADR.
42
43
 
43
44
  ## Definition of done
44
45
 
@@ -75,9 +76,10 @@ function claudeGeneratedMd(ctx) {
75
76
  ## The Ralph loop
76
77
 
77
78
  - Implementation starts with \`/launch-implement\` — all ready tickets, or one with \`/launch-implement <ticket>\`. Multi-ticket runs execute as the \`ralph\` workflow (\`.claude/workflows/ralph.js\`), supervised per the \`launch-ralph\` skill; single tickets build in-session. Only ever started explicitly by the user.
78
- - Every run declares one integration target: by default a consolidation branch (named via the \`target\` workflow arg, it collects the campaign and ends by offering one release PR to the default branch, which stays untouched), or the default branch (trunk) as an explicit opt-in for per-ticket merges. The run's recap states where the work lives and the single next step.
79
+ - Every run declares one integration target: by default a consolidation branch (named via the \`target\` workflow arg, it collects the campaign and ends by offering one release PR to the default branch, which stays untouched), or the default branch (trunk) as an explicit opt-in. The loop lands each finished \`ralph/<n>-*\` branch itself — a local squash-merge onto the base under \`npx @wemuda/launchrail verify --fast\`, pushed — and runs the full \`npx @wemuda/launchrail verify\` every few lands and at release; no per-ticket PR, no CI wait — cloud CI runs once, on the offered release PR. The run's recap states where the work lives and the single next step.
80
+ - Implementers push their branch from the first commit on and after every green step; a relaunch adopts pushed branches (pass \`knownGreen: "<sha>"\` to skip re-proving a verified base). Name a quick lint/typecheck/unit gate as \`testing.checkCommand\` in \`.launchrail.yml\` to make every land cheaper (the fast gate falls back to the unit command).
79
81
  - Tickets enter the loop with the \`ready-for-agent\` label and explicit \`Blocked by: #n\` edges; parked tickets carry \`needs-info\` plus their failure history.
80
- - A ticket counts done only when its PR is merged on the remote, the issue is closed, and \`npx @wemuda/launchrail verify\` is green — agent reports are claims, not evidence.
82
+ - A ticket counts done only when its landing commit is on the remote base, the issue is closed, and the gates are green — agent reports are claims, not evidence.
81
83
  - \`.claude/workflows/ralph.js\` is managed by Launchrail: override policy per run via workflow args (e.g. \`{ width: 1 }\`), never by editing the file.
82
84
  - Launch unattended runs in a non-prompting permission mode (bypass/autonomous); a guard hook (\`.claude/hooks/ralph-permission-guard.py\`) warns if the \`ralph\` workflow starts in an interactive mode, since one benign prompt can stall a walk-away run and lose the container mid-ticket.
83
85
  `
@@ -86,8 +88,9 @@ function claudeGeneratedMd(ctx) {
86
88
 
87
89
  # Launchrail workflow instructions
88
90
 
89
- - This project follows the Launchrail development loop: vision → design exploration → discovery → grill/research → ADRs → spec → visual validation → tickets → bounded implementation → verification → release.
91
+ - This project follows the Launchrail rail — six phases: Intent → Exploration → Decisions → Blueprint → Build → Ship. Report position with the rail banner at every transition; the stage detail and the interaction contract live in \`.claude/skills/launch/workflow.md\`.
90
92
  - Product knowledge (vision, specs, ADRs, designs, tickets, code) is project-owned; Launchrail never overwrites it.
93
+ - Architecture decisions: read \`docs/adr/README.md\` — the registry index — first, and open only the ADRs touching your area. An ADR records a decision, not the current system; never take one as evidence that a component exists or still works as described — the code is the source of truth.
91
94
  - \`.launchrail.yml\` is project configuration; \`.launchrail-lock.json\` is machine-managed — do not hand-edit it.
92
95
  - The issue-tracker workflow (labels included) and the domain-doc consumer rules live in \`docs/agents/\` — seeded from \`.launchrail.yml\`, yours to edit.
93
96
  - Before claiming completion, run the project's deterministic checks. Completion requires evidence, not assertion.
@@ -98,7 +101,9 @@ function adrTemplate() {
98
101
  return `# ADR-NNNN: Short decision title
99
102
 
100
103
  ## Status
101
- Proposed | Accepted | Superseded by ADR-NNNN
104
+ Proposed | Accepted | Accepted — amended by ADR-NNNN | Superseded by ADR-NNNN
105
+
106
+ When a later ADR amends or supersedes this one, update this line and the registry index ([README.md](README.md)) in the same commit.
102
107
 
103
108
  ## Context
104
109
  What requirement or constraint requires a decision?
@@ -126,6 +131,9 @@ export function seedFiles(ctx) {
126
131
  { relPath: "AGENTS.md", content: agentsMd(ctx), ownership: "seeded" },
127
132
  { relPath: "CLAUDE.md", content: claudeMd(), ownership: "seeded" },
128
133
  { relPath: "docs/adr/0000-template.md", content: adrTemplate(), ownership: "seeded" },
134
+ // The registry (ADR-0031) makes the corpus navigable: agents read its index,
135
+ // not the whole directory. Adopting a repo with existing records prefills it.
136
+ { relPath: ADR_REGISTRY_PATH, content: adrRegistryContent(scanAdrs(ctx.cwd)), ownership: "seeded" },
129
137
  claudeGeneratedFile(ctx),
130
138
  ];
131
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../src/lib/seeds.ts"],"names":[],"mappings":"AASA,SAAS,QAAQ,CAAC,GAAgB;IAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW;QAC3C,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO;QACtD,CAAC,CAAC,qEAAqE,CAAC;IAE1E,4EAA4E;IAC5E,8DAA8D;IAC9D,MAAM,WAAW,GACf,QAAQ,CAAC,YAAY,KAAK,OAAO,IAAI,QAAQ,CAAC,YAAY,KAAK,MAAM;QACnE,CAAC,CAAC,sDAAsD;QACxD,CAAC,CAAC,4IAA4I,CAAC;IAEnJ,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,mBAAmB;QAC5D,CAAC,CAAC;;;;CAIL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,gCAAgC,GAAG,CAAC,WAAW;;;;;;;;;;;;KAYnD,WAAW;;;;EAId,QAAQ;EACR,aAAa;;;;;;;;;;;6BAWc,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE;;;;CAIxG,CAAC;AACF,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;;;;;;CAMR,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAgB;IACzC,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC5D,CAAC,CAAC;;;;;;;;CAQL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;QACtC,CAAC,CAAC;;;;;;;;;CASL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,+BAA+B,GAAG,CAAC,iBAAiB;;;;;;;;;;EAU3D,cAAc,GAAG,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;;;;CAmBR,CAAC;AACF,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IAClD,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC/G,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAC,GAAgB;IACxC,OAAO;QACL,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QAClE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrF,mBAAmB,CAAC,GAAG,CAAC;KACzB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../src/lib/seeds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAY3E,SAAS,QAAQ,CAAC,GAAgB;IAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW;QAC3C,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO;QACtD,CAAC,CAAC,qEAAqE,CAAC;IAE1E,4EAA4E;IAC5E,8DAA8D;IAC9D,MAAM,WAAW,GACf,QAAQ,CAAC,YAAY,KAAK,OAAO,IAAI,QAAQ,CAAC,YAAY,KAAK,MAAM;QACnE,CAAC,CAAC,sDAAsD;QACxD,CAAC,CAAC,4IAA4I,CAAC;IAEnJ,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,mBAAmB;QAC5D,CAAC,CAAC;;;;CAIL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,gCAAgC,GAAG,CAAC,WAAW;;;;;;;;;;;;KAYnD,WAAW;;;;EAId,QAAQ;EACR,aAAa;;;;;;;;;;;6BAWc,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE;;;;CAIxG,CAAC;AACF,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;;;;;;CAMR,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAgB;IACzC,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC5D,CAAC,CAAC;;;;;;;;CAQL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;QACtC,CAAC,CAAC;;;;;;;;;;CAUL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,+BAA+B,GAAG,CAAC,iBAAiB;;;;;;;;;;;EAW3D,cAAc,GAAG,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;;;;;;CAqBR,CAAC;AACF,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IAClD,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC/G,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAC,GAAgB;IACxC,OAAO;QACL,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QAClE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrF,6EAA6E;QAC7E,8EAA8E;QAC9E,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;QACnG,mBAAmB,CAAC,GAAG,CAAC;KACzB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wemuda/launchrail",
3
- "version": "1.12.0",
3
+ "version": "1.14.0",
4
4
  "description": "Launchrail — initialize, inspect, update, and validate repositories using the Launchrail development system.",
5
5
  "license": "MIT",
6
6
  "type": "module",