@aotter/mantle 0.1.3-alpha.1 → 0.1.3-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,11 +12,11 @@ where agents write config and the runtime carries the complexity.
12
12
  Cold start for a new application is the pinned skill, not a bare npm add:
13
13
 
14
14
  ```sh
15
- npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install
15
+ npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install
16
16
  ```
17
17
 
18
18
  To depend on this package in an existing project, pin the exact version
19
- from `package.json` (currently `0.1.3-alpha.1`):
19
+ from `package.json` (currently `0.1.3-alpha.2`):
20
20
 
21
21
  ```bash
22
22
  npm install @aotter/mantle
@@ -197,7 +197,7 @@ internals or rebuilding Mantle's adapters.
197
197
  Cold start from GitHub or a marketplace host:
198
198
 
199
199
  ```sh
200
- npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install
200
+ npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install
201
201
  ```
202
202
 
203
203
  That skill interviews, pins this package, then uses the CLI and the
@@ -215,25 +215,25 @@ Install the Mantle Core skill bundle before authoring or maintaining a
215
215
  consumer application. The canonical command is:
216
216
 
217
217
  ```sh
218
- npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install
218
+ npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install
219
219
  ```
220
220
 
221
221
  Claude Code and Codex can install the same pinned plugin, then run that skill:
222
222
 
223
223
  ```bash
224
224
  # Claude Code
225
- /plugin marketplace add aotter/mantle@v0.1.3-alpha.1
225
+ /plugin marketplace add aotter/mantle@v0.1.3-alpha.2
226
226
  /plugin install mantle@mantle
227
227
 
228
228
  # Codex
229
- codex plugin marketplace add aotter/mantle --ref v0.1.3-alpha.1
229
+ codex plugin marketplace add aotter/mantle --ref v0.1.3-alpha.2
230
230
  codex plugin add mantle@mantle
