prismatica 0.2.0 → 0.3.1

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 (59) hide show
  1. package/dist/assurance/mainpush.js +383 -8
  2. package/dist/assurance/mainpush.js.map +1 -1
  3. package/dist/assurance/proofinputs.js +62 -34
  4. package/dist/assurance/proofinputs.js.map +1 -1
  5. package/dist/atlas/labels.js +2 -2
  6. package/dist/atlas/labels.js.map +1 -1
  7. package/dist/atlas/next.js +81 -18
  8. package/dist/atlas/next.js.map +1 -1
  9. package/dist/board/html.js +37 -9
  10. package/dist/board/html.js.map +1 -1
  11. package/dist/board/model.js +58 -14
  12. package/dist/board/model.js.map +1 -1
  13. package/dist/cli.js +61 -6
  14. package/dist/cli.js.map +1 -1
  15. package/dist/commands/delta.js +84 -1
  16. package/dist/commands/delta.js.map +1 -1
  17. package/dist/commands/doctor.js +53 -9
  18. package/dist/commands/doctor.js.map +1 -1
  19. package/dist/commands/frame.js +13 -1
  20. package/dist/commands/frame.js.map +1 -1
  21. package/dist/commands/guide.js +17 -5
  22. package/dist/commands/guide.js.map +1 -1
  23. package/dist/commands/next.js +80 -21
  24. package/dist/commands/next.js.map +1 -1
  25. package/dist/commands/release.js +950 -0
  26. package/dist/commands/release.js.map +1 -0
  27. package/dist/commands/ship.js +18 -2
  28. package/dist/commands/ship.js.map +1 -1
  29. package/dist/commands/start.js +5 -2
  30. package/dist/commands/start.js.map +1 -1
  31. package/dist/executor.js +7 -0
  32. package/dist/executor.js.map +1 -1
  33. package/dist/git.js +27 -0
  34. package/dist/git.js.map +1 -1
  35. package/dist/guide.js +206 -33
  36. package/dist/guide.js.map +1 -1
  37. package/dist/paths.js +7 -0
  38. package/dist/paths.js.map +1 -1
  39. package/dist/planning/pack.js +12 -7
  40. package/dist/planning/pack.js.map +1 -1
  41. package/dist/planning/schema.js +17 -1
  42. package/dist/planning/schema.js.map +1 -1
  43. package/dist/prepush.js +52 -0
  44. package/dist/prepush.js.map +1 -1
  45. package/dist/records/store.js +17 -1
  46. package/dist/records/store.js.map +1 -1
  47. package/dist/records/types.js +87 -7
  48. package/dist/records/types.js.map +1 -1
  49. package/dist/releases.js +287 -0
  50. package/dist/releases.js.map +1 -0
  51. package/dist/render.js +23 -0
  52. package/dist/render.js.map +1 -1
  53. package/dist/title.js +69 -0
  54. package/dist/title.js.map +1 -0
  55. package/package.json +5 -1
  56. package/dist/agent-runner.js +0 -656
  57. package/dist/agent-runner.js.map +0 -1
  58. package/dist/atlas/packs.js +0 -169
  59. package/dist/atlas/packs.js.map +0 -1
package/dist/guide.js CHANGED
@@ -1466,7 +1466,12 @@ longer matches — \`flow list\` shows it as tampered, immediately. Nothing abou
1466
1466
  truth changes silently. Status and evidence are excluded from that fingerprint
1467
1467
  on purpose: flipping "planned" to "works now" or marking a step verified
1468
1468
  should never need a ceremony — the honesty comes from what evidence you can
1469
- actually see next to each step, not from a lock on the whole record.`,
1469
+ actually see next to each step, not from a lock on the whole record.
1470
+
1471
+ While building a change, \`prismatica flow report\` is your honest account of
1472
+ which Flows the diff actually touched — filed before \`check\`, so the reviewer
1473
+ never reads a green check that quietly skipped over an affected Flow. See
1474
+ "prismatica guide check" for the exact command sequence.`,
1470
1475
  },
