@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.
@@ -7,12 +7,12 @@ description: Implement a single ticket end to end under the Launchrail completio
7
7
 
8
8
  The per-ticket implementation contract. Ralph dispatches name this skill so the contract lives in one place — every implementer, on every run, gets the same one.
9
9
 
10
- 1. **Read before coding.** The ticket, every artifact it links (spec sections, ADRs, designs), and `AGENTS.md`/`CLAUDE.md`. The commands you run come from `.launchrail.yml` (`testing.*`) and `AGENTS.md`, verbatim.
10
+ 1. **Read before coding.** The ticket, every artifact it links (spec sections, ADRs, designs), and `AGENTS.md`/`CLAUDE.md`. The commands you run come from `.launchrail.yml` (`testing.*`) and `AGENTS.md`, verbatim. A ticket that names a `docs/design/<slug>/` package is built under the [fidelity protocol](../launch-design-implement/fidelity.md): the prototype's own markup and styles are the source for the states the ticket covers, every reachable state among them is inventoried in the package's `fidelity.md` before you code, and none is narrowed or restyled toward what already exists.
11
11
  2. **Push early, push often.** Your branch is pushed before you write a line, and you **commit and push after every green step** — a passing test slice, a finished subtask. The pushed branch is the checkpoint a lost session resumes from (a successor adopts it at its last commit instead of rebuilding) and the loop's liveness signal. Work that is not on the remote does not exist to the next session. Never push to the base branch and never open a PR from inside a loop dispatch — the loop lands your branch.
12
12
  3. **TDD at the seams the ticket names.** Write the failing test first where the ticket or spec defines behavior. Typecheck and run single test files as you go; save whole-suite runs for the gate — the machine may be shared with other implementers.
13
13
  4. **The gate — tiered.** Before you hand off, `npx @wemuda/launchrail verify --fast` (the fast gate: `testing.checkCommand`, else the unit command) must exit 0 on your branch. Inside a Ralph dispatch that is your gate: the loop runs it again on the merged tree before pushing the base, and runs the full `npx @wemuda/launchrail verify` (e2e specs included) at its checkpoints — so do not spend your turn on the whole suite; run only the slow test files your change touches (an e2e spec you edited). Outside the loop (single-ticket mode, a PR of your own), the full `npx @wemuda/launchrail verify` must exit 0 before the PR. Never delete, skip, or weaken a test to get there; if a test is genuinely wrong, fix it deliberately and say so in the commit message.
14
- 5. **User-facing behavior, with `modules.browser-testing` enabled:** drive the change in a real browser per the `launch-browser-smoke` skill — a one-off check of what you built, its steps taken from the ticket's acceptance criteria, ending in your handoff's few lines on what you drove and saw. No journeys file, no evidence bundle, no spec written from it; a regression test for anything it finds goes at the cheapest seam that catches it. A smoke you could not drive is a failure, not a pass.
14
+ 5. **User-facing behavior, with `modules.browser-testing` enabled:** drive the change in a real browser per the `launch-browser-smoke` skill — a one-off check of what you built, its steps taken from the ticket's acceptance criteria (and, when the ticket names a design package, the protocol's side-by-side comparison of each covered state against the running prototype at the designed viewport, verdicts recorded in the package's `fidelity.md`), ending in your handoff's few lines on what you drove and saw. No journeys file, no evidence bundle, no spec written from it; a regression test for anything it finds goes at the cheapest seam that catches it. A smoke you could not drive is a failure, not a pass.
15
15
  6. **Self-review:** call the Skill tool with `launch-code-review` on the result and fix what it finds before handing off.
16
- 7. **Commit to the current branch** following the project's commit conventions (Conventional Commits when `.launchrail.yml` says so); the loop squashes your branch onto the base, so also hand it a Conventional Commit title for that squash. Update any artifact the change invalidates (spec, ADR, design note) in the same change.
16
+ 7. **Commit to the current branch** following the project's commit conventions (Conventional Commits when `.launchrail.yml` says so); the loop merges your branch onto the base — your commits are preserved, not squashed — so also hand it a Conventional Commit title for the merge commit. Update any artifact the change invalidates (spec, ADR, design note) in the same change.
17
17
 
