docs(website): record Phase 2 PR 7 — the client chunk's delivery contract
MODULE_API.md
- 3.1 gains the four normative constraints PR 7 settled: the static root is
the entry's directory (an entry in the module root is rejected), the mount
sits behind the module's state guard with no-cache, the script tag is
injected before </body> so core's bundle runs first, and core renders on
DOMContentLoaded with a readyState === 'complete' check
- 2.1: client.entry must be in a subdirectory; present-but-empty is rejected
- 3.4: AdminPage struck from the UI kit — core has no such component
- 7.7 (new): the browser smoke, and the timing bug no test in this repo can
see. Every test passed against a build that did not work in a browser
MODULE_SYSTEM.md
- 2.6 step 3 amended to the </body> injection point
- 2.7 records PR 7's four decisions and what verified them; 1-7 of 9 done
BACKEND_DESIGN.md
- /modules is the fourth filesystem-conditional static mount outside the
route manifest, with its root, guard and cache policy stated
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -735,9 +735,16 @@ slashes from generated path keys — see *Regenerating the spec* in the website
|
||||
domain split makes that necessary.
|
||||
|
||||
Scope: the manifest keeps `/api/**` and `/.well-known/**` from the public app plus everything on the
|
||||
internal listener. The SPA catch-all, `/uploads` and `/brand` are filesystem-conditional static
|
||||
mounts — not API contract, and including them would make the output depend on whether CI had built
|
||||
the client.
|
||||
internal listener. The SPA catch-all, `/uploads`, `/brand` and `/modules` are filesystem-conditional
|
||||
static mounts — not API contract, and including them would make the output depend on whether CI had
|
||||
built the client, or on which modules happened to be on the volume of the machine that generated it.
|
||||
|
||||
`/modules/<id>/` is the last of those and the newest: an installed module's prebuilt client chunk,
|
||||
served from the directory its `client.entry` sits in and never from the module root, behind the
|
||||
module's own state guard (`503` when it failed to start, `404` when disabled) and with
|
||||
`Cache-Control: no-cache`, because Vite's library build emits an unhashed `entry.js`. Anything else
|
||||
under `/modules` is a `404` rather than the SPA shell. The full contract is
|
||||
[`MODULE_API.md`](MODULE_API.md) §3.1.
|
||||
|
||||
A third generated file, `server/routes.guards.json`, is a **review aid and not a contract**: per route,
|
||||
the middleware handler count plus the *named* middleware on its mount chain. It exists because a
|
||||
|
||||
Reference in New Issue
Block a user