13 KiB
13 KiB
Host
Port block 10880–10889 on ubudual5060 is allocated to this project.
:10880 is Ty's local Node/SvelteKit and must never be bound by project deploys.
The dev-test environment binds 0.0.0.0 so any machine on 192.168.1.0/24 can reach it.
Check to see if you are running on ubudual5060 (192.168.1.202) before attempting SSH.
Dev-test environment (M2 current, M3 incoming)
- Host:
ubudual5060/ LAN192.168.1.202/ Tailscale100.64.0.9 - Container:
slabuploader-m2-overnight(imageslabuploader-m2:overnight) - Port: 10881 → 80, bound
0.0.0.0 - URLs:
http://192.168.1.202:10881(LAN) ·http://100.64.0.9:10881(Tailscale) - M3 replaces this container on the same port; remove the M2 container once M3 is healthy.
Ty local Node/SvelteKit (do not overwrite)
- Host:
ubudual5060/100.64.0.9 - Container:
slabuploader-m1 - Port: 18080 → 80 (inventory previously listed 10880; that port is off limits to project deploys)
- URL:
http://100.64.0.9:18080 - Never recreate or remap this container for project deploys.
Future deploys use a separate container name and a free port in 10880–10889
(other than 10880), bound 0.0.0.0.
Do not put a host name in the product spec.
Deploy records
2026-09-26 ~09:42 PT — Review metadata: slug tags, decode names, no fig picker / AI labels on :10890
- Source:
overnight-whole-app@85786f1(fix(review): slug-scoped tags, decode names, drop fig picker & AI labels) - Compose:
-p slab-overnight+deploy/override-overnight.yml— fastapi + frontend rebuilt/recreated - Taxonomy re-sync:
POST /api/v1/admin/taxonomy/sync→ 14 tags (11fig-*, 3feat-*); cats decode&→& - Left alone:
deploy-*10881/10882, greenfield 10884/10885, m4 10883, m1 18080 - Health:
GET http://127.0.0.1:10890/api/health→ ok; root/→ 200; assetindex-DA24IrWT.js - Call 1 still 410
call1_disabled - URLs: Tailscale
http://100.64.0.9:10890· LANhttp://192.168.1.202:10890
2026-09-26 ~09:12 PT — PNG size floor warn 300–799 / block <300 on :10890
- Source:
overnight-whole-app@1b5ad11(fix(capture): warn 300–799px PNG floor; hard-block only below 300) - Compose:
-p slab-overnight+deploy/override-overnight.yml— frontend only rebuilt/recreated (slab-overnight-fastapi-1left running) - Left alone:
deploy-*10881/10882, greenfield 10884/10885, m4 10883, m1 18080 - Health:
GET http://127.0.0.1:10890/api/health→ ok; root/→ 200; assetindex-Cgc1wxKP.js - Call 1 still 410
call1_disabled - URLs: Tailscale
http://100.64.0.9:10890· LANhttp://192.168.1.202:10890
2026-09-26 ~08:58 PT — fix Create title species carry-forward on :10890
- Source:
overnight-whole-app@76f3026(fix(review): carry Measure species into Create title/short-desc) - Compose:
-p slab-overnight+deploy/override-overnight.yml— frontend only rebuilt/recreated (slab-overnight-fastapi-1left running) - Left alone:
deploy-*10881/10882, greenfield 10884/10885, m4 10883, m1 18080 - Health:
GET http://127.0.0.1:10890/api/health→ ok; Tailscale100.64.0.9:10890→ ok; root/→ 200; assetindex-4mcBthul.js - Call 1 still 410
call1_disabled - URLs: Tailscale
http://100.64.0.9:10890· LANhttp://192.168.1.202:10890
2026-09-25 ~22:06 PT — overnight-whole-app SEPARATE stack on :10890/:10891
- Intentional ports: frontend 10890, fastapi 10891 (1089x range; avoids fighting 10881/10882).
- Host:
ubudual5060/ LAN192.168.1.202/ Tailscale100.64.0.9 - Checkout:
~/slab-deploy@6caa4f6branchovernight-whole-app - Compose: host-local untracked
deploy/override-overnight.ymlas standalone file (not merged with base); project-p slab-overnight - Containers:
slab-overnight-frontend-1/slab-overnight-fastapi-1 - Binds:
0.0.0.0:10890→80,0.0.0.0:10891→8000(+ loopback 18090/18091) - Volumes: dedicated
slab-overnight_slab_overnight_db/_images(did not reusedeploy_slab_*) - Left alone:
deploy-*10881/10882, greenfield 10884/10885, m4 10883, m1 18080 - Health:
GET http://127.0.0.1:10890/api/healthand Tailscale →{"status":"ok","version":"0.5.0-m3","woo_reachable":false}(fresh DB; Woo app password not yet in Settings). Root/→ 200. - Call 1:
POST /api/v1/slabs/{id}/inference/call1→ 410call1_disabled - URLs for Ty: Tailscale
http://100.64.0.9:10890· LANhttp://192.168.1.202:10890 - Note: an earlier mistaken recreate put overnight bits onto
deploy-*:10881/:10882; that stack was then left running untouched. Canonical overnight prop is 10890/10891. - Box Cloudflare quick tunnel stopped; box local :18181/:18182 left running.
2026-09-25 ~22:05 PT — overnight-whole-app on ubudual5060 :10881/:10882
- Host:
ubudual5060/ LAN192.168.1.202/ Tailscale100.64.0.9 - Checkout:
~/slab-deploybranchovernight-whole-app@6caa4f6(fix(uat): allow Cloudflare quick-tunnel Host on vite preview) - Compose project:
deploy→ containersdeploy-frontend-1/deploy-fastapi-1only - Ports:
0.0.0.0:10881→80,0.0.0.0:10882→8000(+ loopback 18082/18083 from host.env); did not touch 10880 /slabuploader-m1(18080) / greenfield 10884–10885 / m4-review 10883 - Build: on UAT host (
docker compose -f deploy/docker-compose.yml --env-file deploy/.env buildthenup -d, no-v); volumesdeploy_slab_db/deploy_slab_imagespreserved - Health:
GET /api/health→{"status":"ok","version":"0.5.0-m3","woo_reachable":true}from 127.0.0.1 and from Tailscale100.64.0.9; root/→ 200 - Call 1:
POST /api/v1/slabs/{id}/inference/call1→ 410call1_disabled - URLs for Ty: Tailscale
http://100.64.0.9:10881· LANhttp://192.168.1.202:10881 - Box Cloudflare quick tunnel (
cloudflared tunnel --url http://127.0.0.1:18181) stopped; box local :18181/:18182 left running
2026-09-25 ~17:50 PT — overnight-whole-app box UAT (Grok Bot computer)
- Branch:
overnight-whole-app(main @0c00d25+ cherry-picked #99 tape-lineb44e231→323f29b→be2ea6c+ Call 1 OUT). - Frontend: vite preview
0.0.0.0:18181(proxy/api→ FastAPI). Never touch:10880. - Backend: uvicorn
0.0.0.0:18182(backend.app:app), local SQLite under.uat-data/(gitignored). - Env:
WOO_BASE_URLfrom~/.config/slabuploader/woo.env(password not logged);SLAB_AES_KEYfrom local file (not in repo). - Call 1:
POST .../inference/call1→ 410 call1_disabled. Call 2 path retained. - Health:
/api/healthok;woo_reachablemay be false from this box (network) — draft-only smoke. - Partner Woo UAT containers: not touched.
2026-09-21 02:41 PDT — #90 wood primary category + derived thickness band
- Source ref:
0329052onissue-89-metadata-lock(pushed to Gitea; pulled into~/slab-deploy). - Images (built on
ubudual5060):deploy-frontend:latest1c169c29f131,deploy-fastapi:latest32671659639b. - Compose:
deploy/docker-compose.yml+ host-local (untracked)deploy/override-m3.yml. - URL:
http://192.168.1.202:10881(LAN) ·http://100.64.0.9:10881(Tailscale). matches HEAD: yes.- Sample data preserved: yes — 24 slabs before and after
up -d(no-v, no volume removal). - Verified on the live stack: served asset
assets/index-tlFib3RM.js(sha2563b665746ec81f28e…) contains the new markers and no#thicknessselect;POST /api/v1/slabsatthickness_in 1.0stored band350(1"- 1 1/2");PUTat2.75re-banded to352; a client-sent stale band id was ignored;POST /reviewno longer lists thickness as missing; the Review screen in a real browser (LAN URL) shows the wood-category MultiSelect closed summary with names + count, thePrimary wood categoryradio set switching on click, and the band as read-only text. - Not exercised: the Woo publish path. Rows created before this deploy keep
thickness_term_idNULL until their next save (the band is derived on write, so any Review commit fills it in).
2026-09-21 03:12 PDT — follow-up: thickness band omitted entirely from Review
- Commit:
204bc5e(fix #90: band removed from UI, not merely read-only; publish test added). - Rebuilt
deploy-frontend:latestand recreated the container on 10881. - Live verification: served HTML and bundle contain zero occurrences of "Thickness band" or "set from the measurement".
- Sample data unchanged (still 25 slabs post-recreate).
- All gates (unit, build, requirements, coverage, m3-create e2e) pass.
2026-09-21 11:52 PDT — merge issue-89-metadata-lock → main (Create-string model)
- Source: branch
work/merge-89-90(baseorigin/issue-89-metadata-lock+ Create-string re-applied).matches HEAD: no — staged from the uncommitted working tree (local sync; Gitea push not attempted this round). 9 files changed: Review.svelte, slabs.ts, review.py, slabs.py, schema.sql, db/__init__.py, test_review.py, m3-create.spec.ts, review-photo-strip.spec.ts. - Model change:
metadata_lockedDB column + "Save and lock" UI dropped end-to-end. The deterministic title/short_description are now built by the review endpoint on every call; the owner's Create title / Create short desc buttons fire the build and write the result (overwrite contract).commitReviewauto-fills only empty fields (no owner-clobber);createTitleis the explicit force-overwrite. Photo strip, wood primary/secondary, and server-side thickness band (item: not shown in UI, passed to Woo on publish) all taken from the branch. - LAN binds:
deploy/override-m3.ymlwas absent from disk; the live stack's 10881/10882 LAN binds were re-created by editingdeploy/docker-compose.ymlports in-place (loopback 18082/18083 from.env+0.0.0.0:10881/0.0.0.0:10882), thendown --remove-orphans+up -d(no-v). - Bundle:
assets/index-YPAqx609.js(new; containscreate-title). API/api/healthwoo_reachable:true. - Sample data preserved: yes — 34 slabs before/after.
- Live verification (LAN URL, real DB):
slabstable has nometadata_lockedcolumn;slab_photos.rolepresent.POST /reviewon slabec4088da…→title:'Curl Black Walnut Slab',ready:True.PUTtitle persisted (rev 1→2) then restored (original sample value intact, rev 3). - Not exercised live: the full browser Create-button click (verified via in-repo Playwright 6/6 m3-create + review-photo-strip; the endpoint + PUT path are proven live above). Woo publish path not exercised this round.
2026-09-21 12:10 PDT — redeploy: main after merge 8ee3da9 (reconciled PR #97 + branch)
- Source:
main@8ee3da9(merge ofwork/merge-89-90into main, which itself reconciled main's PR #97 client-sidethicknessBand.ts+syncSelects/box-sizingagainst the branch's server-sidethickness_band.py+ Create-string #89).matches HEAD: yes. - Resolution outcome in the deployed bundle: band is server-side —
Review.svelteno longer importsthicknessBandand the read-only band display is gone; PR #97'ssyncSelects()(3× in source) +box-sizingCSS preserved;metadata_lockedstill dropped; Create-string + photo strip + wood primary live. - Rebuilt both images from
main; recreated the stack (down --remove-orphans+up -d, no-v). LAN binds 10881/10882 intact. - Bundle:
assets/index-BScrgd8o.js(new; differs from pre-mergeYPAqx609; containscreate-title, zerothicknessBandreferences). API/api/healthwoo_reachable:true. - Sample data preserved: yes — 35 slabs (one added upstream since last deploy).
- Live verification (LAN URL, real DB):
POST /reviewon slabec4088da…→title:'Curl Black Walnut Slab',ready:True. - Gates at merge time: backend 117/117, unit 88/88, tsc clean, e2e 6/6 (m3-create + photo-strip).
- Branches
work/merge-89-90andissue-89-metadata-lockdeleted (local + remote); remote has onlymain.
2026-09-21 12:34 PDT — Review mount: restore dropped lineup/woodPrimary imports
- Source: uncommitted working tree on
main(parent67aa3d6).matches HEAD: no. Diff:frontend/src/create/review/Review.svelte+5 lines restoring imports ofkeptInOrder/moveItem/missingMinimums/roleLabel/resolvePhotoUrl/LineupItemfromlineup.tsandnextPrimaryfromwoodPrimary.ts. The morning merge kept the call sites and dropped the imports →ReferenceErroron Review mount → "Could not load the slab." - Rebuilt
deploy-frontendonly (compose build frontend+up -d frontend, no-v). Image56b35f6cdcdf. FastAPI container left running. - URL: http://192.168.1.202:10881 (LAN) · loopback 127.0.0.1:18082
- Bundle:
assets/index-BVCyM130.js(replacedindex-ck41xD02.js). Served JS has 0nextPrimary/keptInOrder(minified locals) vs 3 unresolvednextPrimaryin the broken bundle. - Sample data preserved: yes — 47 slabs before rebuild; 48 after live Capture→Review probe
(created
ef1f4101-b1d2-459d-b9a0-842e7650ea3c, sku NULL, status calibrated, 48×2 in; not published). - Live verification (loopback, real API): Continue to Review →
review-screenvisible, heading "Review to Ready", no loadError, no pageerror. POST /slabs 201, photos 201×2, GET slab/taxonomy/settings 200, review 200. - In-repo mock e2e (m3-create + photo-strip) 6/6 green against the same bundle hash before deploy.
- Not done: commit/push of the import restore; Woo publish path not re-exercised this round.