@wemuda/launchrail 1.16.0 → 1.18.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.
- package/README.md +3 -1
- package/assets/agents-docs/domain.md +1 -1
- package/assets/ralph.workflow.js +11 -11
- package/assets/skills/launchrail/launch/SKILL.md +3 -3
- package/assets/skills/launchrail/launch/workflow.md +4 -2
- package/assets/skills/launchrail/launch-browser-smoke/SKILL.md +1 -1
- package/assets/skills/launchrail/launch-design-handoff/SKILL.md +8 -7
- package/assets/skills/launchrail/launch-design-implement/SKILL.md +72 -0
- package/assets/skills/launchrail/launch-design-implement/fidelity.md +98 -0
- package/assets/skills/launchrail/launch-grill/domain-modeling.md +2 -2
- package/assets/skills/launchrail/launch-ralph/SKILL.md +6 -6
- package/assets/skills/launchrail/launch-ralph-implement/SKILL.md +3 -3
- package/dist/commands/adr.d.ts +18 -0
- package/dist/commands/adr.js +35 -0
- package/dist/commands/adr.js.map +1 -0
- package/dist/commands/doctor.js +19 -13
- package/dist/commands/doctor.js.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/adr.d.ts +77 -8
- package/dist/lib/adr.js +317 -41
- package/dist/lib/adr.js.map +1 -1
- package/dist/lib/migrations.js +51 -0
- package/dist/lib/migrations.js.map +1 -1
- package/dist/lib/seeds.js +5 -28
- package/dist/lib/seeds.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/seeds.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ADR_REGISTRY_PATH, adrRegistryContent, scanAdrs } from "./adr.js";
|
|
1
|
+
import { ADR_REGISTRY_PATH, ADR_TEMPLATE, adrRegistryContent, scanAdrs } from "./adr.js";
|
|
2
2
|
import { AGENTS_COMMANDS_TODO } from "./readiness.js";
|
|
3
3
|
function agentsMd(ctx) {
|
|
4
4
|
const { manifest } = ctx;
|
|
@@ -40,7 +40,7 @@ ${commitSection}
|
|
|
40
40
|
- 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.
|
|
41
41
|
- Do not silently change scope; surface deviations from the spec or ADRs.
|
|
42
42
|
- If implementation invalidates an artifact (vision, spec, ADR, design note), update that artifact in the same change.
|
|
43
|
-
- 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),
|
|
43
|
+
- 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), named \`YYYY-MM-DD-short-slug.md\` (the decision date, then a slug unique in the directory — no sequence number to claim), with the registry index regenerated (\`launchrail adr 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.
|
|
44
44
|
|
|
45
45
|
## Definition of done
|
|
46
46
|
|
|
@@ -77,7 +77,7 @@ function claudeGeneratedMd(ctx) {
|
|
|
77
77
|
## The Ralph loop
|
|
78
78
|
|
|
79
79
|
- 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.
|
|
80
|
-
- 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
|
|
80
|
+
- 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 merge onto the base (the branch's commits preserved) 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.
|
|
81
81
|
- 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).
|
|
82
82
|
- 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.
|
|
83
83
|
- 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.
|
|
@@ -93,36 +93,13 @@ function claudeGeneratedMd(ctx) {
|
|
|
93
93
|
- 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\`.
|
|
94
94
|
- Product knowledge (vision, specs, ADRs, designs, tickets, code) is project-owned; Launchrail never overwrites it.
|
|
95
95
|
- 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.
|
|
96
|
+
- Recording an ADR (the authoritative minting contract — the registry's own guidance summarizes this): copy [docs/adr/0000-template.md](docs/adr/0000-template.md) to \`docs/adr/YYYY-MM-DD-short-slug.md\` — the decision date, then a slug unique in the directory. There is **no sequence number to claim**, so parallel sessions never collide and nothing is renumbered; the slug is the record's handle in prose and links, and titles carry no \`ADR-NNNN:\` prefix. Declare what the record supersedes, amends, or extends in its own \`## Status\` line, linking the earlier record by file — the index derives the reverse links, so amending one never means editing it. Regenerate the index with \`launchrail adr index\` and commit it in the same change. Records that predate this scheme keep their \`NNNN-\` names and are cited by number.
|
|
96
97
|
- \`.launchrail.yml\` is project configuration; \`.launchrail-lock.json\` is machine-managed — do not hand-edit it.
|
|
97
98
|
- The issue-tracker workflow (labels included) and the domain-doc consumer rules live in \`docs/agents/\` — seeded from \`.launchrail.yml\`, yours to edit.
|
|
98
99
|
- Before claiming completion, run the project's deterministic checks. Completion requires evidence, not assertion.
|
|
99
100
|
- Run \`npx @wemuda/launchrail doctor\` when repository state seems inconsistent.
|
|
100
101
|
${browserTesting}${ralph}`;
|
|
101
102
|
}
|
|
102
|
-
function adrTemplate() {
|
|
103
|
-
return `# ADR-NNNN: Short decision title
|
|
104
|
-
|
|
105
|
-
## Status
|
|
106
|
-
Proposed | Accepted | Accepted — amended by ADR-NNNN | Superseded by ADR-NNNN
|
|
107
|
-
|
|
108
|
-
When a later ADR amends or supersedes this one, update this line and the registry index ([README.md](README.md)) in the same commit.
|
|
109
|
-
|
|
110
|
-
## Context
|
|
111
|
-
What requirement or constraint requires a decision?
|
|
112
|
-
|
|
113
|
-
## Decision
|
|
114
|
-
What was selected?
|
|
115
|
-
|
|
116
|
-
## Alternatives considered
|
|
117
|
-
What realistic alternatives were rejected?
|
|
118
|
-
|
|
119
|
-
## Consequences
|
|
120
|
-
What becomes easier, harder, or constrained?
|
|
121
|
-
|
|
122
|
-
## Revisit when
|
|
123
|
-
What change would justify reconsidering this decision?
|
|
124
|
-
`;
|
|
125
|
-
}
|
|
126
103
|
/** The managed Claude instructions file — regenerated whenever module configuration changes. */
|
|
127
104
|
export function claudeGeneratedFile(ctx) {
|
|
128
105
|
return { relPath: ".launchrail/CLAUDE.generated.md", content: claudeGeneratedMd(ctx), ownership: "managed" };
|
|
@@ -132,7 +109,7 @@ export function seedFiles(ctx) {
|
|
|
132
109
|
return [
|
|
133
110
|
{ relPath: "AGENTS.md", content: agentsMd(ctx), ownership: "seeded" },
|
|
134
111
|
{ relPath: "CLAUDE.md", content: claudeMd(), ownership: "seeded" },
|
|
135
|
-
{ relPath: "docs/adr/0000-template.md", content:
|
|
112
|
+
{ relPath: "docs/adr/0000-template.md", content: ADR_TEMPLATE, ownership: "seeded" },
|
|
136
113
|
// The registry (ADR-0031) makes the corpus navigable: agents read its index,
|
|
137
114
|
// not the whole directory. Adopting a repo with existing records prefills it.
|
|
138
115
|
{ relPath: ADR_REGISTRY_PATH, content: adrRegistryContent(scanAdrs(ctx.cwd)), ownership: "seeded" },
|
package/dist/lib/seeds.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../src/lib/seeds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAWtD,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,GAAG,oBAAoB,0BAA0B,CAAC;IAEtD,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;;;;;;;;;;;CAWL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,+BAA+B,GAAG,CAAC,iBAAiB;;;;;;;;;;;;EAY3D,cAAc,GAAG,KAAK,EAAE,CAAC;AAC3B,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,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE;QACpF,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