231
231
  ```
232
232
 
233
233
  Cursor and VS Code Copilot can auto-discover the GitHub repo through
234
234
  `.cursor-plugin/plugin.json` and `.copilot-plugin/plugin.json` after the repo
235
235
  is cloned or opened. Still start from the `npx skills add` sentence (or open
236
- `skills/install/SKILL.md` at tag `v0.1.3-alpha.1`). Do not point a versioned consumer
236
+ `skills/install/SKILL.md` at tag `v0.1.3-alpha.2`). Do not point a versioned consumer
237
237
  at a mutable branch.
238
238
 
239
239
  ## Marketplace capability installs
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- export declare const MANTLE_OVERVIEW = "mantle \u2014 compile manifests into a RuntimePlan and typed binding\n\nOverview\n Optional surfaces \u2014 take only what you need. Admin is opt-in. You can ship a\n complete service with no Dev UI, no visitor frontend, and no extra packages.\n\n Minimal \u2014 Spec + generate\n validate + generate compile manifests into a sealed plan and typed binding.\n Embed that binding in an existing host. No Admin, no visitor UI.\n\n Runtime / adapter\n Bind Runtime through an adapter (Cloudflare Worker, Bun, Vercel, or yours).\n HTTP Views, MCP, and Auth work without Admin.\n See docs/examples/host-minimal-worker or\n node_modules/@aotter/mantle/docs/examples/host-minimal-worker.\n\n Opt-in \u2014 Admin / Dev UI\n Add @aotter/mantle-admin and @aotter/mantle-admin-ui only when humans need\n a console. Then re-run generate, bind wrangler ASSETS, and open\n /admin/sign-in (local email OTP via ConsoleEmailSender).\n See docs/examples/host-local-admin-otp or\n node_modules/@aotter/mantle/docs/examples/host-local-admin-otp.\n\n Further (ask the subcommand for details)\n skills project version-matched agent instructions\n emit-openapi OpenAPI 3.1 from HTTP Triggers and Views\n mantle-harness measure indexes and live HTTP (separate binary)\n\nUsage: mantle <subcommand> [options]\n\nSubcommands:\n generate Compile manifests into a typed runtime binding\n validate Static manifest and handler-source validation\n skills Project version-matched Core skills\n emit-openapi Emit OpenAPI 3.1 from Triggers and Views\n\nDocumentation:\n Handbook: node_modules/@aotter/mantle/docs/handbook/ (or docs/handbook/)\n Online: https://mantle.tools/\n Install skill: npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install\n";
2
+ export declare const MANTLE_OVERVIEW = "mantle \u2014 compile manifests into a RuntimePlan and typed binding\n\nOverview\n Optional surfaces \u2014 take only what you need. Admin is opt-in. You can ship a\n complete service with no Dev UI, no visitor frontend, and no extra packages.\n\n Minimal \u2014 Spec + generate\n validate + generate compile manifests into a sealed plan and typed binding.\n Embed that binding in an existing host. No Admin, no visitor UI.\n\n Runtime / adapter\n Bind Runtime through an adapter (Cloudflare Worker, Bun, Vercel, or yours).\n HTTP Views, MCP, and Auth work without Admin.\n See docs/examples/host-minimal-worker or\n node_modules/@aotter/mantle/docs/examples/host-minimal-worker.\n\n Opt-in \u2014 Admin / Dev UI\n Add @aotter/mantle-admin and @aotter/mantle-admin-ui only when humans need\n a console. Then re-run generate, bind wrangler ASSETS, and open\n /admin/sign-in (local email OTP via ConsoleEmailSender).\n See docs/examples/host-local-admin-otp or\n node_modules/@aotter/mantle/docs/examples/host-local-admin-otp.\n\n Further (ask the subcommand for details)\n skills project version-matched agent instructions\n emit-openapi OpenAPI 3.1 from HTTP Triggers and Views\n mantle-harness measure indexes and live HTTP (separate binary)\n\nUsage: mantle <subcommand> [options]\n\nSubcommands:\n generate Compile manifests into a typed runtime binding\n validate Static manifest and handler-source validation\n skills Project version-matched Core skills\n emit-openapi Emit OpenAPI 3.1 from Triggers and Views\n\nDocumentation:\n Handbook: node_modules/@aotter/mantle/docs/handbook/ (or docs/handbook/)\n Online: https://mantle.tools/\n Install skill: npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install\n";
3
3
  //# sourceMappingURL=main.d.ts.map
package/dist/cli/main.js CHANGED
@@ -64,7 +64,7 @@ Subcommands:
64
64
  Documentation:
65
65
  Handbook: node_modules/@aotter/mantle/docs/handbook/ (or docs/handbook/)
66
66
  Online: https://mantle.tools/
67
- Install skill: npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install
67
+ Install skill: npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install
68
68
  `;