1471
1476
  {
1472
1477
  id: 'deltas',
@@ -1624,7 +1629,48 @@ change was probably two changes.`,
1624
1629
  {
1625
1630
  id: 'check',
1626
1631
  title: 'Check — proving the work',
1627
- body: ` prismatica check
1632
+ body: `The real sequence is: inspect the complete working-tree impact on your Flows
1633
+ -> resolve any required Flow Report entries -> commit everything check needs,
1634
+ together -> run one full check -> review. The Flow Report belongs BEFORE
1635
+ check — filing it afterward just buys a second check.
1636
+
1637
+ **First, if the change touches a mapped Flow:**
1638
+
1639
+ prismatica flow report --auto
1640
+ # writes one entry per Flow your diff provably touched, naming the
1641
+ # touchpoints that matched and the files that matched them
1642
+
1643
+ \`--auto\` records only what a file diff can establish. It never says a test
1644
+ passed — it runs before check, so nothing has run yet — and it never says
1645
+ behaviour is unchanged, because no list of filenames can establish that. It
1646
+ leaves two things for you, and prints the exact command for each, last, where
1647
+ you cannot miss them: a Flow that merely SHARES a mechanic with one you
1648
+ touched, and a Flow with no mapped touchpoints at all, which no diff can rule
1649
+ in or out. It never overwrites an entry you wrote.
1650
+
1651
+ Answer the rest in your own words:
1652
+
1653
+ prismatica flow report --flow log-a-session \\
1654
+ --status unchanged --reason "only the internal helper moved; the user
1655
+ sees exactly the same screens in the same order"
1656
+
1657
+ \`unchanged\` on a Flow your diff touched is a real, accepted answer — that is
1658
+ what it is FOR. Prismatica cannot decide whether behaviour changed and does
1659
+ not pretend to; it only decides who has to answer. If that Flow's own mapped
1660
+ test files also changed in your diff, the report records that fact beside
1661
+ your reason so the reviewer weighs both — context, never a veto.
1662
+
1663
+ File it BEFORE check and commit it WITH your other check inputs — a report
1664
+ sitting uncommitted proves nothing, and check refuses to run while it is
1665
+ uncommitted, exactly as it refuses uncommitted code.
1666
+ \`prismatica next\` already knows this order: on a change whose diff touches a
1667
+ mapped Flow, it recommends \`flow report --auto\` before it ever recommends
1668
+ check, and names the report file alongside your code in the one checkpoint
1669
+ commit it prints.
1670
+
1671
+ **Then, once every check input is committed:**
1672
+
1673
+ prismatica check
1628
1674
 
1629
1675
  runs everything, identically to how the gate will run it later. It never asks
1630
1676
  the agent whether the work is done — it runs your tools and reads the results:
@@ -1642,7 +1688,7 @@ agents need retries in this repo.
1642
1688
 
1643
1689
  Failing is normal and cheap here. The whole point is that a change fails at
1644
1690
  check, on your machine, in minutes — not at the gate, or worse, in front of
1645
- users.`,
1691
+ users. See "prismatica guide review" for what happens once check passes.`,
1646
1692
  },
1647
1693
  {
1648
1694
  id: 'review',
@@ -1742,35 +1788,15 @@ change's own records — committing the ledger line and evidence \`check\` just
1742
1788
  produced is expected and changes nothing. Commit code, contract terms, the
1743
1789
  pack, a flow report, a delta, a proposal or a canonical record afterwards and
1744
1790
  the check no longer describes this commit, so \`review\` refuses and \`next\`
1745
- sends you back to \`check\`. File your flow report BEFORE the check, not after.
1746
- A check recorded before this binding existed, or a ledger line written after it
1747
- that cannot be read, both fail closed the same way: run \`check\` again.
1748
-
1749
- **Filing that flow report is one command, and it will not lie for you.**
1750
-
1751
- prismatica flow report --auto
1752
- # writes one entry per Flow your diff provably touched, naming the
1753
- # touchpoints that matched and the files that matched them
1754
-
1755
- \`--auto\` records only what a file diff can establish. It never says a test
1756
- passed — it runs before \`check\`, so nothing has run yet — and it never says
1757
- behaviour is unchanged, because no list of filenames can establish that. It
1758
- leaves two things for you, and prints the exact command for each, last, where
1759
- you cannot miss them: a Flow that merely SHARES a mechanic with one you
1760
- touched, and a Flow with no mapped touchpoints at all, which no diff can rule
1761
- in or out. It never overwrites an entry you wrote.
1791
+ sends you back to \`check\`. A check recorded before this binding existed, or a
1792
+ ledger line written after it that cannot be read, both fail closed the same
1793
+ way: run \`check\` again.
1762
1794
 
1763
- Then answer the rest in your own words:
1764
-
1765
- prismatica flow report --flow log-a-session \\
1766
- --status unchanged --reason "only the internal helper moved; the user
1767
- sees exactly the same screens in the same order"
1768
-
1769
- \`unchanged\` on a Flow your diff touched is a real, accepted answer — that is
1770
- what it is FOR. Prismatica cannot decide whether behaviour changed and does not
1771
- pretend to; it only decides who has to answer. If that Flow's own mapped test
1772
- files also changed in your diff, the report records that fact beside your
1773
- reason so the reviewer weighs both. It is context, never a veto.
1795
+ **Filing the flow report is check's own job, not review's** — see "prismatica
1796
+ guide check" for the full command sequence (\`flow report --auto\`, then
1797
+ answering what it leaves for you). By the time you are reviewing, it should
1798
+ already be committed alongside the code it explains; if it is not, \`check\`
1799
+ will have refused to run in the first place.
1774
1800
 
1775
1801
  For heavy changes, your signed decision follows the seal:
1776
1802
 
@@ -1905,6 +1931,94 @@ fills the boundary in once, from the moment you re-run it — never earlier,
1905
1931
  and never moved again on any later run. Nothing is ever backfilled, waived,
1906
1932
  deleted or overwritten: this only decides who gets ASKED for verification, and
1907
1933
  a real passport, once written, is never touched by any of this.`,
1934
+ },
1935
+ {
1936
+ id: 'release',
1937
+ title: 'Release — an owner-only, deterministic npm release',
1938
+ body: `Releasing already-governed code is its own small, deterministic transaction —
1939
+ never another AI-planned "version bump change". Release cadence is independent
1940
+ of change cadence: prepare a release whenever you decide the code on main is
1941
+ ready to go out, on your own schedule.
1942
+
1943
+ prismatica release prepare minor
1944
+ prismatica release prepare patch
1945
+ prismatica release prepare major
1946
+ prismatica release prepare --version 1.4.0
1947
+ # frames a light-tier contract, runs the real npm version transformation,
1948
+ # writes a Flow report only if the diff genuinely touches a mapped flow,
1949
+ # checkpoints, checks, records the check's own outputs, then ships the
1950
+ # PR through the ordinary gate — exactly like any other change
1951
+
1952
+ Every step re-derives whether it already happened from Git, the registry and
1953
+ records — never a stored counter — so running the same command again after an
1954
+ interruption resumes it rather than repeating or duplicating anything: no
1955
+ second commit, no double-counted check, no second PR.
1956
+
1957
+ Prepare fails closed before it starts unless: main is clean and current, the
1958
+ registry is reachable, the target version is free — absent from BOTH the
1959
+ public version listing AND npm's staged candidates, since a staged version can
1960
+ still be approved public later — no published version is newer than main, and
1961
+ no \`v<target>\` tag already exists. A registry \`latest\` that sits behind main
1962
+ is reported, never refused — that is a deliberate rollback, and a corrective
1963
+ release must never be dead-ended by it.
1964
+
1965
+ An unfinished release — merged, but never published — is closed without
1966
+ publishing it:
1967
+
1968
+ prismatica release prepare --supersede
1969
+ # writes a write-once record, outcome "superseded", once the version is
1970
+ # confirmed absent from both the public and staged registry listings
1971
+
1972
+ If the version is still staged, supersede refuses and names the exact stage id
1973
+ and your two honest choices: continue that release with \`release publish\`, or
1974
+ \`npm stage reject <stage-id>\` (owner-interactive, npm's own 2FA) and rerun.
1975
+
1976
+ After merge, gate, and close — \`next\` tells you exactly this:
1977
+
1978
+ prismatica release publish
1979
+ # a resumable state machine: verifies the merged diff is semantically
1980
+ # the pure version bump, creates and pushes the immutable tag, dispatches
1981
+ # the release workflow on main, downloads and re-proves the staged
1982
+ # tarball offline, shows you the evidence, then hands the one
1983
+ # consequential step to npm's own interactive 2FA prompt
1984
+
1985
+ Rerun \`release publish\` at any point and it re-derives exactly where things
1986
+ stand — tagged but not dispatched, or dispatched: it identifies the release
1987
+ workflow's own run (matched by its \`run-name\`, never "whichever ran most
1988
+ recently") and observes it rather than firing a duplicate — continuing once a
1989
+ staged candidate appears, or refusing with that run's own recovery if it
1990
+ genuinely failed or a bounded wait finds nothing. Staged but the wrong
1991
+ dist-tag (refused, with the same reject-and-rerun recovery), staged and
1992
+ awaiting your approval, or approved with the record not yet written — and
1993
+ either continues the one release in flight or refuses with the exact recovery.
1994
+ Once published and recorded, it refuses again: "already live and recorded".
1995
+
1996
+ A release tag is immutable — never moved, repointed, or reused. A deterministic
1997
+ defect discovered in the release workflow AFTER the tag exists is fixed by an
1998
+ ordinary gated change on main and re-dispatched against the SAME untouched tag,
1999
+ never by touching the tag itself.
2000
+
2001
+ **One-time owner setup — after this feature merges, before your first
2002
+ \`release publish\`:** on the package's npmjs.com access page, add a GitHub
2003
+ Actions trusted publisher naming this exact repo and
2004
+ \`.github/workflows/prismatica-release.yml\`, restricted to \`npm stage publish\`
2005
+ only — never anything broader — and set the package's publishing access to
2006
+ require 2FA and disallow tokens. \`release publish\` fails closed with these
2007
+ exact steps if staging never appears.
2008
+
2009
+ **What Prismatica can actually guarantee, stated precisely:** no long-lived
2010
+ CI/automation publish credential is required or stored by Prismatica or this
2011
+ repository. CI staging authenticates with short-lived OIDC, restricted to a
2012
+ stage-only trusted publisher. \`npm stage approve\`/\`npm stage reject\` remain
2013
+ owner-interactive npm actions behind your own 2FA — Prismatica never sees,
2014
+ stores or approves anything on your behalf. Your local npm authentication
2015
+ exists outside the repository and is never inspected, copied or managed.
2016
+
2017
+ A release record (\`.prismatica/releases/<version>.md\`) is write-once, exactly
2018
+ like a passport — never edited, never deleted; \`superseded\` is always a new,
2019
+ honest record, never a rewrite of an earlier one. What is left for you to do
2020
+ from a given release, if anything, is recorded as recovery ROUTES — plain
2021
+ descriptions of an available path, never a decision Prismatica makes for you.`,
1908
2022
  },
