# Amboras evidence
generated: 2026-09-05T16:09:07+00:00
host: edward booted: 2026-08-16 23:20:22
commit: ca21202f6db3dc228c2613d1d1a21961491b9041 (2026-09-05T15:53:24+00:00 gates.sh: Gate 5 counts products for every product_grid variant)
working tree: 15 uncommitted change(s); origin/main: ca21202
## bin/gates.sh (the seven build-brief gates + Wave 2 checks)
== Gate 1 infra
PASS psql connects
PASS redis PING=PONG
PASS pg+redis loopback only
== Gate 2 medusa
PASS admin UI /app HTTP 200
PASS store API product: Medusa Shorts
== Gate 3 spec-service
PASS create tenant gate-probe HTTP 201 (201 new / 409 exists: one probe tenant, never one per run)
PASS v1 round-trips canonically identical
PASS v2 live (live=2), v1 unchanged
== Gate 4 renderer
PASS a:
Northwind Goods — Everyday things, made well / b: VOLTLINE — Training apparel differ
PASS all six block types render on a
PASS real Medusa products on a (4 cards)
== Gate 5 agent
PASS newest successful agent build: orbit-books (5 products)
PASS storefront renders 5 products (any variant), palette vars=3, images=1
== Gate 6 exposure
PASS public console asks for auth (HTTP 401)
PASS public storefront orbit-books HTTP 200
PASS medusa admin NOT reachable off-box (got '000')
== Gate 7 persistence
PASS 4 units enabled=4 active=4, linger=yes
PASS compose restart policy unless-stopped x2
== Wave 2 (layout variants · testimonial integrity · revision)
PASS legacy social_proof renders the sample-content marker on a (block=1 text=2)
PASS ethiopia and orbit-books home skeletons differ
ethiopia: hero/split > product_grid/ledger > pull_quote/banner > rich_text/note
orbit-books: offer_bar/strip > hero/full_bleed > product_grid/ledger > pull_quote/banner > faq/plain
PASS no invented attributions on the two agent stores
PASS reviews endpoint answers HTTP 200
PASS newest revision: ethiopia v3 -> v4, base still readable (HTTP 200)
(variant exhaustiveness is a build-time property: run bin/probe-variant-exhaustiveness.sh)
GATES: 23 passed, 0 failed
exit=0
## bin/probe-variant-exhaustiveness.sh (an unimplemented layout variant must fail the renderer build)
PASS unimplemented variant fails the renderer typecheck:
src/components/blocks/Hero.tsx(57,26): error TS2345: Argument of type '"unimplemented_probe"' is not assignable to parameter of type 'never'.
exit=0
## platform.tenant_live (live set: join table with weights, not a single pointer)
Table "platform.tenant_live"
Column | Type | Collation | Nullable | Default
-----------+--------------+-----------+----------+---------
tenant_id | uuid | | not null |
spec_id | uuid | | not null |
weight | numeric(6,4) | | not null | 1.0000
Indexes:
"tenant_live_tenant_id_spec_id_pk" PRIMARY KEY, btree (tenant_id, spec_id)
Foreign-key constraints:
"tenant_live_spec_id_store_specs_id_fk" FOREIGN KEY (spec_id) REFERENCES platform.store_specs(id)
"tenant_live_tenant_id_tenants_id_fk" FOREIGN KEY (tenant_id) REFERENCES platform.tenants(id)
rows:
a v2 weight=1.0000
b v1 weight=1.0000
ethiopia v4 weight=1.0000
gate-21433 v2 weight=1.0000
gate-23566 v2 weight=1.0000
gate-23591 v2 weight=1.0000
gate5-1433 v1 weight=1.0000
gate-probe v2 weight=1.0000
noimg v1 weight=1.0000
orbit-books v3 weight=1.0000
smoke v1 weight=1.0000
## platform.store_specs (append-only: the service has no UPDATE/DELETE path for versions)
Table "platform.store_specs"
Column | Type | Collation | Nullable | Default
------------+--------------------------+-----------+----------+-------------------
id | uuid | | not null | gen_random_uuid()
tenant_id | uuid | | not null |
version | integer | | not null |
spec | jsonb | | not null |
created_by | text | | not null |
note | text | | |
created_at | timestamp with time zone | | not null | now()
Indexes:
"store_specs_pkey" PRIMARY KEY, btree (id)
"store_specs_tenant_version_uq" UNIQUE CONSTRAINT, btree (tenant_id, version)
Foreign-key constraints:
"store_specs_tenant_id_tenants_id_fk" FOREIGN KEY (tenant_id) REFERENCES platform.tenants(id)
Referenced by:
TABLE "platform.tenant_live" CONSTRAINT "tenant_live_spec_id_store_specs_id_fk" FOREIGN KEY (spec_id) REFERENCES platform.store_specs(id)
grep for update/delete on store_specs in the service layer:
none
## version ledger, agent-built stores
ethiopia:
v4 live=true 2026-09-05T15:49:11.188Z agent-worker agent revision; 0 product(s) added, 2 page(s)
v3 live=false 2026-09-05T15:45:33.653Z agent-worker agent publish; 4 product(s), 2 page(s)
v2 live=false 2026-09-05T15:16:52.025Z agent-worker images: 4 products, 2 hero
v1 live=false 2026-09-05T02:11:53.383Z agent-worker agent publish; 4 product(s), 2 page(s)
orbit-books:
v3 live=true 2026-09-05T15:47:25.434Z agent-worker agent publish; 5 product(s), 1 page(s)
v2 live=false 2026-09-05T15:17:13.044Z agent-worker images: 5 products, 2 hero
v1 live=false 2026-09-05T03:00:32.341Z agent-worker agent publish; 5 product(s), 2 page(s)
## Zod rejection (spec-service must answer 422 to an invalid document, nothing stored)
HTTP 422; versions before=4 after=4; detail: ✖ Too small: expected array to have >=1 items → at pages ✖ a page with slug "home" is required (it renders at /)
## cross-tenant cart isolation (cart cookie minted on ethiopia, presented to orbit-books)
ethiopia /cart with own cookie: HTTP 200; orbit-books /cart with ethiopia's cookie: HTTP 200 (cookie present: 0)
## secret sweep by VALUE across the whole git history (counts, never values)
ANTHROPIC_API_KEY (len 108): 0 occurrence(s) in history
RECRAFT_API_KEY (len 64): 0 occurrence(s) in history
POSTGRES_PASSWORD (len 48): 0 occurrence(s) in history
MEDUSA_PUBLISHABLE_KEY (len 67): 0 occurrence(s) in history
JWT_SECRET (len 64): 0 occurrence(s) in history
COOKIE_SECRET (len 64): 0 occurrence(s) in history
MEDUSA_ADMIN_PASSWORD (len 20): 0 occurrence(s) in history
CONSOLE_BASIC_AUTH_PASSWORD (len 16): 0 occurrence(s) in history
tracked .env files: 0
## listeners (only the renderer may be non-loopback)
State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0 4096 127.0.0.1:15432 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:16379 0.0.0.0:*
LISTEN 0 511 127.0.0.1:4101 0.0.0.0:*
LISTEN 0 511 127.0.0.1:4100 0.0.0.0:*
LISTEN 0 511 100.111.71.48:4102 0.0.0.0:*
## units + linger
amboras-commerce: enabled=enabled active=active
amboras-spec-service: enabled=enabled active=active
amboras-renderer: enabled=enabled active=active
amboras-agent-worker: enabled=enabled active=active
timers: amboras-backup.timer
linger: yes
## public exposure
console https://amboras.phillyshell.cloud/ -> HTTP 401 (401 = basic auth)
medusa admin from another tailnet host -> '000unreachable'