@wemuda/launchrail 1.16.0 → 1.17.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 +2 -1
- package/assets/agents-docs/domain.md +1 -1
- package/assets/skills/launchrail/launch/SKILL.md +1 -1
- package/assets/skills/launchrail/launch/workflow.md +1 -1
- package/assets/skills/launchrail/launch-grill/domain-modeling.md +2 -2
- 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 +18 -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 +46 -8
- package/dist/lib/adr.js +209 -37
- package/dist/lib/adr.js.map +1 -1
- package/dist/lib/seeds.js +4 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -76,6 +76,7 @@ npx @wemuda/launchrail doctor # repository and environment checks
|
|
|
76
76
|
npx @wemuda/launchrail verify # deterministic verification gate
|
|
77
77
|
npx @wemuda/launchrail dev --background # start the smokeable stack from the manifest; --check proves the contract
|
|
78
78
|
npx @wemuda/launchrail eject <module|file> # opt out of management (vendor mode: --all)
|
|
79
|
+
npx @wemuda/launchrail adr index # regenerate the ADR registry's index table from the records (--check for CI)
|
|
79
80
|
```
|
|
80
81
|
|
|
81
82
|
Initialized projects carry two files: `.launchrail.yml` (configuration) and `.launchrail-lock.json` (versions, checksums, applied migrations; committed to the repo). Full walkthrough: [docs/getting-started.md](https://github.com/wemuda/launchrail/blob/master/docs/getting-started.md). Committed, unedited example of what `init` produces: [examples/hello-launchrail](https://github.com/wemuda/launchrail/tree/master/examples/hello-launchrail).
|
|
@@ -148,7 +149,7 @@ The toolchain is stable and versioned. The full surface — `init`/`doctor`, the
|
|
|
148
149
|
See [CONTRIBUTING.md](https://github.com/wemuda/launchrail/blob/master/CONTRIBUTING.md). The short version:
|
|
149
150
|
|
|
150
151
|
- Commits follow [Conventional Commits](https://www.conventionalcommits.org/) (`type(scope): summary`); see [ADR-0002](https://github.com/wemuda/launchrail/blob/master/docs/adr/0002-conventional-commits.md). Releases and the changelog are generated from them ([docs/releasing.md](https://github.com/wemuda/launchrail/blob/master/docs/releasing.md)).
|
|
151
|
-
- Meaningful decisions are recorded as ADRs in [docs/adr/](https://github.com/wemuda/launchrail/tree/master/docs/adr/); the registry index [docs/adr/README.md](https://github.com/wemuda/launchrail/blob/master/docs/adr/README.md) says which are live.
|
|
152
|
+
- Meaningful decisions are recorded as ADRs in [docs/adr/](https://github.com/wemuda/launchrail/tree/master/docs/adr/), named by decision date and slug; the registry index [docs/adr/README.md](https://github.com/wemuda/launchrail/blob/master/docs/adr/README.md) says which are live, and `launchrail adr index` regenerates it.
|
|
152
153
|
- The agent operating contract lives in [AGENTS.md](https://github.com/wemuda/launchrail/blob/master/AGENTS.md).
|
|
153
154
|
- Security issues go through [SECURITY.md](https://github.com/wemuda/launchrail/blob/master/SECURITY.md), not public issues.
|
|
154
155
|
|
|
@@ -44,7 +44,7 @@ Multi-context repo (presence of `CONTEXT-MAP.md` at the root):
|
|
|
44
44
|
└── docs/adr/
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
ADRs use the project's own format — copy `docs/adr/0000-template.md
|
|
47
|
+
ADRs use the project's own format — copy `docs/adr/0000-template.md` to `YYYY-MM-DD-short-slug.md` (the decision date, then a slug unique in the directory; no sequence number to claim), declare in its `## Status` what it amends or supersedes, and regenerate the registry index (`launchrail adr index`, writing `docs/adr/README.md`) in the same commit.
|
|
48
48
|
|
|
49
49
|
## Use the glossary's vocabulary
|
|
50
50
|
|
|
@@ -21,7 +21,7 @@ Read `.launchrail.yml` (`origin`, `modules`, `issueTracker`) first — it is the
|
|
|
21
21
|
| 3 | Discovery | `launch-discovery` | Landscape map committed under `docs/research/` (`discovery-*.md`) |
|
|
22
22
|
| 4 | Complexity grill | `launch-grill` | Grill constraints committed under `docs/research/` |
|
|
23
23
|
| 5 | Technical research | `launch-research`, fed the grill constraints | Research notes committed under `docs/research/` |
|
|
24
|
-
| 6 | Architecture decisions | ADRs (`docs/adr/0000-template.md`) | `docs/adr/
|
|
24
|
+
| 6 | Architecture decisions | ADRs (`docs/adr/0000-template.md`) | `docs/adr/YYYY-MM-DD-*.md` beyond the template |
|
|
25
25
|
| 7 | MVP specification | `launch-wayfinder` / `launch-spec` † | A spec exists — a `spec`-labeled issue on the tracker, or a `docs/specs/` file in local mode (read `docs/agents/issue-tracker.md`) |
|
|
26
26
|
| 8 | Design validation | `launch-design-validation` (fidelity chosen inside the skill) | The spec carries a `## Design validation` section (a recorded skip counts) |
|
|
27
27
|
| 9 | Tickets | `launch-tickets` † | Tracker has `ready-for-agent` tickets with `Blocked by: #n` edges |
|
|
@@ -62,7 +62,7 @@ A planning session (a grill, a wayfinder ticket, an interview) closes with the b
|
|
|
62
62
|
| 3 | Discovery research | Launchrail `discovery` skill (composes `launch-research`) | Vision + intended stack | Landscape/options map in `docs/research/` (`discovery-*.md`) |
|
|
63
63
|
| 4 | Complexity grill | `launch-grill` | Vision + exploration + discovery | Grill constraints in `docs/research/` |
|
|
64
64
|
| 5 | Technical research | `launch-research` | **Grill constraints** | Research notes in `docs/research/` |
|
|
65
|
-
| 6 | Architecture decisions | ADRs (seeded template) | Research | `docs/adr/
|
|
65
|
+
| 6 | Architecture decisions | ADRs (seeded template) | Research | `docs/adr/YYYY-MM-DD-*.md` |
|
|
66
66
|
| 7 | MVP specification | `launch-wayfinder` / `launch-spec` † | Vision, ADRs, research | A `spec`-labeled issue on the tracker (or `docs/specs/` in local mode) ‡ |
|
|
67
67
|
| 8 | Design validation | Launchrail `design-validation` skill | Spec (+ Claude Design at the top fidelity) | Revised spec with `## Design validation` section |
|
|
68
68
|
| 9 | Tickets | `launch-tickets` † | Validated spec | Tickets in the tracker: `ready-for-agent` label, `Blocked by: #n` edges |
|
|
@@ -42,6 +42,6 @@ Only offer to create an ADR when all three are true:
|
|
|
42
42
|
2. **Surprising without context** — a future reader will wonder "why did they do it this way?"
|
|
43
43
|
3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons
|
|
44
44
|
|
|
45
|
-
If any of the three is missing, skip the ADR — an implementation choice that fails the bar lives in the spec or the ticket, not `docs/adr/`. And when the decision refines one an existing ADR already owns, amend that ADR
|
|
45
|
+
If any of the three is missing, skip the ADR — an implementation choice that fails the bar lives in the spec or the ticket, not `docs/adr/`. And when the decision refines one an existing ADR already owns, amend that ADR — a new record that declares `amends` it in its `## Status`, or a revision of the record itself — instead of minting an unrelated sibling; a corpus of revisions reads worse than a decision with a history.
|
|
46
46
|
|
|
47
|
-
ADRs use the **project's own format**: copy `docs/adr/0000-template.md` (seeded by `launchrail init`)
|
|
47
|
+
ADRs use the **project's own format**: copy `docs/adr/0000-template.md` (seeded by `launchrail init`) to `YYYY-MM-DD-short-slug.md` — the decision date, then a slug unique in `docs/adr/`; there is no number to claim, so parallel sessions never collide — and regenerate the registry index with `launchrail adr index` **in the same commit** (its table is generated from the records; never hand-edit the rows). A project whose records still follow an older `NNNN-` scheme keeps those names; only new records take dates. One format per project; do not introduce a second.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface AdrIndexOptions {
|
|
2
|
+
cwd: string;
|
|
3
|
+
/** Report whether the index is current without writing; exit 1 when it is not. */
|
|
4
|
+
check: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface AdrIndexOutcome {
|
|
7
|
+
code: number;
|
|
8
|
+
/** "current" | "updated" | "stale" (check mode) | "missing" (no registry / no index section). */
|
|
9
|
+
result: "current" | "updated" | "stale" | "missing";
|
|
10
|
+
records: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* `launchrail adr index` — regenerate the registry's index table from the
|
|
14
|
+
* records on disk. The registry is project-owned; only the rows between the
|
|
15
|
+
* markers are touched, and only here (never by sync), so the project keeps
|
|
16
|
+
* every other line and parallel branches merge by re-running the command.
|
|
17
|
+
*/
|
|
18
|
+
export declare function runAdrIndex(options: AdrIndexOptions): AdrIndexOutcome;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { ADR_REGISTRY_PATH, scanAdrs, withRegeneratedIndex } from "../lib/adr.js";
|
|
4
|
+
/**
|
|
5
|
+
* `launchrail adr index` — regenerate the registry's index table from the
|
|
6
|
+
* records on disk. The registry is project-owned; only the rows between the
|
|
7
|
+
* markers are touched, and only here (never by sync), so the project keeps
|
|
8
|
+
* every other line and parallel branches merge by re-running the command.
|
|
9
|
+
*/
|
|
10
|
+
export function runAdrIndex(options) {
|
|
11
|
+
const registryPath = join(options.cwd, ADR_REGISTRY_PATH);
|
|
12
|
+
const entries = scanAdrs(options.cwd);
|
|
13
|
+
if (!existsSync(registryPath)) {
|
|
14
|
+
console.error(`launchrail: ${ADR_REGISTRY_PATH} not found — run \`launchrail sync\` to seed the registry first`);
|
|
15
|
+
return { code: 1, result: "missing", records: entries.length };
|
|
16
|
+
}
|
|
17
|
+
const source = readFileSync(registryPath, "utf8");
|
|
18
|
+
const next = withRegeneratedIndex(source, entries);
|
|
19
|
+
if (next === null) {
|
|
20
|
+
console.error(`launchrail: ${ADR_REGISTRY_PATH} has no index to regenerate — add a \`## Index\` heading with a table (or the adr-index markers) and re-run`);
|
|
21
|
+
return { code: 1, result: "missing", records: entries.length };
|
|
22
|
+
}
|
|
23
|
+
if (next === source) {
|
|
24
|
+
console.log(`adr index: current (${entries.length} record(s))`);
|
|
25
|
+
return { code: 0, result: "current", records: entries.length };
|
|
26
|
+
}
|
|
27
|
+
if (options.check) {
|
|
28
|
+
console.error(`adr index: out of date — run \`launchrail adr index\` and commit ${ADR_REGISTRY_PATH}`);
|
|
29
|
+
return { code: 1, result: "stale", records: entries.length };
|
|
30
|
+
}
|
|
31
|
+
writeFileSync(registryPath, next);
|
|
32
|
+
console.log(`adr index: updated ${ADR_REGISTRY_PATH} (${entries.length} record(s))`);
|
|
33
|
+
return { code: 0, result: "updated", records: entries.length };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=adr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/commands/adr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAelF;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAwB;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,eAAe,iBAAiB,iEAAiE,CAAC,CAAC;QACjH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACjE,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CACX,eAAe,iBAAiB,6GAA6G,CAC9I,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,oEAAoE,iBAAiB,EAAE,CAAC,CAAC;QACvG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/D,CAAC;IACD,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,sBAAsB,iBAAiB,KAAK,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC;IACrF,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACjE,CAAC"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { ADR_REGISTRY_PATH,
|
|
3
|
+
import { ADR_REGISTRY_PATH, duplicateAdrIds, scanAdrs, unindexedAdrs, withRegeneratedIndex } from "../lib/adr.js";
|
|
4
4
|
import { BROWSER_DRIVER_PACKAGE, BROWSER_TESTING_MODULE, SEMANTIC_SCRIPTS } from "../lib/browser-testing.js";
|
|
5
5
|
import { sha256 } from "../lib/checksum.js";
|
|
6
6
|
import { missingImports } from "../lib/claudeImports.js";
|
|
@@ -103,31 +103,36 @@ export function runDoctor(cwd) {
|
|
|
103
103
|
add("warn", "CLAUDE.md", `does not import ${missing.join(", ")} — ${consequence}; re-run \`launchrail init\` to wire it in`);
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
-
// The ADR corpus (ADR-0031
|
|
107
|
-
//
|
|
108
|
-
//
|
|
106
|
+
// The ADR corpus (ADR-0031, as amended by the dated-identifier ADR):
|
|
107
|
+
// filename-level invariants plus the generated index — record contents use
|
|
108
|
+
// the project's own format and are none of doctor's business. All are
|
|
109
|
+
// project-doc hygiene, so they warn rather than fail.
|
|
109
110
|
const adrs = scanAdrs(cwd);
|
|
110
111
|
if (adrs.length > 0) {
|
|
111
|
-
const dupes =
|
|
112
|
+
const dupes = duplicateAdrIds(adrs);
|
|
112
113
|
if (dupes.length === 0) {
|
|
113
|
-
add("pass", "adr
|
|
114
|
+
add("pass", "adr identifiers", `${adrs.length} decision record(s), identifiers unique`);
|
|
114
115
|
}
|
|
115
116
|
else {
|
|
116
|
-
add("warn", "adr
|
|
117
|
+
add("warn", "adr identifiers", `identifier(s) ${dupes.join(", ")} claimed by more than one file — references are ambiguous; rename one of each pair (dated records: change the slug) and update its links`);
|
|
117
118
|
}
|
|
118
119
|
if (!existsSync(join(cwd, ADR_REGISTRY_PATH))) {
|
|
119
120
|
add("warn", "adr registry", `${ADR_REGISTRY_PATH} missing — run \`launchrail sync\` to seed the index`);
|
|
120
121
|
}
|
|
121
122
|
else {
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
123
|
+
const registry = readFileSync(join(cwd, ADR_REGISTRY_PATH), "utf8");
|
|
124
|
+
const unindexed = unindexedAdrs(registry, adrs);
|
|
125
|
+
if (unindexed.length > 0) {
|
|
127
126
|
add("warn", "adr registry", `${unindexed.length} record(s) missing from the index (${unindexed
|
|
128
127
|
.slice(0, 3)
|
|
129
128
|
.map((e) => e.file)
|
|
130
|
-
.join(", ")}${unindexed.length > 3 ? ", …" : ""}) —
|
|
129
|
+
.join(", ")}${unindexed.length > 3 ? ", …" : ""}) — run \`launchrail adr index\``);
|
|
130
|
+
}
|
|
131
|
+
else if (withRegeneratedIndex(registry, adrs) !== registry) {
|
|
132
|
+
add("warn", "adr registry", `index table out of date — run \`launchrail adr index\` and commit ${ADR_REGISTRY_PATH}`);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
add("pass", "adr registry", "every record indexed, index current");
|
|
131
136
|
}
|
|
132
137
|
}
|
|
133
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { AVAILABLE_MODULES, runAdd } from "./commands/add.js";
|
|
3
|
+
import { runAdrIndex } from "./commands/adr.js";
|
|
3
4
|
import { printDiff, runDiff } from "./commands/diff.js";
|
|
4
5
|
import { runDev } from "./commands/dev.js";
|
|
5
6
|
import { runDoctor, printDoctor } from "./commands/doctor.js";
|
|
@@ -23,6 +24,7 @@ Commands:
|
|
|
23
24
|
diff Preview upstream changes
|
|
24
25
|
sync Synchronize managed capabilities and run migrations
|
|
25
26
|
eject Stop managing a selected module or file
|
|
27
|
+
adr Maintain the decision-record registry (adr index [--check])
|
|
26
28
|
promote Inspect potential reusable local improvements
|
|
27
29
|
|
|
28
30
|
Options:
|
|
@@ -48,7 +50,10 @@ sync options:
|
|
|
48
50
|
|
|
49
51
|
eject usage:
|
|
50
52
|
launchrail eject <module|file> [--dry-run] Stop managing a module's files or one file
|
|
51
|
-
launchrail eject --all [--dry-run] Vendor mode: eject everything
|
|
53
|
+
launchrail eject --all [--dry-run] Vendor mode: eject everything
|
|
54
|
+
|
|
55
|
+
adr usage:
|
|
56
|
+
launchrail adr index [--check] Regenerate docs/adr/README.md's index table from the records (--check: report only)`;
|
|
52
57
|
const NOT_IMPLEMENTED = ["promote"];
|
|
53
58
|
const args = process.argv.slice(2);
|
|
54
59
|
const command = args[0];
|
|
@@ -128,6 +133,13 @@ if (command === "eject") {
|
|
|
128
133
|
});
|
|
129
134
|
process.exit(outcome.code);
|
|
130
135
|
}
|
|
136
|
+
if (command === "adr") {
|
|
137
|
+
if (args[1] !== "index") {
|
|
138
|
+
console.error("launchrail: usage: launchrail adr index [--check]");
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
process.exit(runAdrIndex({ cwd: process.cwd(), check: flags.has("--check") }).code);
|
|
142
|
+
}
|
|
131
143
|
if (NOT_IMPLEMENTED.includes(command)) {
|
|
132
144
|
console.error(`launchrail: "${command}" is not implemented yet.`);
|
|
133
145
|
process.exit(1);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,IAAI,GAAG,cAAc,OAAO;;;;;;;sDAOoB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/adr.d.ts
CHANGED
|
@@ -1,27 +1,65 @@
|
|
|
1
1
|
export declare const ADR_DIR = "docs/adr";
|
|
2
2
|
export declare const ADR_TEMPLATE_FILENAME = "0000-template.md";
|
|
3
3
|
export declare const ADR_REGISTRY_PATH = "docs/adr/README.md";
|
|
4
|
+
export declare const ADR_INDEX_START = "<!-- adr-index:start \u2014 generated by `launchrail adr index`; edit the records, not this table -->";
|
|
5
|
+
export declare const ADR_INDEX_END = "<!-- adr-index:end -->";
|
|
4
6
|
export interface AdrEntry {
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
+
/**
|
|
8
|
+
* The handle other documents reference the record by: the four-digit number
|
|
9
|
+
* of a legacy `NNNN-slug.md` record, the slug of a dated `YYYY-MM-DD-slug.md`
|
|
10
|
+
* one. Ambiguous when two files share it.
|
|
11
|
+
*/
|
|
12
|
+
id: string;
|
|
13
|
+
/** Decision date of a dated record (`YYYY-MM-DD`); null for legacy numbered records. */
|
|
14
|
+
date: string | null;
|
|
7
15
|
/** Filename inside docs/adr/. */
|
|
8
16
|
file: string;
|
|
9
17
|
/** First `# ` heading (any `ADR-NNNN:` prefix stripped); the filename when there is none. */
|
|
10
18
|
title: string;
|
|
19
|
+
/** The `## Status` section's first paragraph, joined on one line; empty when the record has none. */
|
|
20
|
+
status: string;
|
|
11
21
|
}
|
|
12
22
|
/**
|
|
13
23
|
* The decision records already in a repository's docs/adr/ (template and
|
|
14
|
-
* registry excluded), sorted by
|
|
24
|
+
* registry excluded), sorted by filename — numbered records first, dated
|
|
25
|
+
* records after them in date order, so the mixed corpus reads as a timeline.
|
|
26
|
+
* Read-only.
|
|
15
27
|
*/
|
|
16
28
|
export declare function scanAdrs(cwd: string): AdrEntry[];
|
|
17
|
-
/**
|
|
18
|
-
export declare function
|
|
29
|
+
/** Ids (numbers or slugs) claimed by more than one record — every reference by id is ambiguous. */
|
|
30
|
+
export declare function duplicateAdrIds(entries: AdrEntry[]): string[];
|
|
19
31
|
/** Records whose filename never appears in the registry — rows the index is missing. */
|
|
20
32
|
export declare function unindexedAdrs(registrySource: string, entries: AdrEntry[]): AdrEntry[];
|
|
33
|
+
type Relation = "supersedes" | "amends" | "extends";
|
|
34
|
+
/**
|
|
35
|
+
* The relation graph declared across the corpus. A record declares what it
|
|
36
|
+
* `supersedes`/`amends`/`extends` in its own `## Status`; legacy records may also
|
|
37
|
+
* carry the reverse (`amended by …`). Both directions feed one graph, keyed by
|
|
38
|
+
* the earlier record's file, so the index can print back-references that no
|
|
39
|
+
* record had to be edited to carry.
|
|
40
|
+
*/
|
|
41
|
+
export declare function adrRelations(entries: AdrEntry[]): Map<string, Record<Relation, AdrEntry[]>>;
|
|
42
|
+
/**
|
|
43
|
+
* One record's status cell: its state, the relations it declares, and the
|
|
44
|
+
* back-references derived from later records. Superseded records also name
|
|
45
|
+
* their successor(s), the one fact a reader must not miss.
|
|
46
|
+
*/
|
|
47
|
+
export declare function adrStatusCell(entry: AdrEntry, entries: AdrEntry[], graph?: Map<string, Record<Relation, AdrEntry[]>>): string;
|
|
48
|
+
/** The generated index table, markers included. */
|
|
49
|
+
export declare function adrIndexTable(entries: AdrEntry[]): string;
|
|
50
|
+
/**
|
|
51
|
+
* The registry with its index table regenerated in place. Between the markers
|
|
52
|
+
* when they exist; otherwise the first table under `## Index` is replaced and
|
|
53
|
+
* the markers introduced around it (a registry written before the generator
|
|
54
|
+
* migrates on its first run). Null when the registry has neither.
|
|
55
|
+
*/
|
|
56
|
+
export declare function withRegeneratedIndex(registrySource: string, entries: AdrEntry[]): string | null;
|
|
21
57
|
/**
|
|
22
58
|
* The seeded ADR registry. When init/sync adopts a repository that already has
|
|
23
|
-
* decision records, the index prefills from them
|
|
24
|
-
*
|
|
25
|
-
*
|
|
59
|
+
* decision records, the index prefills from them; a fresh repository gets the
|
|
60
|
+
* empty index. Seeded once, then project-owned — but the table between the
|
|
61
|
+
* markers is regenerated by `launchrail adr index`, so the project maintains
|
|
62
|
+
* the records and the live picture, never the rows.
|
|
26
63
|
*/
|
|
27
64
|
export declare function adrRegistryContent(entries: AdrEntry[]): string;
|
|
65
|
+
export {};
|
package/dist/lib/adr.js
CHANGED
|
@@ -3,61 +3,232 @@ import { join } from "node:path";
|
|
|
3
3
|
export const ADR_DIR = "docs/adr";
|
|
4
4
|
export const ADR_TEMPLATE_FILENAME = "0000-template.md";
|
|
5
5
|
export const ADR_REGISTRY_PATH = `${ADR_DIR}/README.md`;
|
|
6
|
-
const
|
|
6
|
+
export const ADR_INDEX_START = "<!-- adr-index:start — generated by `launchrail adr index`; edit the records, not this table -->";
|
|
7
|
+
export const ADR_INDEX_END = "<!-- adr-index:end -->";
|
|
8
|
+
/** Legacy numbered records: `0031-adr-registry.md`. A dated filename is not a numbered one. */
|
|
9
|
+
const NUMBERED_FILENAME = /^(\d{4})-(?!\d{2}-\d{2}-)(.+)\.md$/;
|
|
10
|
+
/** Dated records: `2026-09-11-adr-date-slug-identifiers.md` — the date is when the decision was made. */
|
|
11
|
+
const DATED_FILENAME = /^(\d{4}-\d{2}-\d{2})-([a-z0-9][a-z0-9-]*)\.md$/;
|
|
7
12
|
const TITLE_PREFIX = /^ADR[-\s]?\d+\s*[:—–-]\s*/i;
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
function parseFilename(file) {
|
|
14
|
+
const dated = DATED_FILENAME.exec(file);
|
|
15
|
+
if (dated?.[1] !== undefined && dated[2] !== undefined)
|
|
16
|
+
return { id: dated[2], date: dated[1] };
|
|
17
|
+
const numbered = NUMBERED_FILENAME.exec(file);
|
|
18
|
+
if (numbered?.[1] !== undefined)
|
|
19
|
+
return { id: numbered[1], date: null };
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
function adrTitle(source, file) {
|
|
23
|
+
const heading = /^#\s+(.+)$/m.exec(source)?.[1];
|
|
24
|
+
if (heading)
|
|
25
|
+
return heading.replace(TITLE_PREFIX, "").trim();
|
|
17
26
|
return file.replace(/\.md$/, "");
|
|
18
27
|
}
|
|
28
|
+
/** The first paragraph under `## Status`, whitespace-collapsed onto one line. */
|
|
29
|
+
function adrStatus(source) {
|
|
30
|
+
const match = /^##\s+Status[^\n]*\n([\s\S]*?)(?=^##\s|(?![\s\S]))/m.exec(source);
|
|
31
|
+
if (!match)
|
|
32
|
+
return "";
|
|
33
|
+
const paragraph = (match[1] ?? "").trim().split(/\n\s*\n/)[0] ?? "";
|
|
34
|
+
return paragraph.replace(/\s+/g, " ").trim();
|
|
35
|
+
}
|
|
19
36
|
/**
|
|
20
37
|
* The decision records already in a repository's docs/adr/ (template and
|
|
21
|
-
* registry excluded), sorted by
|
|
38
|
+
* registry excluded), sorted by filename — numbered records first, dated
|
|
39
|
+
* records after them in date order, so the mixed corpus reads as a timeline.
|
|
40
|
+
* Read-only.
|
|
22
41
|
*/
|
|
23
42
|
export function scanAdrs(cwd) {
|
|
24
43
|
const dir = join(cwd, ADR_DIR);
|
|
25
44
|
if (!existsSync(dir))
|
|
26
45
|
return [];
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
46
|
+
const entries = [];
|
|
47
|
+
for (const file of readdirSync(dir).sort()) {
|
|
48
|
+
if (file === ADR_TEMPLATE_FILENAME)
|
|
49
|
+
continue;
|
|
50
|
+
const parsed = parseFilename(file);
|
|
51
|
+
if (!parsed)
|
|
52
|
+
continue;
|
|
53
|
+
let source = "";
|
|
54
|
+
try {
|
|
55
|
+
source = readFileSync(join(dir, file), "utf8");
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Unreadable file — title falls back to the filename, status to empty.
|
|
59
|
+
}
|
|
60
|
+
entries.push({ ...parsed, file, title: adrTitle(source, file), status: adrStatus(source) });
|
|
61
|
+
}
|
|
62
|
+
return entries;
|
|
36
63
|
}
|
|
37
|
-
/**
|
|
38
|
-
export function
|
|
64
|
+
/** Ids (numbers or slugs) claimed by more than one record — every reference by id is ambiguous. */
|
|
65
|
+
export function duplicateAdrIds(entries) {
|
|
39
66
|
const counts = new Map();
|
|
40
67
|
for (const entry of entries)
|
|
41
|
-
counts.set(entry.
|
|
42
|
-
return [...counts.entries()].filter(([, n]) => n > 1).map(([
|
|
68
|
+
counts.set(entry.id, (counts.get(entry.id) ?? 0) + 1);
|
|
69
|
+
return [...counts.entries()].filter(([, n]) => n > 1).map(([id]) => id);
|
|
43
70
|
}
|
|
44
71
|
/** Records whose filename never appears in the registry — rows the index is missing. */
|
|
45
72
|
export function unindexedAdrs(registrySource, entries) {
|
|
46
73
|
return entries.filter((entry) => !registrySource.includes(entry.file));
|
|
47
74
|
}
|
|
75
|
+
const FORWARD = { supersedes: "supersedes", amends: "amends", extends: "extends" };
|
|
76
|
+
const BACKWARD = {
|
|
77
|
+
"superseded by": "supersedes",
|
|
78
|
+
"amended by": "amends",
|
|
79
|
+
"extended by": "extends",
|
|
80
|
+
};
|
|
81
|
+
const RELATION_KEYWORD = /\b(partially\s+superseded\s+by|superseded\s+by|amended\s+by|extended\s+by|supersedes|amends|extends)\b/gi;
|
|
82
|
+
/** A clause ends at the next relation keyword, a semicolon, or a sentence end. */
|
|
83
|
+
const CLAUSE_END = /;|\.\s|\.$/;
|
|
84
|
+
/** Every record the clause names: link targets that are record files, or `ADR-NNNN` mentions. */
|
|
85
|
+
function refsIn(clause, byFile, byNumber) {
|
|
86
|
+
const refs = [];
|
|
87
|
+
const seen = new Set();
|
|
88
|
+
const push = (entry) => {
|
|
89
|
+
if (entry && !seen.has(entry.file)) {
|
|
90
|
+
seen.add(entry.file);
|
|
91
|
+
refs.push(entry);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
for (const match of clause.matchAll(/\]\(([^)\s]+)\)/g))
|
|
95
|
+
push(byFile.get((match[1] ?? "").split("/").pop() ?? ""));
|
|
96
|
+
for (const match of clause.matchAll(/\bADR[-\s]?(\d{4})\b/g))
|
|
97
|
+
push(byNumber.get(match[1] ?? ""));
|
|
98
|
+
return refs;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* The relation graph declared across the corpus. A record declares what it
|
|
102
|
+
* `supersedes`/`amends`/`extends` in its own `## Status`; legacy records may also
|
|
103
|
+
* carry the reverse (`amended by …`). Both directions feed one graph, keyed by
|
|
104
|
+
* the earlier record's file, so the index can print back-references that no
|
|
105
|
+
* record had to be edited to carry.
|
|
106
|
+
*/
|
|
107
|
+
export function adrRelations(entries) {
|
|
108
|
+
const byFile = new Map(entries.map((e) => [e.file, e]));
|
|
109
|
+
const byNumber = new Map(entries.filter((e) => e.date === null).map((e) => [e.id, e]));
|
|
110
|
+
const graph = new Map();
|
|
111
|
+
const link = (target, relation, source) => {
|
|
112
|
+
if (target.file === source.file)
|
|
113
|
+
return;
|
|
114
|
+
const slot = graph.get(target.file) ?? { supersedes: [], amends: [], extends: [] };
|
|
115
|
+
if (!slot[relation].some((e) => e.file === source.file))
|
|
116
|
+
slot[relation].push(source);
|
|
117
|
+
graph.set(target.file, slot);
|
|
118
|
+
};
|
|
119
|
+
for (const entry of entries) {
|
|
120
|
+
const keywords = [...entry.status.matchAll(RELATION_KEYWORD)];
|
|
121
|
+
keywords.forEach((match, i) => {
|
|
122
|
+
const start = match.index + match[0].length;
|
|
123
|
+
const rest = entry.status.slice(start, keywords[i + 1]?.index ?? entry.status.length);
|
|
124
|
+
const end = CLAUSE_END.exec(rest);
|
|
125
|
+
const clause = end ? rest.slice(0, end.index) : rest;
|
|
126
|
+
const keyword = (match[1] ?? "").toLowerCase().replace(/\s+/g, " ").replace(/^partially /, "");
|
|
127
|
+
const refs = refsIn(clause, byFile, byNumber);
|
|
128
|
+
const forward = FORWARD[keyword];
|
|
129
|
+
const backward = BACKWARD[keyword];
|
|
130
|
+
if (forward)
|
|
131
|
+
for (const target of refs)
|
|
132
|
+
link(target, forward, entry);
|
|
133
|
+
else if (backward)
|
|
134
|
+
for (const source of refs)
|
|
135
|
+
link(entry, backward, source);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
return graph;
|
|
139
|
+
}
|
|
140
|
+
// --- Index ---------------------------------------------------------------------
|
|
141
|
+
/** The leading word of the status line (`Accepted`, `Superseded`, …); Unclassified when there is no status at all. */
|
|
142
|
+
function stateOf(status) {
|
|
143
|
+
const word = /^([A-Za-z]+)/.exec(status)?.[1];
|
|
144
|
+
if (!word)
|
|
145
|
+
return "Unclassified";
|
|
146
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
147
|
+
}
|
|
148
|
+
function idLink(entry) {
|
|
149
|
+
return `[${entry.id}](${entry.file})`;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* One record's status cell: its state, the relations it declares, and the
|
|
153
|
+
* back-references derived from later records. Superseded records also name
|
|
154
|
+
* their successor(s), the one fact a reader must not miss.
|
|
155
|
+
*/
|
|
156
|
+
export function adrStatusCell(entry, entries, graph = adrRelations(entries)) {
|
|
157
|
+
const state = stateOf(entry.status);
|
|
158
|
+
const declared = { supersedes: [], amends: [], extends: [] };
|
|
159
|
+
for (const [file, slot] of graph) {
|
|
160
|
+
for (const relation of ["supersedes", "amends", "extends"]) {
|
|
161
|
+
if (slot[relation].some((e) => e.file === entry.file)) {
|
|
162
|
+
const target = entries.find((e) => e.file === file);
|
|
163
|
+
if (target)
|
|
164
|
+
declared[relation].push(target);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const received = graph.get(entry.file) ?? { supersedes: [], amends: [], extends: [] };
|
|
169
|
+
const list = (records) => records.map(idLink).join(", ");
|
|
170
|
+
const parts = [];
|
|
171
|
+
if (received.supersedes.length > 0 && state === "Superseded")
|
|
172
|
+
parts.push(`**Superseded by ${list(received.supersedes)}**`);
|
|
173
|
+
else if (received.supersedes.length > 0)
|
|
174
|
+
parts.push(`${state} — partially superseded by ${list(received.supersedes)}`);
|
|
175
|
+
else
|
|
176
|
+
parts.push(state);
|
|
177
|
+
if (declared.supersedes.length > 0)
|
|
178
|
+
parts.push(`supersedes ${list(declared.supersedes)}`);
|
|
179
|
+
if (declared.amends.length > 0)
|
|
180
|
+
parts.push(`amends ${list(declared.amends)}`);
|
|
181
|
+
if (declared.extends.length > 0)
|
|
182
|
+
parts.push(`extends ${list(declared.extends)}`);
|
|
183
|
+
if (received.amends.length > 0)
|
|
184
|
+
parts.push(`amended by ${list(received.amends)}`);
|
|
185
|
+
if (received.extends.length > 0)
|
|
186
|
+
parts.push(`extended by ${list(received.extends)}`);
|
|
187
|
+
return parts.join("; ");
|
|
188
|
+
}
|
|
189
|
+
/** The generated index table, markers included. */
|
|
190
|
+
export function adrIndexTable(entries) {
|
|
191
|
+
const graph = adrRelations(entries);
|
|
192
|
+
const header = "| ADR | Decided | Title | Status |\n| --- | --- | --- | --- |";
|
|
193
|
+
const rows = entries.map((e) => `| ${idLink(e)} | ${e.date ?? "—"} | ${e.title.replace(/\|/g, "\\|")} | ${adrStatusCell(e, entries, graph)} |`);
|
|
194
|
+
return [ADR_INDEX_START, header, ...rows, ADR_INDEX_END].join("\n");
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* The registry with its index table regenerated in place. Between the markers
|
|
198
|
+
* when they exist; otherwise the first table under `## Index` is replaced and
|
|
199
|
+
* the markers introduced around it (a registry written before the generator
|
|
200
|
+
* migrates on its first run). Null when the registry has neither.
|
|
201
|
+
*/
|
|
202
|
+
export function withRegeneratedIndex(registrySource, entries) {
|
|
203
|
+
const table = adrIndexTable(entries);
|
|
204
|
+
const start = registrySource.indexOf("<!-- adr-index:start");
|
|
205
|
+
const end = registrySource.indexOf(ADR_INDEX_END);
|
|
206
|
+
if (start !== -1 && end !== -1 && end > start) {
|
|
207
|
+
return registrySource.slice(0, start) + table + registrySource.slice(end + ADR_INDEX_END.length);
|
|
208
|
+
}
|
|
209
|
+
const heading = /^##\s+Index\s*$/m.exec(registrySource);
|
|
210
|
+
if (!heading)
|
|
211
|
+
return null;
|
|
212
|
+
const afterHeading = heading.index + heading[0].length;
|
|
213
|
+
const rest = registrySource.slice(afterHeading);
|
|
214
|
+
const tableMatch = /\n(\|[^\n]*\n)+/.exec(rest);
|
|
215
|
+
if (!tableMatch)
|
|
216
|
+
return null;
|
|
217
|
+
const before = registrySource.slice(0, afterHeading + tableMatch.index);
|
|
218
|
+
const after = rest.slice(tableMatch.index + tableMatch[0].length);
|
|
219
|
+
return `${before}\n${table}\n${after}`;
|
|
220
|
+
}
|
|
48
221
|
/**
|
|
49
222
|
* The seeded ADR registry. When init/sync adopts a repository that already has
|
|
50
|
-
* decision records, the index prefills from them
|
|
51
|
-
*
|
|
52
|
-
*
|
|
223
|
+
* decision records, the index prefills from them; a fresh repository gets the
|
|
224
|
+
* empty index. Seeded once, then project-owned — but the table between the
|
|
225
|
+
* markers is regenerated by `launchrail adr index`, so the project maintains
|
|
226
|
+
* the records and the live picture, never the rows.
|
|
53
227
|
*/
|
|
54
228
|
export function adrRegistryContent(entries) {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const unclassifiedNote = entries.length === 0
|
|
59
|
-
? ""
|
|
60
|
-
: "\n\nRows marked **Unclassified** existed before this registry was seeded. Classify each as you next touch its area: set the record's status (`Accepted`, `Accepted — amended by ADR-NNNN`, `Superseded by ADR-NNNN`) and mirror it here.";
|
|
229
|
+
const unclassifiedNote = entries.some((e) => e.status === "")
|
|
230
|
+
? "\n\nRows marked **Unclassified** carry no `## Status` section yet. Classify each as you next touch its area: give the record a status line (`Accepted`, `Superseded by [id](file)`, …) and re-run `launchrail adr index`."
|
|
231
|
+
: "";
|
|
61
232
|
const livePicture = entries.length === 0
|
|
62
233
|
? "_No decisions recorded yet. When ADRs land, summarize here how they compose into the current system, and name the few a newcomer should read first._"
|
|
63
234
|
: "_Not yet written. Summarize how the accepted decisions compose into the current system, and name the few ADRs a newcomer should read first._";
|
|
@@ -69,7 +240,7 @@ An ADR records a decision and the context it was made in. It is **not documentat
|
|
|
69
240
|
|
|
70
241
|
## Index
|
|
71
242
|
|
|
72
|
-
${
|
|
243
|
+
${adrIndexTable(entries)}${unclassifiedNote}
|
|
73
244
|
|
|
74
245
|
## The live picture
|
|
75
246
|
|
|
@@ -79,9 +250,10 @@ ${livePicture}
|
|
|
79
250
|
|
|
80
251
|
## Maintaining this registry
|
|
81
252
|
|
|
82
|
-
- New ADRs copy [0000-template.md](0000-template.md)
|
|
83
|
-
-
|
|
84
|
-
-
|
|
253
|
+
- New ADRs copy [0000-template.md](0000-template.md) to \`YYYY-MM-DD-short-slug.md\` — the date the decision was made, then a slug unique in this directory. There is no sequence number to claim, so parallel branches never collide.
|
|
254
|
+
- The index table between the markers is **generated**: run \`launchrail adr index\` after adding or re-statusing a record (and after merging), and commit the result. Never hand-edit the rows; the rest of this file is yours.
|
|
255
|
+
- A new ADR declares what it supersedes, amends, or extends in its own \`## Status\` line, linking the earlier record by file. The index derives the reverse links, so amending an ADR does not require editing it. A superseded ADR's \`## Status\` line is still rewritten to name its successor — that is the one fact a reader of the record alone must not miss.
|
|
256
|
+
- Never delete or rename an ADR once it is referenced; superseded ADRs are historical records other documents link to.
|
|
85
257
|
`;
|
|
86
258
|
}
|
|
87
259
|
//# sourceMappingURL=adr.js.map
|
package/dist/lib/adr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/lib/adr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC;AAClC,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,OAAO,YAAY,CAAC;AAWxD,MAAM,YAAY,GAAG,kBAAkB,CAAC;AACxC,MAAM,YAAY,GAAG,4BAA4B,CAAC;AAElD,SAAS,QAAQ,CAAC,GAAW,EAAE,IAAY;IACzC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;IACpD,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,WAAW,CAAC,GAAG,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,qBAAqB,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3E,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,uDAAuD;QACvD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI;QACJ,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC;KACvC,CAAC,CAAC,CAAC;AACR,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,mBAAmB,CAAC,OAAmB;IACrD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,OAAO;QAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AAClF,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,cAAsB,EAAE,OAAmB;IACvE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAmB;IACpD,MAAM,MAAM,GAAG,+CAA+C,CAAC;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvG,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,IAAI,EAAE,CAAC;IACnE,MAAM,gBAAgB,GACpB,OAAO,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,0OAA0O,CAAC;IACjP,MAAM,WAAW,GACf,OAAO,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,CAAC,sJAAsJ;QACxJ,CAAC,CAAC,8IAA8I,CAAC;IAErJ,OAAO;;;;;;;;EAQP,KAAK,GAAG,gBAAgB;;;;;;EAMxB,WAAW;;;;;;;CAOZ,CAAC;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/lib/adr.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/seeds.js
CHANGED
|
@@ -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
|
|
|
@@ -100,12 +100,12 @@ function claudeGeneratedMd(ctx) {
|
|
|
100
100
|
${browserTesting}${ralph}`;
|
|
101
101
|
}
|
|
102
102
|
function adrTemplate() {
|
|
103
|
-
return `#
|
|
103
|
+
return `# Short decision title
|
|
104
104
|
|
|
105
105
|
## Status
|
|
106
|
-
Proposed | Accepted |
|
|
106
|
+
Proposed | Accepted | Superseded by [slug](YYYY-MM-DD-slug.md)
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
Name here what this record supersedes, amends, or extends, linking the earlier record by file (\`Accepted — amends [slug](YYYY-MM-DD-slug.md): what changed\`). The registry index ([README.md](README.md)) derives the reverse links, so an earlier record need not be edited when this one amends it; when this record is superseded later, this line is rewritten to name the successor. Re-run \`launchrail adr index\` after any change here.
|
|
109
109
|
|
|
110
110
|
## Context
|
|
111
111
|
What requirement or constraint requires a decision?
|
package/package.json
CHANGED