Commit Graph

16 Commits

Author SHA1 Message Date
grokbot_ty f82287db78 fix(gate-b): IP-based TLS — :443 catch-all + IP SANs on cert
- Caddyfile: switch slab.local site block to :443 catch-all so
  any SNI (IP or hostname) reaches the reverse proxy. Bare IP
  HTTPS no longer fails with SSL_ERROR_INTERNAL_ERROR_ALERT.
- Cert: regenerate self-signed cert with SANs: DNS:slab.local,
  IP:192.168.1.202, IP:100.64.0.9. IP SANs ensure cert is presented
  for IP-based connections; :443 catch-all ensures Caddy routes
  the request regardless of SNI.
- INVENTORY.md: document IP SANs, :443 catch-all, phone access
  steps, and bare-IP test results.

Verified on ubuDual5060:
- curl -sk https://192.168.1.202/api/health → 200 ok
- curl -sk https://192.168.1.202/ → 200, frontend HTML
- curl -sk https://100.64.0.9/api/health → 200 ok
- curl -skI http://192.168.1.202/ → 308 redirect to HTTPS
- openssl s_client to 192.168.1.202:443 → TLS 1.3 handshake OK
2026-09-07 18:40:24 +00:00
grokbot_ty adb50d971a fix(gate-b): restore TLS for slab.local with file-based certs
- Caddyfile: switch from :80 catch-all to slab.local with file-based TLS
  using self-signed cert from deploy/certs/
- docker-compose.yml: publish 443, mount certs volume read-only
- INVENTORY.md: update smoke section with HTTPS results, note phone CA TBD

Host fix: added slab.local → 192.168.1.202 to /etc/hosts,
Caddy now serves HTTPS with HTTP→HTTPS redirect,
curl -k https://slab.local/api/health returns 200 ok.
2026-09-07 18:29:39 +00:00
grokbot_ty 48b64382f8 docs(INVENTORY): phone hang fix — HTTP interim verified
Record phone LAN hang root cause (308 HTTPS redirect + TLS handshake fail),
HTTP-only Caddy fix, and verified smoke results for 100.64.0.9 and
192.168.1.202. Caddy :80 catch-all returns 200, /api/health ok.
2026-09-07 16:41:59 +00:00
grokbot_ty e13bbedda8 fix: HTTP-only Caddy for Gate B LAN phone hang
Root cause: Caddy on :80 returned 308 → HTTPS, and TLS handshake failed
(Go/OpenSSL compat). Phones hung on HTTPS redirect loop.

Fix: Caddyfile serves all HTTP on :80 without TLS/redirect. Docker
compose drops port 443 and cert mount. Interim — post-POC restores
proper TLS.
2026-09-07 16:40:51 +00:00
grokbot_ty 6c62b506d4 docs: update INVENTORY smoke results with LAN bind fix 2026-09-07 16:30:46 +00:00
grokbot_ty b4a702318d fix: bind 0.0.0.0 for LAN reachability (Gate B) 2026-09-07 16:29:58 +00:00
grokbot_ty c62f0329f6 gate-b: smoke results, INVENTORY complete 2026-09-07 16:19:31 +00:00
grokbot_ty f966fbe690 gate-b: Caddy TLS fix, self-signed RSA cert, SLAB_WOO_BASE_URL, absolute DB path 2026-09-07 16:13:29 +00:00
grokbot_ty 68d236961a feat(#30): Gate B [10/10]: Deploy compose + WOO_BASE_URL (OPS-1, GC-5)
- deploy/.env.example: placeholders only (no real URLs, proper comments)
- frontend/Dockerfile: Node 20 stub server for compose build
- deploy/tests/test-compose-health.sh: OPS-1 compose health smoke test
- deploy/tests/test-woo-base-url.sh: GC-4/5/FUND-25 validation suite
- backend/app/api/settings.py: PUT rejects woo_base_url (422), consumer keys (422),
  text() wrapping for SQLAlchemy 2.x, key primary key fix
- backend/tests/contract/test_woo_base_url.py: 8 contract tests for GC-4/GC-5

Tests: 39/39 backend tests pass (8 new, 31 existing green)
Deploy: 5/5 shell tests pass (Docker unavailable for compose-up path)
2026-09-07 08:18:25 +00:00
grokbot_ty a06a4a0123 docs: purge scope-out sections; affirmative plan only 2026-09-07 02:22:34 +00:00
grokbot_ty 80af35721f docs: align tracked files to single coherent SoT
Contradictions resolved:

- AGENTS.md: add 'Known stale PRD lines' section (FR17, FR19, FR40, NFR, FR42)
  so PRD's cross-reference resolves
- AGENTS §6: remove 'tag sets' from Call 1 body description (Call 1 only uses
  species and attribute lists)
- PROMPTS.md: shipped defaults path corrected to backend/app/prompts/ (matches
  DEPLOYMENT repo layout)
- PROMPTS.md: Call 1 notes removed feat-* and fig-* from taxonomy list (Call 1
  returns free-text observations mapped to feat-* tags by server, not fig-*)
- PROMPTS.md: Call 2 template field names aligned with CONTENT-WOO defaults
  (width_avg_in, width_min_in, width_max_in, length_in_remainder)
- UX.md §112: remove 'tag lists' from Call 1 body description
- DATA-MODEL: prompt files location corrected from /data/prompts/ to
  backend/app/prompts/ (bind-mounted read-only to /app/prompts/)
- DEPLOYMENT: backup script updated (prompts are version-controlled in repo,
  no separate backup needed)
- docker-compose.yml: prompts mount corrected to ../backend/app/prompts
2026-09-07 02:17:22 +00:00
grokbot_ty 10858d2502 docs: lock WOO_BASE_URL Whidbey Wood Store in inventory 2026-09-06 23:04:56 +00:00
grokbot_ty b97e4187b2 docs: lock APP_HOSTNAME slab.local (LAN-first) in inventory 2026-09-06 23:04:03 +00:00
grokbot_ty 45f0f4ea1c docs: draft Gate B inventory for ubuDual5060 practice host
SSH verified as ty. Ports, Docker, Tailscale IPs recorded.
APP_HOSTNAME and WOO_BASE_URL still TBD.
2026-09-06 23:01:09 +00:00
Dev Manager 3921a9dfa2 docs(#11): WOO_BASE_URL in compose, HTTPS-only, Settings read-only
Check in implementable deploy/docker-compose.yml, .env.example, and Caddy
fragment. Store URL is env SoT (not a settings row). Application Password
setup stays in DEPLOYMENT §5 (issue #5).
2026-09-02 00:28:56 +00:00
grokbot_ty 369d404c29 docs: env-agnostic deploy (APP_HOSTNAME, inventory, Caddy order)
DEPLOYMENT is host-variable: APP_HOST/APP_HOSTNAME/ports, inventory
worksheet, corrected Caddy handle /api/* before frontend. Drop RemBG
and output_px 1000 as deploy SoT. AGENTS §9, README, IMPL host wording
match. Historical .201 lab is a non-normative callout only.
2026-09-01 05:26:45 +00:00