69
69
  main().then((code) => {
70
70
  process.exitCode = code;
@@ -3,7 +3,7 @@
3
3
  Cold start from GitHub or a marketplace host is one pinned skill:
4
4
 
5
5
  ```sh
6
- npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install
6
+ npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install
7
7
  ```
8
8
 
9
9
  Copy one block into a coding agent after that skill is present. Paths below
@@ -20,7 +20,7 @@ manifests exist. Admin is opt-in.
20
20
  ```text
21
21
  Interview me about the service: host, who uses it, whether humans need a
22
22
  Dev UI, and whether we only embed Spec/Runtime. If the install skill is
23
- missing, run npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install. Read the
23
+ missing, run npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install. Read the
24
24
  install skill and npx --no-install mantle --help, then
25
25
  handbook/start/project-and-cli.md.
26
26
  Use examples/README.md as the examples index; copy builtin-* Manifests only
@@ -95,10 +95,10 @@ For Claude Code, the same bundle is installable from the plugin marketplace at t
95
95
 
96
96
  ```sh
97
97
  # Canonical
98
- npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install
98
+ npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install
99
99
 
100
100
  # Claude Code — two separate prompts
101
- /plugin marketplace add aotter/mantle@v0.1.3-alpha.1
101
+ /plugin marketplace add aotter/mantle@v0.1.3-alpha.2
102
102
  /plugin install mantle@mantle
103
103
  ```
104
104
 
@@ -8,7 +8,7 @@ This page describes a directly authored Mantle project: which files are yours, w
8
8
  Cold start from GitHub or a marketplace host is the pinned install skill, not this page:
9
9
 
10
10
  ```sh
11
- npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install
11
+ npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install
12
12
  ```
13
13
 
14
14
  ## You own the project
@@ -100,18 +100,18 @@ Run the harness after any change to a Schema index, View filter or ordering, or
100
100
 
101
101
  Install the version-matched plugin bundle in the agent host. Cold start uses
102
102
  the published pin; an already-installed project uses the exact version from
103
- `package.json` (currently `0.1.3-alpha.1`):
103
+ `package.json` (currently `0.1.3-alpha.2`):
104
104
 
105
105
  ```sh
106
106
  # Canonical
107
- npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install
107
+ npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install
108
108
 
109
109
  # Claude Code — two separate prompts
110
- /plugin marketplace add aotter/mantle@v0.1.3-alpha.1
110
+ /plugin marketplace add aotter/mantle@v0.1.3-alpha.2
111
111
  /plugin install mantle@mantle
112
112
 
113
113
  # Codex
114
- codex plugin marketplace add aotter/mantle --ref v0.1.3-alpha.1
114
+ codex plugin marketplace add aotter/mantle --ref v0.1.3-alpha.2
115
115
  codex plugin add mantle@mantle
116
116
  ```
117
117
 
@@ -15,9 +15,9 @@ No task implicitly authorizes publication; no manual package/tag writer exists.
15
15
  |---|---|---|
16
16
  | Reviewed source; unused version | Core source/packed-consumer gates, then immutable Core tag | Exact canonical merged PR SHA and version required |
17
17
  | Tag exists; registry candidates partial | Existing npm/GPR publication steps | Verify existing artifact identity; publish missing versions only |
18
- | Registry candidates verified | Public-registry reference consumer gate | No mutation; failure leaves public channels unchanged |
19
- | Consumer passes | Monotonic npm/GPR channel promotion | Same version is a no-op; older runs cannot move a channel backward |
20
- | Channels promoted/preserved newer | GitHub release step | Existing release identity or fail |
18
+ | Registry candidates verified | Public-registry reference consumer gate | No mutation; failure leaves public channels and `mantle-release` unchanged |
19
+ | Consumer passes | That registry's promote step: monotonic channel add, then `dist-tag rm` of `mantle-release` only | Same version is a no-op; older runs cannot move a channel backward. Removal runs only after that package's promote loop, and only when `mantle-release` points at this version. A missing tag is a no-op. A tag pointing at another version is left for that version's promote step. `alpha` / `beta` / `rc` / `latest` are never removed |
20
+ | Channels promoted or preserved, and the temp tag cleared or left | GitHub release step | Existing release identity or fail |
21
21
 
22
22
  The public-registry gate uses a disposable copy of the directly authored
23
23
  `docs/examples/host-minimal-worker` reference, installs the exact candidate, then
@@ -39,9 +39,41 @@ foundational blocker returns to the state table and the user for a scope
39
39
  decision instead of starting another local redesign loop.
40
40
 
41
41
  Invariants: immutable versions/tags retain their identity; registry integrity
42
- and the published-consumer gate precede public channel promotion; retries
43
- cannot move channels backward. No downstream mutation, unpublish or rollback
44
- is introduced. The runnable release-order check guards these transitions.
42
+ and the published-consumer gate precede public channel promotion and any
43
+ removal of `mantle-release` by the release controller; retries cannot move
44
+ channels backward. No downstream mutation, unpublish or rollback is
45
+ introduced. The runnable release-order check guards these transitions.
46
+
47
+ Mutation boundaries during a release: `Publish to npmjs` and `Mirror to
48
+ GitHub Packages` may attach `mantle-release` while publishing a version.
49
+ `Promote npmjs channel tags` is the only release step that moves npmjs
50
+ channels or removes that tag for the version being released. `Promote
51
+ GitHub Packages channel tags` is the only release step that does the same
52
+ for GitHub Packages. Recovery of a partial release reruns that same
53
+ controller and version. It does not call the cleanup workflow.
54
+
55
+ The cleanup workflow is a separate writer for one case the controller
56
+ cannot cover: a release commit that predates temp-tag removal still leaves
57
+ `mantle-release` behind, and a personal npm token that is `read-write` on
58
+ `npm access` can still receive 403 on dist-tag DELETE.
59
+ `.github/workflows/remove-mantle-release-dist-tag.yml` uses the Actions
60
+ `NPM_TOKEN` and `GITHUB_TOKEN`. It is not a release controller and not a
61
+ recovery path.
62
+
63
+ | State | Sole next writer | Retry / invariant |
64
+ |---|---|---|
65
+ | Leftover `mantle-release` after `alpha`, `beta`, `rc`, or `latest` already points at that version | `remove-mantle-release-dist-tag`, only when `confirm` is `remove-mantle-release` | Missing tag is a no-op. Only `mantle-release` is removed. Before and after dist-tags are printed and compared; every other tag is unchanged |
66
+ | `mantle-release` points at a version no consumer channel has | No deletion | The job fails and leaves the tag. Channel moves stay on the release promote step |
67
+ | Confirm string is anything else | No registry call | The job fails before reading or editing tags |
68
+
69
+ It shares the `release-controller` concurrency group with
70
+ `cancel-in-progress: false`, so it waits out an in-progress release instead
71
+ of deleting `mantle-release` between publish and channel promotion. After
72
+ this file is on `develop`:
73
+
74
+ ```sh
75
+ gh workflow run remove-mantle-release-dist-tag --ref develop -f confirm=remove-mantle-release
76
+ ```
45
77
 
46
78
  ## Branches and channels
47
79
 
@@ -63,6 +95,10 @@ is introduced. The runnable release-order check guards these transitions.
63
95
  approval, resolved threads and a current-base `Typecheck + tests` check.
64
96
  - Stable is the only release that moves `latest`. A prerelease channel keeps
65
97
  its last version when a later stable publishes.
98
+ - Publish uses `--tag mantle-release`, so publication does not move
99
+ `alpha`, `beta`, `rc`, or `latest`. After the public-registry consumer
100
+ gate, each registry's promote step moves the real channel and then removes
101
+ `mantle-release` when that tag points at this version.
66
102
 
67
103
  ## Prepare and run
68
104
 
@@ -176,7 +212,8 @@ registries. Existing artifacts on retry must have matching integrity.
176
212
 
177
213
  Completion requires the Core tag SHA, all eleven npmjs/GPR packages, exact
178
214
  integrity, no workspace dependencies, a passing public-registry Worker gate,
179
- correct channel tags and the GitHub release. Retain run links and gate evidence.
215
+ correct channel tags, no `mantle-release` tag left on this version, and the
216
+ GitHub release. Retain run links and gate evidence.
180
217
  This does not prove stable production soak or upgrade safety; the version's
181
218
  release-gate issue owns those acceptance requirements. An agent acceptance run
182
219
  uses only the version-matched authoring instructions, not an SDK checkout or
@@ -6,7 +6,7 @@ Runtime. This Spec-only path is allowed by
6
6
  [ADR-0019](adr/0019-sealed-manifest-runtime-pipeline.md), not a new adapter,
7
7
  manifest grammar, or fork of Core.
8
8
 
9
- This recipe targets `0.1.3-alpha.1`. Pin the package, record the tested version, and
9
+ This recipe targets `0.1.3-alpha.2`. Pin the package, record the tested version, and
10
10
  rerun compatibility checks when upgrading.
11
11
 
12
12
  ## What stays with the host
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aotter/mantle",
3
- "version": "0.1.3-alpha.1",
3
+ "version": "0.1.3-alpha.2",
4
4
  "description": "Embeddable Mantle Core umbrella with Spec and Runtime; Web, Admin, Auth, Bun, Vercel, Cloudflare, and Admin UI are optional peer packages.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://mantle.tools/",
@@ -83,8 +83,8 @@
83
83
  "README.md"
84
84
  ],
85
85
  "dependencies": {
86
- "@aotter/mantle-runtime": "0.1.3-alpha.1",
87
- "@aotter/mantle-spec": "0.1.3-alpha.1"
86
+ "@aotter/mantle-runtime": "0.1.3-alpha.2",
87
+ "@aotter/mantle-spec": "0.1.3-alpha.2"
88
88
  },
89
89
  "peerDependencies": {
90
90
  "aws4fetch": "^1.0.20",
@@ -92,13 +92,13 @@
92
92
  "hono": "^4.12.0",
93
93
  "@libsql/client": "^0.17.4",
94
94
  "zod": "^4.5.0",
95
- "@aotter/mantle-admin": "0.1.3-alpha.1",
96
- "@aotter/mantle-auth": "0.1.3-alpha.1",
97
- "@aotter/mantle-vercel": "0.1.3-alpha.1",
98
- "@aotter/mantle-bun": "0.1.3-alpha.1",
99
- "@aotter/mantle-web": "0.1.3-alpha.1",
100
- "@aotter/mantle-cloudflare": "0.1.3-alpha.1",
101
- "@aotter/mantle-admin-ui": "0.1.3-alpha.1"
95
+ "@aotter/mantle-auth": "0.1.3-alpha.2",
96
+ "@aotter/mantle-admin": "0.1.3-alpha.2",
97
+ "@aotter/mantle-cloudflare": "0.1.3-alpha.2",
98
+ "@aotter/mantle-admin-ui": "0.1.3-alpha.2",
99
+ "@aotter/mantle-bun": "0.1.3-alpha.2",
100
+ "@aotter/mantle-web": "0.1.3-alpha.2",
101
+ "@aotter/mantle-vercel": "0.1.3-alpha.2"
102
102
  },
103
103
  "peerDependenciesMeta": {
104
104
  "@aotter/mantle-admin": {
@@ -144,13 +144,13 @@
144
144
  "typescript": "^6.0.3",
145
145
  "vitest": "^4.1.11",
146
146
  "zod": "^4.5.4",
147
- "@aotter/mantle-admin": "0.1.3-alpha.1",
148
- "@aotter/mantle-bun": "0.1.3-alpha.1",
149
- "@aotter/mantle-auth": "0.1.3-alpha.1",
150
- "@aotter/mantle-admin-ui": "0.1.3-alpha.1",
151
- "@aotter/mantle-cloudflare": "0.1.3-alpha.1",
152
- "@aotter/mantle-vercel": "0.1.3-alpha.1",
153
- "@aotter/mantle-web": "0.1.3-alpha.1"
147
+ "@aotter/mantle-admin": "0.1.3-alpha.2",
148
+ "@aotter/mantle-auth": "0.1.3-alpha.2",
149
+ "@aotter/mantle-bun": "0.1.3-alpha.2",
150
+ "@aotter/mantle-admin-ui": "0.1.3-alpha.2",
151
+ "@aotter/mantle-web": "0.1.3-alpha.2",
152
+ "@aotter/mantle-cloudflare": "0.1.3-alpha.2",
153
+ "@aotter/mantle-vercel": "0.1.3-alpha.2"
154
154
  },
155
155
  "engines": {
156
156
  "node": ">=22"
package/skills/README.md CHANGED
@@ -62,16 +62,16 @@ Cold start is the pinned install skill. Other marketplace hosts are pointers
62
62
  to the same pin:
63
63
 
64
64
  ```sh
65
- npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install
65
+ npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install
66
66
  ```
67
67
 
68
68
  ```bash
69
69
  # Claude Code — two separate prompts
70
- /plugin marketplace add aotter/mantle@v0.1.3-alpha.1
70
+ /plugin marketplace add aotter/mantle@v0.1.3-alpha.2
71
71
  /plugin install mantle@mantle
72
72
 
73
73
  # Codex
74
- codex plugin marketplace add aotter/mantle --ref v0.1.3-alpha.1
74
+ codex plugin marketplace add aotter/mantle --ref v0.1.3-alpha.2
75
75
  codex plugin add mantle@mantle
76
76
  ```
77
77
 
@@ -97,7 +97,7 @@ package. Two audiences, two artifacts.
97
97
 
98
98
  ## Discoverability
99
99
 
100
- The skills target ADR-0007's "AI as primary author" thesis: agents reach these files by URL when the user invokes them by intent ("install mantle", "develop my Mantle site", "deploy"). Official cold start is `npx skills add aotter/mantle@v0.1.3-alpha.1 --skill install`. Point the agent at tag `v0.1.3-alpha.1` or pass the version-matched markdown content directly.
100
+ The skills target ADR-0007's "AI as primary author" thesis: agents reach these files by URL when the user invokes them by intent ("install mantle", "develop my Mantle site", "deploy"). Official cold start is `npx skills add aotter/mantle@v0.1.3-alpha.2 --skill install`. Point the agent at tag `v0.1.3-alpha.2` or pass the version-matched markdown content directly.
101
101
 
102
102
  ## Conventions
103
103