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.
- package/dist/assurance/mainpush.js +383 -8
- package/dist/assurance/mainpush.js.map +1 -1
- package/dist/assurance/proofinputs.js +62 -34
- package/dist/assurance/proofinputs.js.map +1 -1
- package/dist/atlas/labels.js +2 -2
- package/dist/atlas/labels.js.map +1 -1
- package/dist/atlas/next.js +81 -18
- package/dist/atlas/next.js.map +1 -1
- package/dist/board/html.js +37 -9
- package/dist/board/html.js.map +1 -1
- package/dist/board/model.js +58 -14
- package/dist/board/model.js.map +1 -1
- package/dist/cli.js +61 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/delta.js +84 -1
- package/dist/commands/delta.js.map +1 -1
- package/dist/commands/doctor.js +53 -9
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/frame.js +13 -1
- package/dist/commands/frame.js.map +1 -1
- package/dist/commands/guide.js +17 -5
- package/dist/commands/guide.js.map +1 -1
- package/dist/commands/next.js +80 -21
- package/dist/commands/next.js.map +1 -1
- package/dist/commands/release.js +950 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/ship.js +18 -2
- package/dist/commands/ship.js.map +1 -1
- package/dist/commands/start.js +5 -2
- package/dist/commands/start.js.map +1 -1
- package/dist/executor.js +7 -0
- package/dist/executor.js.map +1 -1
- package/dist/git.js +27 -0
- package/dist/git.js.map +1 -1
- package/dist/guide.js +206 -33
- package/dist/guide.js.map +1 -1
- package/dist/paths.js +7 -0
- package/dist/paths.js.map +1 -1
- package/dist/planning/pack.js +12 -7
- package/dist/planning/pack.js.map +1 -1
- package/dist/planning/schema.js +17 -1
- package/dist/planning/schema.js.map +1 -1
- package/dist/prepush.js +52 -0
- package/dist/prepush.js.map +1 -1
- package/dist/records/store.js +17 -1
- package/dist/records/store.js.map +1 -1
- package/dist/records/types.js +87 -7
- package/dist/records/types.js.map +1 -1
- package/dist/releases.js +287 -0
- package/dist/releases.js.map +1 -0
- package/dist/render.js +23 -0
- package/dist/render.js.map +1 -1
- package/dist/title.js +69 -0
- package/dist/title.js.map +1 -0
- package/package.json +5 -1
- package/dist/agent-runner.js +0 -656
- package/dist/agent-runner.js.map +0 -1
- package/dist/atlas/packs.js +0 -169
- 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: `
|
|
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\`.
|
|
1746
|
-
|
|
1747
|
-
|
|
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
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
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
|
|
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
|
-
|
|
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":"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"}
|
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":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS;IACT,WAAW;IACX,OAAO;IACP,UAAU;IACV,SAAS;IACT,WAAW;IACX,WAAW;IACX,SAAS;IACT,2EAA2E;IAC3E,cAAc;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
|
package/dist/planning/pack.js
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG5E,SAAS,aAAa,CAAC,KAAe,EAAE,IAAY;IAClD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,eAAe,CAAC,QAA0B;IACjD,MAAM,KAAK,GAAG,aAAa,CACzB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAChB,CAAC,IAAI,EAAE,EAAE,CACP,KAAK,IAAI,CAAC,EAAE,SAAS,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,IAAI,uBAAuB,IAAI,CAAC,SAAS,qBAAqB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,yBAAyB,EAAE,CACvL,EACD,2BAA2B,CAC5B,CAAC;IACF,MAAM,KAAK,GAAG,aAAa,CACzB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,EAC7D,+BAA+B,CAChC,CAAC;IACF,MAAM,OAAO,GAAG,aAAa,CAC3B,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,YAAY,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,EACrG,2BAA2B,CAC5B,CAAC;IACF,MAAM,IAAI,GAAG,aAAa,CACxB,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,QAAQ,MAAM,CAAC,KAAK,cAAc,MAAM,CAAC,KAAK,GAAG,CAAC,EACrG,0BAA0B,CAC3B,CAAC;IACF,MAAM,QAAQ,GACZ,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC5B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,2CAA2C,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,2EAA2E,CAAC;IAEjK,OAAO;;aAEI,QAAQ,CAAC,OAAO,WAAW,QAAQ,CAAC,IAAI;oBACjC,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE;uBAClE,QAAQ,CAAC,UAAU;8BACZ,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,iBAAiB;;;;EAIjF,KAAK;;;;EAIL,KAAK;;;;EAIL,OAAO;;;;EAIP,IAAI;EACJ,QAAQ,EAAE,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO;;;;;;EAMP,IAAI;;;;;iBAKW,CAAC;AAClB,CAAC;AAMD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,OAAO,wBAAwB,QAAQ,CAAC,OAAO;;;;;;;EAO/C,eAAe,CAAC,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/planning/pack.ts"],"names":[],"mappings":"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"}
|
package/dist/planning/schema.js
CHANGED
|
@@ -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
|
-
|
|
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
|
/**
|
package/dist/prepush.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepush.js","sourceRoot":"","sources":["../src/prepush.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"prepush.js","sourceRoot":"","sources":["../src/prepush.ts"],"names":[],"mappings":"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"}
|
package/dist/records/store.js
CHANGED
|
@@ -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`);
|