- docs/examples/web-app: Product (@unique name, backlink orders) / Order (ref Product) as @table classes; handlers as Handler classes — ListProducts (ordered query -> JSON array), ShowProduct (unique-index probe, 404), CreateProduct (checked json.decode -> 400; @unique trap -> 409), CreateOrder (FK insert), DeleteProduct (FK restrict trap -> 409); Auth middleware reads WA_TOKEN. Entry validates port + token honestly. - The [deps] KEY is the module name `use` imports: hyphens are not identifier characters, so the app keys the dep `framework` while the repository keeps its long name (recorded in the manifest comment). - driver fix (real gap the chain exposed): a dependency's INTERNAL `use` paths are written against its own root (`use http` inside the framework) but compile under `<depname>/...` — compile_image now prefixes dep files' use paths with the dep name (stdlib namespaces stay bare; a path already starting with the dep name is untouched). Verified end to end through the full chain (temp git remote of the framework, file:// substituted, fetch -> lock -> build -> serve): 401 without the token; [] empty list; 201 create; 409 duplicate (@unique); 400 malformed json; list/show payloads exact; 404 unknown product; 201 order; 409 delete-while-referenced (FK restrict) with the server still serving; SIGTERM clean; the product survives a process restart (WAL replay). Gates: woc-test 540/0, oop-e2e 88/0, deps-accept 8/0. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
19 lines
961 B
TOML
19 lines
961 B
TOML
name = "web-app"
|
|
version = "0.1.0"
|
|
description = "Storefront sample: consumes writeonce-framework through [deps]; @table persistence; iteration 16's acceptance workload"
|
|
|
|
[runtime]
|
|
wo = ">= 0.1"
|
|
|
|
# No [build] runtime pinned (portable): an installed woc self-locates wovm;
|
|
# the in-repo gate passes WO_RUNTIME (log-watcher's precedent).
|
|
|
|
# The framework is a real dependency, never a relative path — extraction of
|
|
# the framework to its own repository changes only this URL. The acceptance
|
|
# gate (scripts/web-app-accept.sh) substitutes a run-time file:// remote
|
|
# built from docs/examples/writeonce-framework, so CI never needs the
|
|
# network and this repo never carries .wo-deps/wo.lock artifacts.
|
|
# The [deps] KEY is the module name `use` imports (hyphens are not identifier
|
|
# characters, so the key is `framework` while the repository keeps its name).
|
|
[deps]
|
|
framework = { git = "https://github.com/shoneyj/writeonce-framework", rev = "v0.1.0" }
|