18
18
  Done means: the gate is green, the review found nothing unaddressed, the branch is pushed, and the evidence (test output, the smoke's verdict) exists — not that the code "should work".
@@ -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"}
@@ -1,6 +1,6 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { ADR_REGISTRY_PATH, duplicateAdrNumbers, scanAdrs, unindexedAdrs } from "../lib/adr.js";
3
+ import { ADR_REGISTRY_PATH, adrDuplicates, 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,37 @@ 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): filename-level invariants only — record contents
107
- // use the project's own format and are none of doctor's business. Both checks
108
- // are project-doc hygiene, so they warn rather than fail.
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 = duplicateAdrNumbers(adrs);
112
+ const dupes = adrDuplicates(adrs);
112
113
  if (dupes.length === 0) {
113
- add("pass", "adr numbering", `${adrs.length} decision record(s), numbers unique`);
114
+ add("pass", "adr identifiers", `${adrs.length} decision record(s), identifiers unique`);
114
115
  }
115
116
  else {
116
- add("warn", "adr numbering", `number(s) ${dupes.join(", ")} claimed by more than one file — references by number are ambiguous; renumber one of each pair and update its links`);
117
+ const detail = dupes.map((d) => `${d.id} (${d.files.join(", ")})`).join("; ");
118
+ add("warn", "adr identifiers", `${detail} — each id is claimed by more than one file, so every reference by it is ambiguous; give the newer collider a dated \`YYYY-MM-DD-slug.md\` name (dated ids never collide) and update its links`);
117
119
  }
118
120
  if (!existsSync(join(cwd, ADR_REGISTRY_PATH))) {
119
121
  add("warn", "adr registry", `${ADR_REGISTRY_PATH} missing — run \`launchrail sync\` to seed the index`);
120
122
  }
121
123
  else {
122
- const unindexed = unindexedAdrs(readFileSync(join(cwd, ADR_REGISTRY_PATH), "utf8"), adrs);
123
- if (unindexed.length === 0) {
124
- add("pass", "adr registry", "every record indexed");
125
- }
126
- else {
124
+ const registry = readFileSync(join(cwd, ADR_REGISTRY_PATH), "utf8");
125
+ const unindexed = unindexedAdrs(registry, adrs);
126
+ if (unindexed.length > 0) {
127
127
  add("warn", "adr registry", `${unindexed.length} record(s) missing from the index (${unindexed
128
128
  .slice(0, 3)
129
129
  .map((e) => e.file)
130
- .join(", ")}${unindexed.length > 3 ? ", …" : ""}) — add their rows to ${ADR_REGISTRY_PATH}`);
130
+ .join(", ")}${unindexed.length > 3 ? ", …" : ""}) — run \`launchrail adr index\``);
131
+ }
132
+ else if (withRegeneratedIndex(registry, adrs) !== registry) {
133
+ add("warn", "adr registry", `index table out of date — run \`launchrail adr index\` and commit ${ADR_REGISTRY_PATH}`);
134
+ }
135
+ else {
136
+ add("pass", "adr registry", "every record indexed, index current");
131
137
  }
132
138
  }
133
139
  }
@@ -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":"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"}
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,96 @@
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
- /** Four-digit number parsed from the filename — ambiguous when two files share it. */
6
- number: string;
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 number then filename. Read-only.
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
- /** Numbers claimed by more than one record — every reference by number is ambiguous. */
18
- export declare function duplicateAdrNumbers(entries: AdrEntry[]): string[];
29
+ /**
30
+ * Ids (numbers or slugs) claimed by more than one record, each with the files
31
+ * that claim it — every reference by such an id is ambiguous.
32
+ */
33
+ export declare function adrDuplicates(entries: AdrEntry[]): {
34
+ id: string;
35
+ files: string[];
36
+ }[];
19
37
  /** Records whose filename never appears in the registry — rows the index is missing. */
20
38
  export declare function unindexedAdrs(registrySource: string, entries: AdrEntry[]): AdrEntry[];
