@aotter/mantle 0.0.11-alpha.28 → 0.0.11-alpha.30
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.
|
@@ -1,24 +1,29 @@
|
|
|
1
|
-
# ADR-0016: Site semantic layer — `AGENTS.md` +
|
|
1
|
+
# ADR-0016: Site semantic layer — `AGENTS.md` + launch state
|
|
2
2
|
|
|
3
3
|
## Status
|
|
4
4
|
|
|
5
|
-
Accepted (slimmed 2026-05-12 per Epic #116; letter
|
|
5
|
+
Accepted (slimmed 2026-05-12 per Epic #116; `mantle/site.md` letter
|
|
6
|
+
surface suspended 2026-06-19 and removed from first-run scaffolds).
|
|
6
7
|
|
|
7
8
|
## Decision
|
|
8
9
|
|
|
9
|
-
Every agent-authored mantle project carries
|
|
10
|
+
Every agent-authored mantle project carries a small cross-tool entry file
|
|
11
|
+
and deterministic launch state at fixed paths:
|
|
10
12
|
|
|
11
13
|
| File | Audience | Size budget | Format |
|
|
12
14
|
|---|---|---|---|
|
|
13
15
|
| `AGENTS.md` | Any cross-tool agent harness (Codex / Cursor / Aider / Amp / Factory / Claude Code) | ~30 lines | Plain markdown |
|
|
14
|
-
|
|
|
16
|
+
| `.mantle/launch-state.json` | Install/provision context captured by landing or direct CLI flags | Small JSON record | JSON |
|
|
15
17
|
|
|
16
|
-
`AGENTS.md` answers "what is this and how do I run it."
|
|
18
|
+
`AGENTS.md` answers "what is this and how do I run it." Launch state
|
|
19
|
+
carries install-critical facts such as archetype, brand, description,
|
|
20
|
+
locales, selected features, GitHub owner/admin login, starter ref, and
|
|
21
|
+
repo target.
|
|
17
22
|
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
The earlier `mantle/site.md` semantic/letter surface and `## welcome`
|
|
24
|
+
5-card letter surface are suspended for the first-run path. Provisioning
|
|
25
|
+
must not block on prose completion; a first deploy should be possible
|
|
26
|
+
from deterministic scaffold state.
|
|
22
27
|
|
|
23
28
|
## Placeholder macros
|
|
24
29
|
|
|
@@ -40,18 +45,21 @@ New macros must be added here, to `_common/*.template`, and to the substitution
|
|
|
40
45
|
|
|
41
46
|
## Update rules
|
|
42
47
|
|
|
43
|
-
- **Mantle on return**: read
|
|
44
|
-
-
|
|
45
|
-
- **
|
|
48
|
+
- **Mantle on return**: read `AGENTS.md`, `.mantle/launch-state.json`,
|
|
49
|
+
and repo-local skills before changing code.
|
|
50
|
+
- **provision on deploy**: rewrite `AGENTS.md` `Public site:`
|
|
51
|
+
placeholder → real Workers URL. Single commit at end of provision.
|
|
52
|
+
- **No hidden letter gate.** Prose may be added later, but first deploy
|
|
53
|
+
only depends on deterministic scaffold state and provider configuration.
|
|
46
54
|
|
|
47
55
|
## Cross-tool compatibility
|
|
48
56
|
|
|
49
|
-
`AGENTS.md` lives at repo root because that is where the AGENTS.md ecosystem (`agents.md`) looks.
|
|
57
|
+
`AGENTS.md` lives at repo root because that is where the AGENTS.md ecosystem (`agents.md`) looks. `.mantle/` is for Mantle-owned non-secret state.
|
|
50
58
|
|
|
51
59
|
## Implementation
|
|
52
60
|
|
|
53
|
-
- Templates: `mantle-starters/_common/AGENTS.md.template
|
|
61
|
+
- Templates: `mantle-starters/_common/AGENTS.md.template`.
|
|
54
62
|
- Substitution: `packages/create-mantle/src/placeholder.ts`.
|
|
55
63
|
- Install handoff: `skills/install/SKILL.md` describes deterministic scaffold validation and the short post-substitution notes fill.
|
|
56
|
-
- Provision update: `skills/provision/SKILL.md` describes the `
|
|
64
|
+
- Provision update: `skills/provision/SKILL.md` describes the `AGENTS.md` public-site rewrite after deploy.
|
|
57
65
|
- Theme overlay merge (Epic #116): `themes/<theme-key>/` overlay applies after the archetype starter and may touch `src/theme/` — never these two files.
|
package/docs/adr/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Records of *why* mantle ended up shaped this way. The numbering preserves POC AD
|
|
|
16
16
|
| [0012](0012-views-as-public-rest.md) | Views auto-expose `GET /api/views/<name>` as the public REST read surface. Schemas never get a public REST endpoint. Filter comparison values accept `{ $param: <name> }`; `?page=&show=` reserved for pagination. | Accepted (new) |
|
|
17
17
|
| [0013](0013-agent-provisioned-consumer-projects.md) | Agent-provisioned consumer projects: website prompt → Skill → npm packages → starter setup → first-run provision/seed → owner/MCP handoff. | Accepted (new) |
|
|
18
18
|
| [0014](0014-auth-better-auth-and-multi-tenant-mcp.md) | Better Auth for staff sign-in (D1 session); the MCP OAuth surface carves out to `@cloudflare/workers-oauth-provider` (KV grant store) at top level. The two meet at `/oauth/authorize` where the consent handler reads the Better Auth session. MCP splits into `/mcp/staff` (write, admin-role) and `/mcp` (read, any signed-in). Scope advertised as `["mcp"]` (single non-colon) because claude.ai rejects colon-shaped scopes. Auth port disappears; runtime takes Better Auth instance directly. See § "Amendment 2026-05-15". | Accepted + amended |
|
|
19
|
-
| [0016](0016-site-semantic-layer.md) | Site semantic layer: `AGENTS.md` (cross-tool entry
|
|
19
|
+
| [0016](0016-site-semantic-layer.md) | Site semantic layer: `AGENTS.md` (cross-tool entry) + `.mantle/launch-state.json` (deterministic install context). The older `mantle/site.md` letter surface is suspended from first-run scaffolds. | Accepted (slimmed) |
|
|
20
20
|
|
|
21
21
|
## Reading order
|
|
22
22
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aotter/mantle",
|
|
3
|
-
"version": "0.0.11-alpha.
|
|
3
|
+
"version": "0.0.11-alpha.30",
|
|
4
4
|
"description": "Umbrella entry for @aotter/mantle. Adopters install this one package and import from subpaths: /spec, /runtime, /cloudflare, /admin-ui. Sub-packages remain individually installable on npm for tooling / alt-adapter authors. The Netlify adapter ships as a private workspace stub in v0.1 — its subpath will be added when the impl lands in v0.2.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://mantle.tools/",
|
|
@@ -47,10 +47,10 @@
|
|
|
47
47
|
"README.md"
|
|
48
48
|
],
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@aotter/mantle-admin-ui": "0.0.11-alpha.
|
|
51
|
-
"@aotter/mantle-
|
|
52
|
-
"@aotter/mantle-
|
|
53
|
-
"@aotter/mantle-
|
|
50
|
+
"@aotter/mantle-admin-ui": "0.0.11-alpha.30",
|
|
51
|
+
"@aotter/mantle-cloudflare": "0.0.11-alpha.30",
|
|
52
|
+
"@aotter/mantle-runtime": "0.0.11-alpha.30",
|
|
53
|
+
"@aotter/mantle-spec": "0.0.11-alpha.30"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"@cloudflare/workers-oauth-provider": "^0.7.0",
|
package/skills/install/SKILL.md
CHANGED
|
@@ -49,7 +49,6 @@ After `create-mantle` runs, the scaffold's ground truth lives in:
|
|
|
49
49
|
| `src/.mantle/generated.*.ts` | Scaffolder-owned feature glue |
|
|
50
50
|
| `.mantle/features.json` | Selected feature overlays |
|
|
51
51
|
| `.mantle/launch-state.json` | Non-secret launch choices from landing |
|
|
52
|
-
| `mantle/site.md` | Site semantic layer |
|
|
53
52
|
| `AGENTS.md` | Cross-tool agent entry |
|
|
54
53
|
|
|
55
54
|
## Accepted Inputs
|
|
@@ -214,7 +213,7 @@ from the landing answers or the user's explicit request:
|
|
|
214
213
|
- delete an unused manifest;
|
|
215
214
|
- add one clearly requested field to an existing Schema;
|
|
216
215
|
- correct site defaults in `src/mantleConfig.ts`;
|
|
217
|
-
- fix a typo in `
|
|
216
|
+
- fix a typo in `AGENTS.md`.
|
|
218
217
|
|
|
219
218
|
Run `pnpm validate` after every edit. Route larger feature work to
|
|
220
219
|
`mantle:development` after production provision.
|
|
@@ -222,7 +221,7 @@ Run `pnpm validate` after every edit. Route larger feature work to
|
|
|
222
221
|
## Don't
|
|
223
222
|
|
|
224
223
|
- Don't resurrect the manual interview / prompt-composition harness.
|
|
225
|
-
- Don't block first deploy on polishing
|
|
224
|
+
- Don't block first deploy on polishing prose or writing a site letter.
|
|
226
225
|
- Don't ask for a Cloudflare API token in the base first-run path.
|
|
227
226
|
- Don't commit provider secrets.
|
|
228
227
|
- Don't use `127.0.0.1` in OAuth callback examples; use `localhost`
|
|
@@ -38,8 +38,7 @@ expected result, and what value the user should report back.
|
|
|
38
38
|
`ADMIN_GITHUB_LOGIN`, and the correct Worker name.
|
|
39
39
|
- Worker secrets are set: `GITHUB_CLIENT_SECRET`,
|
|
40
40
|
`BETTER_AUTH_SECRET`, and optional feature/provider secrets.
|
|
41
|
-
- `
|
|
42
|
-
site:` point at the deployed Worker URL.
|
|
41
|
+
- `AGENTS.md` `Public site:` points at the deployed Worker URL.
|
|
43
42
|
- Staff MCP and browser admin sign-in are ready to test.
|
|
44
43
|
- Operator setup URL is ready to hand to the owner:
|
|
45
44
|
`https://mantle.tools/connect?site=<url-encoded-worker-url>`.
|
|
@@ -136,8 +135,8 @@ unset GITHUB_CLIENT_SECRET
|
|
|
136
135
|
8. Commit and push generated non-secret outputs:
|
|
137
136
|
|
|
138
137
|
```bash
|
|
139
|
-
git status --short -- wrangler.toml src/mantleConfig.ts
|
|
140
|
-
git add wrangler.toml src/mantleConfig.ts
|
|
138
|
+
git status --short -- wrangler.toml src/mantleConfig.ts AGENTS.md
|
|
139
|
+
git add wrangler.toml src/mantleConfig.ts AGENTS.md
|
|
141
140
|
git commit -m "mantle: wire production provision"
|
|
142
141
|
git push
|
|
143
142
|
```
|
|
@@ -183,8 +182,8 @@ language:
|
|
|
183
182
|
- What changed locally and what was committed.
|
|
184
183
|
- Any intentionally deferred feature setup.
|
|
185
184
|
|
|
186
|
-
Point future agents at `
|
|
187
|
-
`.agent/skills/` directory.
|
|
185
|
+
Point future agents at `AGENTS.md`, `.mantle/launch-state.json`, and the
|
|
186
|
+
repo-local `.agent/skills/` directory.
|
|
188
187
|
|
|
189
188
|
## Diagnostics
|
|
190
189
|
|