5e03f456600ea33c793f56eec7aef15627a6ba9c
- backend/publish.py: POST /slabs/{id}/publish. Sequence (PUBLISH-5): validate ready
set -> SKU lookup (409 on dup, PUBLISH-15) -> refresh taxonomy if >1h (SETTINGS-60)
-> resolve cats/tags/5 attributes -> upload processed PNGs -> POST /products ->
finalize (set woo_product_id, purge photos, PUBLISH-25). SLAB-UAT-* always draft
(PUBLISH-10). Failure: mark failed, retain photos, sync_log, plain recoverable/
unrecoverable message (PUBLISH-30/36/37/38). Partial (media ok, POST failed):
orphan media logged + manual cleanup note (PUBLISH-31). Payload: only non-null,
slug = name+sku, sold_individually true (PUBLISH-55/60).
- frontend: create/publish/Publish.svelte (slab id, publish, result + recoverable/
orphan tags) + dev toggle.
- tests: 5 publish tests (success+purge, UAT draft, not-ready 422, dup 409,
partial-media 502). Woo transport mocked.
Verified: pytest 48 passed; gates exit 0; npm build ok.
SlabUploader
Lists one-of-a-kind wood slabs on Whidbey Wood Store.
Start at docs/README.md for goals, what already shipped, and Milestone 3.
| Artifact | File |
|---|---|
| Docs map | docs/README.md |
| Structure contract | docs/STRUCTURE.md |
| Requirements (normative) | docs/REQUIREMENTS.md |
| Milestones (ID subsets) | docs/MILESTONES.md |
| Product overview | docs/PRODUCT.md |
| Invariants and agent context | AGENTS.md |
| Milestone 1 Capture (shipped) | docs/capabilities/CAPTURE.md |
| Milestone 2 Photos (shipped) | docs/capabilities/PHOTOS.md |
| Milestone 3 Create (paused — requirements reconciliation) | docs/capabilities/CREATE.md |
| UAT practice walk | docs/UAT-PRACTICE.md |
| Hosting | deploy/ |
Owner: Ty. Store: https://www.whidbeywoodstore.com/
Repo: Ty_Tech/SlabUploader
Languages
TypeScript
43.5%
Python
37%
Svelte
18.8%
Shell
0.4%
Dockerfile
0.2%