39
+ type Relation = "supersedes" | "amends" | "extends";
40
+ /**
41
+ * The relation graph declared across the corpus. A record declares what it
42
+ * `supersedes`/`amends`/`extends` in its own `## Status`; legacy records may also
43
+ * carry the reverse (`amended by …`). Both directions feed one graph, keyed by
44
+ * the earlier record's file, so the index can print back-references that no
45
+ * record had to be edited to carry.
46
+ */
47
+ export declare function adrRelations(entries: AdrEntry[]): Map<string, Record<Relation, AdrEntry[]>>;
48
+ /**
49
+ * One record's status cell: its state, the relations it declares, and the
50
+ * back-references derived from later records. Superseded records also name
51
+ * their successor(s), the one fact a reader must not miss.
52
+ */
53
+ export declare function adrStatusCell(entry: AdrEntry, entries: AdrEntry[], graph?: Map<string, Record<Relation, AdrEntry[]>>): string;
54
+ /** The generated index table, markers included. */
55
+ export declare function adrIndexTable(entries: AdrEntry[]): string;
56
+ /**
57
+ * The registry with its index table regenerated in place. Between the markers
58
+ * when they exist; otherwise the first table under `## Index` is replaced and
59
+ * the markers introduced around it (a registry written before the generator
60
+ * migrates on its first run). Null when the registry has neither.
61
+ */
62
+ export declare function withRegeneratedIndex(registrySource: string, entries: AdrEntry[]): string | null;
63
+ /** The seeded ADR template: date-and-slug titled, teaching the forward-declared relation model. */
64
+ export declare const ADR_TEMPLATE = "# Short decision title\n\n## Status\nProposed | Accepted | Superseded by [slug](YYYY-MM-DD-slug.md)\n\nName here what this record supersedes, amends, or extends, linking the earlier record by file (`Accepted \u2014 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.\n\n## Context\nWhat requirement or constraint requires a decision?\n\n## Decision\nWhat was selected?\n\n## Alternatives considered\nWhat realistic alternatives were rejected?\n\n## Consequences\nWhat becomes easier, harder, or constrained?\n\n## Revisit when\nWhat change would justify reconsidering this decision?\n";
65
+ /** The `# ADR-NNNN:`-titled template seeded before the dated-identifier ADR (byte-stable until then). */
66
+ export declare const PRE_DATE_SLUG_ADR_TEMPLATE = "# ADR-NNNN: Short decision title\n\n## Status\nProposed | Accepted | Accepted \u2014 amended by ADR-NNNN | Superseded by ADR-NNNN\n\nWhen a later ADR amends or supersedes this one, update this line and the registry index ([README.md](README.md)) in the same commit.\n\n## Context\nWhat requirement or constraint requires a decision?\n\n## Decision\nWhat was selected?\n\n## Alternatives considered\nWhat realistic alternatives were rejected?\n\n## Consequences\nWhat becomes easier, harder, or constrained?\n\n## Revisit when\nWhat change would justify reconsidering this decision?\n";
67
+ /** The registry's project-owned summary of how records are minted; defers to the managed contract. */
68
+ export declare const ADR_MAINTAINING_SECTION = "## Maintaining this registry\n\n- New ADRs copy [0000-template.md](0000-template.md) to `YYYY-MM-DD-short-slug.md` \u2014 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, and nothing is renumbered.\n- 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.\n- 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 \u2014 that is the one fact a reader of the record alone must not miss.\n- Never delete or rename an ADR once it is referenced; superseded ADRs are historical records other documents link to.\n- The naming and relation mechanics above summarize a contract Launchrail keeps current in the managed workflow instructions (`.launchrail/CLAUDE.generated.md`); if this seeded summary ever drifts from that managed contract, the managed contract is what holds.";
69
+ /**
70
+ * The "Maintaining this registry" section seeded before the dated-identifier ADR —
71
+ * the one that told agents to "take the next free number". Byte-stable from
72
+ * ADR-0031 until that ADR, so `healRegistryMinting` matches it exactly.
73
+ */
74
+ export declare const PRE_DATE_SLUG_MAINTAINING_SECTION = "## Maintaining this registry\n\n- New ADRs copy [0000-template.md](0000-template.md), take the next free number (`NNNN-short-slug.md` \u2014 check both this index and the files on disk), and add their row here **in the same commit**. The shared row turns two branches minting the same number into a visible merge conflict instead of a silent collision.\n- When a new ADR supersedes or amends an earlier one \u2014 including reversing part of the earlier one's context \u2014 update the earlier ADR's `## Status` line and its row here in the same commit.\n- Never delete or renumber an ADR once it is referenced; superseded ADRs are historical records other documents link to.";
75
+ export type MintingGuidanceState = "healed" | "current" | "modified" | "absent";
76
+ /**
77
+ * Correct a registry's minting guidance in place. Returns `healed` (with the
78
+ * rewritten source) only when the section is exactly the pre-date-slug text
79
+ * Launchrail seeded; `current` when it already matches the canonical section;
80
+ * `modified` when a project has edited it (left untouched — it is theirs);
81
+ * `absent` when there is no such section. The heal migration acts only on
82
+ * `healed`; the others are no-ops, which keeps a re-run empty.
83
+ */
84
+ export declare function healRegistryMinting(source: string): {
85
+ state: MintingGuidanceState;
86
+ next: string;
87
+ };
21
88
  /**
22
89
  * The seeded ADR registry. When init/sync adopts a repository that already has
23
- * decision records, the index prefills from them (status Unclassified — only
24
- * the project can know which decisions still stand); a fresh repository gets
25
- * the empty index. Seeded once, then project-owned: the project maintains it.
90
+ * decision records, the index prefills from them; a fresh repository gets the
91
+ * empty index. Seeded once, then project-owned — but the table between the
92
+ * markers is regenerated by `launchrail adr index`, so the project maintains
93
+ * the records and the live picture, never the rows.
26
94
  */
27
95
  export declare function adrRegistryContent(entries: AdrEntry[]): string;
96
+ export {};