1909
2023
  {
1910
2024
  id: 'board',
@@ -1929,6 +2043,9 @@ Four areas, in the order they deserve your attention:
1929
2043
  eligible for \`ship --verify\`. Legacy (release proof not tracked) is a
1930
2044
  contract created before this repo adopted release tracking — never queued,
1931
2045
  never called shipped or verified (see "prismatica guide releasetracking").
2046
+ Alongside these, npm release records (\`prismatica release prepare\`/
2047
+ \`release publish\` — see "prismatica guide release") each show their
2048
+ outcome — published or superseded — and any recovery routes left open.
1932
2049
  Below that, the plans you confirmed: an Intent is the plan \`prismatica start\`
1933
2050
  recorded when you confirmed it, its success checks listed as the outcomes it
1934
2051
  set out to achieve, never as a progress bar. Nothing in Prismatica advances
@@ -1989,8 +2106,28 @@ is governed, hash-only if it is map-only).`,
1989
2106
  export function guideTopicIds() {
1990
2107
  return GUIDE_TOPICS.map((topic) => topic.id);
1991
2108
  }
2109
+ /**
2110
+ * Natural alternate spellings that resolve to a canonical topic id — the id
2111
+ * itself, and every `prismatica guide <id>` a reader may already have
2112
+ * bookmarked or typed in a script, never changes. This is the ONE place a new
2113
+ * alias is added; `resolveGuideTopicId`, the CLI's `[topic]` help text and the
2114
+ * unknown-topic recovery all derive from it and from `GUIDE_TOPICS` alone, so
2115
+ * none of the three can drift from the other two the way three independently
2116
+ * maintained lists once did.
2117
+ */
2118
+ export const GUIDE_TOPIC_ALIASES = {
2119
+ flow: 'flows',
2120
+ delta: 'deltas',
2121
+ releases: 'release',
2122
+ };
2123
+ /** The canonical topic id `id` resolves to (through an alias, or as itself), or `null` if it names no real topic. */
2124
+ export function resolveGuideTopicId(id) {
2125
+ const canonical = GUIDE_TOPIC_ALIASES[id] ?? id;
2126
+ return guideTopicIds().includes(canonical) ? canonical : null;
2127
+ }
1992
2128
  export function renderGuideTopic(id) {
1993
- const topic = GUIDE_TOPICS.find((entry) => entry.id === id);
2129
+ const canonical = resolveGuideTopicId(id);
2130
+ const topic = canonical ? GUIDE_TOPICS.find((entry) => entry.id === canonical) : undefined;
1994
2131
  if (!topic) {
1995
2132
  return null;
1996
2133
  }
@@ -2016,9 +2153,13 @@ export const SCENARIO_TOPIC_IDS = [
2016
2153
  function tocLine(topic) {
2017
2154
  return `- ${topic.title.toLowerCase().split(' — ')[0]}: prismatica guide ${topic.id}`;
2018
2155
  }
2019
- export function renderFullGuide() {
2156
+ function tocSections() {
2020
2157
  const scenarios = GUIDE_TOPICS.filter((topic) => SCENARIO_TOPIC_IDS.includes(topic.id));
2021
2158
  const reference = GUIDE_TOPICS.filter((topic) => !SCENARIO_TOPIC_IDS.includes(topic.id));
2159
+ return { scenarios, reference };
2160
+ }
2161
+ export function renderFullGuide() {
2162
+ const { scenarios, reference } = tocSections();
2022
2163
  return `# The Prismatica guide
2023
2164
 
2024
2165
  The agent builds. Prismatica inspects. Nothing ships until the intent, the
@@ -2035,4 +2176,36 @@ ${reference.map(tocLine).join('\n')}
2035
2176
  ${GUIDE_TOPICS.map((topic) => `## ${topic.title}\n\n${topic.body}`).join('\n\n')}
2036
2177
  `;
2037
2178
  }
2179
+ /**
2180
+ * The CONCISE entry point: bare `prismatica guide`. Scenario and reference
2181
+ * navigation only, no topic bodies — `prismatica guide all` is the complete
2182
+ * manual, byte-for-byte `renderFullGuide()`, which stays what
2183
+ * `docs/USER_GUIDE.md` is generated from.
2184
+ */
2185
+ export function renderGuideIndex() {
2186
+ const { scenarios, reference } = tocSections();
2187
+ return `# The Prismatica guide
2188
+
2189
+ The agent builds. Prismatica inspects. Nothing ships until the intent, the
2190
+ proof, and the owner agree.
2191
+
2192
+ Start from what you are trying to do:
2193
+
2194
+ ${scenarios.map(tocLine).join('\n')}
2195
+
2196
+ Then the reference, when you want the detail behind a step:
2197
+
2198
+ ${reference.map(tocLine).join('\n')}
2199
+
2200
+ Run \`prismatica guide <topic>\` to read one of those, or
2201
+ \`prismatica guide all\` for the complete manual on one page.
2202
+ `;
2203
+ }
2204
+ /** The CLI's `[topic]` help text — every real topic id, `all`, and every alias, derived from the one model. */
2205
+ export function guideTopicHelpText() {
2206
+ const ids = ['all', ...guideTopicIds()];
2207
+ const aliases = Object.keys(GUIDE_TOPIC_ALIASES);
2208
+ const aliasNote = aliases.length > 0 ? ` (aliases: ${aliases.join(', ')})` : '';
2209
+ return `${ids.join(' | ')}${aliasNote}`;
2210
+ }
2038
2211
  //# sourceMappingURL=guide.js.map
package/dist/guide.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"guide.js","sourceRoot":"","sources":["../src/guide.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guide.js","sourceRoot":"","sources":["../src/guide.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EAqDkE;KACzE;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,wCAAwC;QAC/C,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAkHe;KACtB;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,yDAAyD;QAChE,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA0FqB;KAC5B;IACD;QACE,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,+CAA+C;QACtD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAsCoC;KAC3C;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,mDAAmD;QAC1D,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CA6BmC;KAC1C;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,kDAAkD;QACzD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0DAoCgD;KACvD;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,sDAAsD;QAC7D,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAiCsB;KAC7B;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,8DAA8D;QACrE,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAsCuB;KAC9B;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,0DAA0D;QACjE,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EAsDkE;KACzE;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,sDAAsD;QAC7D,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA0CqB;KAC5B;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,0DAA0D;QACjE,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uEAiG6D;KACpE;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,gEAAgE;QACvE,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCA6B4B;KACnC;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,2DAA2D;QAClE,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEAqD8D;KACrE;IACD;QACE,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,8CAA8C;QACrD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iEA6CuD;KAC9D;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,mDAAmD;QAC1D,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEA4HsD;KAC7D;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,wEAAwE;QAC/E,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA8NiB;KACxB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,sDAAsD;QAC7D,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qEAuC2D;KAClE;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,0CAA0C;QACjD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAyDG;KACV;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,kDAAkD;QACzD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CA0GqC;KAC5C;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,uCAAuC;QAC9C,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yDAmE+C;KACtD;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,iDAAiD;QACxD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;0DAwBgD;KACvD;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,4CAA4C;QACnD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA0CoB;KAC3B;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,kCAAkC;QACzC,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAwEuB;KAC9B;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,0BAA0B;QACjC,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yEA2D+D;KACtE;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,8CAA8C;QACrD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DA0IqD;KAC5D;IACD;QACE,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,4DAA4D;QACnE,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA4DQ;KACf;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,yEAAyE;QAChF,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEA6BsD;KAC7D;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,oDAAoD;QAC3D,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EAmFoE;KAC3E;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,mCAAmC;QAC1C,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EA2CoE;KAC3E;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,iDAAiD;QACxD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA6BiC;KACxC;CACF,CAAC;AAEF,MAAM,UAAU,aAAa;IAC3B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,SAAS;CACpB,CAAC;AAEF,qHAAqH;AACrH,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,MAAM,SAAS,GAAG,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,aAAa,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,MAAM,SAAS,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC;AAChD,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU;IACV,eAAe;IACf,YAAY;IACZ,SAAS;IACT,gBAAgB;IAChB,YAAY;IACZ,cAAc;IACd,SAAS;IACT,OAAO;IACP,OAAO;IACP,WAAW;IACX,aAAa;IACb,SAAS;IACT,aAAa;CACL,CAAC;AAEX,SAAS,OAAO,CAAC,KAAiB;IAChC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,KAAK,CAAC,EAAE,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7C,kBAAwC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAC7D,CAAC;IACF,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CACnC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAE,kBAAwC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CACzE,CAAC;IACF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,CAAC;IAC/C,OAAO;;;;;;;EAOP,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAIjC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;EAEjC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;CAC/E,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,CAAC;IAC/C,OAAO;;;;;;;EAOP,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAIjC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;CAIlC,CAAC;AACF,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,EAAE,CAAC;AAC1C,CAAC"}
package/dist/paths.js CHANGED
@@ -13,6 +13,7 @@ export const RECORD_SUBDIRS = [
13
13
  'reports',
14
14
  // `abandon` writes here, on the change's own retained branch — never main.
15
15
  'abandonments',
16
+ 'releases',
16
17
  ];
17
18
  export function prismaticaDir(repoRoot) {
18
19
  return path.join(repoRoot, PRISMATICA_DIR);
@@ -93,6 +94,12 @@ export const ATLAS_CANONICAL_GLOBS = [`${PRISMATICA_DIR}/flows/*.md`, `${PRISMAT
93
94
  export function gateWorkflowPath(repoRoot) {
94
95
  return path.join(repoRoot, '.github', 'workflows', 'prismatica-gate.yml');
95
96
  }
97
+ export function releaseWorkflowPath(repoRoot) {
98
+ return path.join(repoRoot, '.github', 'workflows', 'prismatica-release.yml');
99
+ }
100
+ export function releasesDir(repoRoot) {
101
+ return path.join(prismaticaDir(repoRoot), 'releases');
102
+ }
96
103
  /**
97
104
  * Per-user home for Prismatica itself (signing key, repo registry).
98
105
  * Never a source of truth for any repo's records.
package/dist/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
@@ -102,10 +102,15 @@ ${snapshotSection(snapshot)}
102
102
  2. **Agree who will build it, and put that in \`builder\`** (\`claude\`,
103
103
  \`codex\`, or whatever the owner names). Do not assume it is you — planning
104
104
  and building are different jobs, and a fresh session usually builds.
105
- 3. Read the real code routes, handlers, components, tests before deciding
105
+ 3. **\`summary\` is the change's short, owner-facing title not a summary of
106
+ the plan.** It becomes the GitHub issue title and the change's identity
107
+ everywhere it is shown, so put the detailed explanation in \`request\`,
108
+ \`rationale\`, \`currentBehaviour\` and \`desiredBehaviour\` instead; the
109
+ answer schema states its exact shape.
110
+ 4. Read the real code — routes, handlers, components, tests — before deciding
106
111
  anything. Do not reason from the Flow text above alone; it describes intent,
107
112
  the code is what actually happens.
108
- 4. Decide which of three kinds this is, and be honest about it:
113
+ 5. Decide which of three kinds this is, and be honest about it:
109
114
  - \`existing-flow\` — it changes how a Flow listed above behaves. Name that
110
115
  Flow's exact id and return a complete Delta.
111
116
  - \`new-flow\` — it is a genuinely new user journey that no Flow above
@@ -113,18 +118,18 @@ ${snapshotSection(snapshot)}
113
118
  - \`technical\` — refactors, build, tooling, tests, dependencies. Return
114
119
  neither a Delta nor a Planned Flow. **Do not invent a product Flow to make
115
120
  technical work look like a feature.**
116
- 5. Propose the narrowest scope that can actually do the job. Every glob must be
121
+ 6. Propose the narrowest scope that can actually do the job. Every glob must be
117
122
  relative to the repository root. Absolute paths, \`..\`, and anything
118
123
  matching a secret file will be rejected.
119
- 6. Answer the risk questions honestly. Your answers can RAISE the risk tier;
124
+ 7. Answer the risk questions honestly. Your answers can RAISE the risk tier;
120
125
  they can never lower it. Deterministic path rules are applied on top and win.
121
- 7. Give at least two acceptance checks. Each needs a real test file path
126
+ 8. Give at least two acceptance checks. Each needs a real test file path
122
127
  (\`src/thing.test.ts\`) or \`manual:OWNER\` — a description with no way to
123
128
  prove it is not a check.
124
- 8. List in \`docsDelta\` every documentation file this change must update. The
129
+ 9. List in \`docsDelta\` every documentation file this change must update. The
125
130
  check engine requires each of them to have actually changed, so name the
126
131
  ones that genuinely go stale — not every file in \`docs/\`.
127
- 9. Label honestly: \`assumptions\` and \`possibleConflicts\` are your reading of
132
+ 10. Label honestly: \`assumptions\` and \`possibleConflicts\` are your reading of
128
133
  the situation. They are shown to the owner as **advisory**, and no
129
134
  deterministic decision is made from them.
130
135
 
@@ -1 +1 @@
1
- {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/planning/pack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/planning/pack.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@
27
27
  import { z } from 'zod';
28
28
  import { RECORD_ID_PATTERN } from '../ids.js';
29
29
  import { BUILDER_NAME_PATTERN, FlowMechanicsSchema, FlowPresentationSchema, FlowStatusSchema, FlowTruthSchema, } from '../records/types.js';
30
+ import { CHANGE_TITLE_MAX, TITLE_PATTERN } from '../title.js';
30
31
  import { PlanningSnapshotSchema } from './snapshot.js';
31
32
  /**
32
33
  * An id proposed by an AGENT. Every record id becomes a filename under
@@ -149,7 +150,22 @@ export const StartProposalSchema = z.strictObject({
149
150
  * parameter and never touches this field.
150
151
  */
151
152
  snapshot: PlanningSnapshotSchema,
152
- summary: z.string().min(1),
153
+ /**
154
+ * The change's concise, single-line, owner-facing IDENTITY — never a
155
+ * summary of the plan. It becomes `contract.title`, the GitHub issue
156
+ * title, and the Intent title verbatim, so its shape is enforced HERE, on
157
+ * the authoritative schema `startAnswerJsonSchema()` is derived from — see
158
+ * `src/title.ts` for the shared invariant every other title-consuming
159
+ * surface clamps against instead of refusing.
160
+ */
161
+ summary: z
162
+ .string()
163
+ .min(1)
164
+ .max(CHANGE_TITLE_MAX)
165
+ .regex(TITLE_PATTERN)
166
+ .describe('A concise, single-line, owner-facing change title (at most ' +
167
+ CHANGE_TITLE_MAX +
168
+ " characters) — the change's identity, NOT a summary of the plan. Put the detailed explanation in `request`, `rationale`, `currentBehaviour` and `desiredBehaviour` instead."),
153
169
  rationale: z.string().min(1),
154
170
  kind: ProposalKindSchema,
155
171
  /** Required for `existing-flow`; forbidden otherwise (checked in validate.ts). */
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/planning/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/planning/schema.ts"],"names":[],"mappings":"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"}
package/dist/prepush.js CHANGED
@@ -52,6 +52,7 @@ import { resolveChangeHome } from './change.js';
52
52
  import { runCheckEngine } from './checkengine.js';
53
53
  import * as git from './git.js';
54
54
  import { contractExists, readContract } from './records/store.js';
55
+ import { parseSemver } from './releases.js';
55
56
  const ZERO_SHA = '0'.repeat(40);
56
57
  const REFS_HEADS = 'refs/heads/';
57
58
  /** Parses git's real pre-push stdin protocol: one ref update per line, NUL/whitespace separated. */
@@ -121,6 +122,53 @@ async function verifyMainBranchUpdate(mainRoot, config, update) {
121
122
  function branchFromRef(ref) {
122
123
  return ref.startsWith(REFS_HEADS) ? ref.slice(REFS_HEADS.length) : null;
123
124
  }
125
+ const REFS_TAGS_V = 'refs/tags/v';
126
+ /** The version a `v<semver>` tag ref names, or null for any other ref (including a non-semver tag). */
127
+ function releaseTagVersion(ref) {
128
+ if (!ref.startsWith(REFS_TAGS_V)) {
129
+ return null;
130
+ }
131
+ const version = ref.slice(REFS_TAGS_V.length);
132
+ return parseSemver(version) ? version : null;
133
+ }
134
+ /**
135
+ * A release tag is immutable — never moved, repointed, deleted or reused —
136
+ * and must bind to a commit that is genuinely on main with a matching
137
+ * committed manifest version, or `release publish`'s exact-artifact binding
138
+ * is broken before it starts.
139
+ */
140
+ async function verifyReleaseTagUpdate(mainRoot, update, version) {
141
+ if (update.localSha === ZERO_SHA) {
142
+ return {
143
+ ok: false,
144
+ reason: `refusing: deleting release tag "v${version}" — release tags are immutable and never deleted`,
145
+ };
146
+ }
147
+ const mainHead = await git.revParse(mainRoot, 'HEAD');
148
+ if (!(await git.isAncestor(mainRoot, update.localSha, mainHead))) {
149
+ return {
150
+ ok: false,
151
+ reason: `refusing: v${version}'s commit (${update.localSha.slice(0, 12)}) is not on main`,
152
+ };
153
+ }
154
+ const manifestText = await git.showFile(mainRoot, update.localSha, 'package.json');
155
+ let manifestVersion;
156
+ try {
157
+ manifestVersion = manifestText
158
+ ? JSON.parse(manifestText).version
159
+ : undefined;
160
+ }
161
+ catch {
162
+ manifestVersion = undefined;
163
+ }
164
+ if (manifestVersion !== version) {
165
+ return {
166
+ ok: false,
167
+ reason: `refusing: v${version}'s tagged commit has package.json version "${manifestVersion ?? '(unreadable)'}", not "${version}"`,
168
+ };
169
+ }
170
+ return { ok: true, reason: `release tag v${version} verified against its own commit's package.json` };
171
+ }
124
172
  /**
125
173
  * Branch identity is always read from `remoteRef`, never `localRef`:
126
174
  * `localRef` is the literal string `(delete)` for a deletion, and `ship`'s
@@ -150,6 +198,10 @@ async function verifyRefUpdate(cwd, mainRoot, config, update) {
150
198
  }
151
199
  return verifyChangeBranchUpdate(cwd, config, update, branch.slice('change/'.length));
152
200
  }
201
+ const releaseVersion = releaseTagVersion(update.remoteRef);
202
+ if (releaseVersion) {
203
+ return verifyReleaseTagUpdate(mainRoot, update, releaseVersion);
204
+ }
153
205
  return { ok: true, reason: `not a Prismatica-managed branch (${update.localRef}) — nothing to verify` };
154
206
  }
155
207
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"prepush.js","sourceRoot":"","sources":["../src/prepush.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepush.js","sourceRoot":"","sources":["../src/prepush.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ import matter from 'gray-matter';
11
11
  import * as YAML from 'yaml';
12
12
  import { UserError } from '../errors.js';
13
13
  import { PRISMATICA_DIR, prismaticaDir } from '../paths.js';
14
- import { AbandonmentSchema, ContractSchema, DecisionSchema, FlowReportSchema, IntentSchema, PackSchema, PassportSchema, ReviewSchema, } from './types.js';
14
+ import { AbandonmentSchema, ContractSchema, DecisionSchema, FlowReportSchema, IntentSchema, PackSchema, PassportSchema, ReleaseSchema, ReviewSchema, } from './types.js';
15
15
  const grayMatterOptions = {
16
16
  engines: {
17
17
  yaml: {
@@ -186,6 +186,22 @@ export function writePassport(repoRoot, passport, body) {
186
186
  export function readPassport(repoRoot, id) {
187
187
  return readMarkdownRecord(passportPath(repoRoot, id), PassportSchema);
188
188
  }
189
+ // ── Releases (releases/<version>.md) ──────────────────────────────────────
190
+ export function releasePath(repoRoot, version) {
191
+ return path.join(recordDir(repoRoot, 'releases'), `${version}.md`);
192
+ }
193
+ export function releaseExists(repoRoot, version) {
194
+ return fs.existsSync(releasePath(repoRoot, version));
195
+ }
196
+ export function writeRelease(repoRoot, release, body) {
197
+ writeMarkdownRecord(releasePath(repoRoot, release.version), ReleaseSchema.parse(release), body);
198
+ }
199
+ export function readRelease(repoRoot, version) {
200
+ return readMarkdownRecord(releasePath(repoRoot, version), ReleaseSchema);
201
+ }
202
+ export function listReleaseVersions(repoRoot) {
203
+ return listIds(repoRoot, 'releases', '.md');
204
+ }
189
205
  // ── Flow Report (reports/<contractId>.md) — rides the lane, Model B ──────────
190
206
  export function abandonmentPath(repoRoot, id) {
191
207
  return path.join(recordDir(repoRoot, 'abandonments'), `${id}.md`);