Decisions
Some of Arcature’s shapes are surprising enough to be worth a written record.
Each one states the decision, the context that forced it, and the cost paid.
They live in
docs/decisions/
in the repository.
- Arcature publishes no npm package.
Applications use the official
@inertiajs/*adapters. Everything the Rust side hands the browser travels as generated.tsfiles in the application’s own tree, not through a framework runtime. - The CSRF cookie is
XSRF-TOKEN, not__Host-csrf. axios hard-codes those names, so the server moves to meet the client rather than making every application write a shim. - Exactly one TCP port, in development as well as production.
Vite runs in
middlewareModeover IPC and binds no port of its own. - Layer order is a written contract. The pipeline composes in a fixed, documented order, not in builder call order.
- There is no hidden registry.
No
inventory, nolinkme, noTypeIdmap, no thread-locals. All metadata is&'staticconst data emitted by macros and named by code you wrote. - The generated TypeScript stays derived.
resources/js/generated/is written byarc typegen, never committed, and never imported by the scaffold itself — so the type-saferoute()helper is opt-in rather than on by default.