# Company Status _Last updated: 2026-06-02 (sprint planning cycle — #171/#170 ROADMAP/STATUS cross-refs)_ ## APIs | API | Spec | Code | Deployed | Listed on RapidAPI | Paying Users | MRR | |----------------|------|------|----------|--------------------|--------------|-----| | ZIP Enrichment | [~] | [~] | [ ] | [ ] | 0 | $0 | | Holidays | [~] | [~] | [ ] | [ ] | 0 | $0 | | Air Quality | [ ] | [ ] | [ ] | [ ] | 0 | $0 | | VIN Decoder | [x] | [x] | [ ] | [ ] | 0 | $0 | Legend: [x]=done, [~]=in-progress, [ ]=not started ## Infrastructure - Cluster nodes: 3 control plane (10.0.1.3, .4, .5) + workers (testing1) - **Flux wiring (api-company):** Manifests staged at `flux/api-company-source/` — PENDING Talos merge (issue #2) - **Gitea Actions runner:** Flux manifest committed at `flux/gitea-runner/` — PENDING runner token secret + Talos wiring (issue #3) - **Container registry:** Gitea built-in registry selected; docs/registry.md committed — PENDING Gitea packages enabled (issue #4) - **Prometheus + Grafana:** Flux HelmRelease at `flux/monitoring/` — PENDING Flux wiring + Grafana secret (issue #7) - **Gatus status page:** Flux HelmRelease at `flux/monitoring/gatus-helmrelease.yaml` — PENDING Flux wiring (issue #8) - **API service manifests:** `flux/zip-enrichment/`, `flux/holidays/`, `flux/air-quality/` scaffolded (PR #48, closes #46) - **Image automation:** `flux/image-automation/` — ImageRepository + ImagePolicy + ImageUpdateAutomation for all three APIs - **VIN Decoder manifests:** `flux/vin-decoder/` — Flux HelmRelease + Kustomization committed (issue #140) ## Completed This Cycle (2026-06-02 — Sprint Planning Cycle) - **#171** — ROADMAP.md Phase 0 unchecked items annotated with issue #2, #3, #4; Phase 4 unchecked items annotated with issue #7, #8, #27; Phase 5 unchecked item annotated with issue #30. No checked-off items changed. - **#170** — STATUS.md updated with 2026-06-02 sprint planning cycle results (this entry). Last updated date set to 2026-06-02. - **Sprint Summary:** 2 new issues created (#171, #170), 0 issues closed this cycle, 0 stale found. - **`kustomize build flux/` = PASS** — no regressions confirmed. ## Completed Previous Cycle (2026-06-02 — Triage Cycle #168) - **#168** — STATUS.md cleanup: removed all stale “open, in progress” references to #120 and #121 (both confirmed closed ✅ in leeworks-agents/vin-decoder). Historical sections corrected. VIN Decoder Code column confirmed `[x]`. - **`kustomize build flux/` = PASS** — no regressions. ## Completed Previous Cycle (2026-06-01 — Sprint Planning Cycle) - **#163** — ROADMAP.md Phase 2 and Phase 3 VIN Decoder bullets marked `[x]` with closed ✅ references for issues #120 and #121. - **#164** — STATUS.md Current Blockers updated: removed #120 and #121 (both confirmed closed ✅). Top actionable agent task updated to #163. - **`kustomize build flux/` = PASS** — no regressions. ## Completed Previous Cycle (2026-06-01 — Triage Cycle) - **#158** — STATUS.md updated with 2026-06-01 current blockers and sprint summary. - **#156** — ROADMAP.md checkboxes updated: Phase 4 VIN Decoder metrics, Phase 5 docs-site/pipeline/blog, Phase 6 legal docs all checked off. - **VIN Decoder Code `[x]`** — leeworks-agents/vin-decoder data layer (#120) and Fastify server (#121) confirmed merged; STATUS.md Code column updated. - **PR #160 closed** — had merge conflicts and ROADMAP.md regressions (unchecked completed items). Clean fix applied here. - **`kustomize build flux/` = PASS** — no regressions. ## Current Blockers (as of 2026-06-01) In dependency order — operator tasks unless noted: 1. **P1 #47** — Create `0xWheatyz/api-company` upstream repo (operator) — **highest priority, unblocks everything** 2. **P1 #76** — Create `gitea-leeworks-agents-token` secret in `flux-system` (operator) 3. **P1 #77** — Create `gitea-runner-token` secret in `gitea-runner` namespace (operator) 4. **P1 #79** — Create `gitea-registry` imagePullSecrets in all API namespaces (operator) 5. **P1 #83** — Configure `GITEA_TOKEN` Actions secret in zip-enrichment, holidays, air-quality repos (operator) 6. **P1 #126** — Configure `GITEA_TOKEN` Actions secret in vin-decoder repo (operator — depends on #122 ✅) 7. **P1 #127** — Create `gitea-registry` imagePullSecret in `vin-decoder` namespace (operator) ## Sprint Summary (2026-06-01 — Sprint Planning Cycle) - **Issues closed this cycle:** 0 - **New issues created this cycle:** 1 (#163 — ROADMAP/STATUS cleanup after #120/#121) - **Stale issues found:** 0 - **Top actionable agent task:** #163 (pure doc update, immediately actionable) - **Critical path:** Entirely operator-gated after #163 is merged (see Current Blockers) ## Sprint Summary (2026-06-01) - **Issues closed since last STATUS update (#146):** #145–#154 — VIN Decoder sprint docs + infra (✅ all closed) - **Issues opened this sprint:** #150 (vin DNS reminder), #151 (VIN Decoder RapidAPI tiers), #155 (if applicable), #156 (ROADMAP.md update), #157 (full-stack validation), #158 (STATUS.md update), #163 (ROADMAP/STATUS cleanup post-#120/#121), #164 (STATUS.md sprint planning update) - **Top actionable agent task:** #163 (ROADMAP/STATUS doc cleanup for #120/#121 — pure doc update, immediately actionable) ## Completed Previous Cycle (2026-05-31 — Sprint Cycle) - **#146** — STATUS.md updated to reflect VIN Decoder sprint wave (#117–#141): APIs table row added, completed wave documented, blockers updated. - **#145** — ROADMAP.md updated to reference VIN Decoder as 4th API across all phases (Phase 1–6). `kustomize build flux/` = PASS. - **PR #147 opened** — docs: update ROADMAP.md and STATUS.md for VIN Decoder sprint wave (closes #145, #146). ## Completed Previous Cycle (2026-05-30 — VIN Decoder Sprint Wave) ### VIN Decoder issues #117–#141 — status as of 2026-05-31: - **#117** — VIN Decoder spec + feasibility — **closed ✅** (`apis/vin-decoder/openapi.yaml` merged) - **#120** — VIN Decoder data layer (SQLite/NHTSA vPIC) — **closed ✅** (leeworks-agents/vin-decoder) - **#121** — VIN Decoder Fastify server — **closed ✅** (leeworks-agents/vin-decoder) - **#122** — Create `leeworks-agents/vin-decoder` repo — **closed ✅** - **#123** — VIN Decoder docs page — **closed ✅** - **#124** — VIN Decoder SEO blog post — **closed ✅** - **#130** — VIN Decoder DNS `vin.leeworks.dev` — **closed ✅** - **#131** — VIN Decoder RapidAPI listing — **closed ✅** (tracker; operator action required) - **#133** — VIN Decoder pricing page integration — **closed ✅** - **#134** — VIN Decoder Gatus health check — **closed ✅** - **#135** — VIN Decoder image automation — **closed ✅** - **#136** — VIN Decoder ExternalSecret manifest — **closed ✅** - **#138** — Extend publish-openapi pipeline to include VIN Decoder — **closed ✅** (PR #142 merged) - **#139** — Operator: add RAPIDAPI_VIN_API_ID + RAPIDAPI_VIN_VERSION_ID secrets — **open** (operator task, blocked on RapidAPI listing) - **#140** — VIN Decoder Flux manifests — **closed ✅** (PR #143 merged) - **#141** — Pricing page updated for VIN Decoder — **closed ✅** (PR #144 merged) ## Critical Path (operator must complete in order) See **Current Blockers** section above for the full ordered list as of 2026-06-01. 1. **Create `0xWheatyz/api-company` repo** (#47) — **highest priority, unblocks everything** 2. **Add api-company Flux source to Talos** (#90) — needs Talos PR, reference manifests at `flux/api-company-source/` 3. **Create `gitea-leeworks-agents-token` secret** in `flux-system` (#76) 4. **Create `gitea-runner-token` secret** in `gitea-runner` (#77) 5. **Enable Gitea packages + DNS for `registry.leeworks.dev`** (#4) 6. **All other secrets** (#70, #73, #74, #79, #80, #81, #83) follow in order ## Blockers — VIN Decoder critical path - **P1: #127** — Create `gitea-registry` imagePullSecret in `vin-decoder` namespace — operator manual task - **P2: #126** — Configure `GITEA_TOKEN` secret in `vin-decoder` repo — operator manual task - **P2: #128** — Create `rapidapi-proxy-secret` in `vin-decoder` namespace — operator manual task - ~~**P2: #129** — VIN Decoder Prometheus metrics instrumentation~~ — **closed ✅** (PR merged) - **P3: #139** — Add RAPIDAPI_VIN_* Actions secrets — operator task, depends on RapidAPI listing (#131) ## New Issues This Sprint (2026-05-30, #120–#146) - **#120** — VIN Decoder data layer — **closed ✅** (leeworks-agents/vin-decoder) - **#121** — VIN Decoder Fastify server — **closed ✅** (leeworks-agents/vin-decoder) - **#126** — Operator: GITEA_TOKEN secret in vin-decoder repo — manual operator task - **#127** — Operator: gitea-registry imagePullSecret in vin-decoder namespace — manual operator task, P1 blocker - **#128** — Operator: rapidapi-proxy-secret in vin-decoder namespace — manual operator task - **#129** — VIN Decoder Prometheus metrics — **open, P2, depends on #121** - **#139** — Operator: RAPIDAPI_VIN_* secrets — **open, P3, operator task** - **#145** — Update ROADMAP.md for VIN Decoder — **DONE (this cycle)** - **#146** — Update STATUS.md for VIN Decoder sprint wave — **DONE (this cycle)** ## Completed Previous Cycle (2026-05-30 — Sprint Cycle) - **#108** — STATUS.md updated with 2026-05-30 sprint plan and critical path. - **#107** — docs-site build verified: `npm run build` exits 0; all 9 required routes present in `dist/`. - **PR #105 MERGED** — `scripts/publish-openapi.js` + `.gitea/workflows/publish-openapi.yaml` (closes #100). - **PR #103 MERGED** — `docs-site/src/pages/pricing.astro` + nav link (closes #101). - **PR #104 MERGED** — `research/RESEARCH_LOG.md` first session: VIN Decoder next candidate (closes #102). - **New issues triaged** — #100–#108 (sprint planning cycle issues reviewed). - **`0xWheatyz/api-company`** — still does not exist; fork sync skipped (blocker #47). - **`kustomize build flux/` = PASS** — no regressions. ## Completed Previous Cycle (2026-05-28 — Cycle-2 Triage) - **#83** — Triaged: `GITEA_TOKEN` Actions secrets needed in `zip-enrichment`, `holidays`, `air-quality` repos. Manual operator task; reuse token from #74 if it has `write:package` scope. Step-by-step instructions posted. - **No open PRs** — queue empty. - **`kustomize build flux/` = PASS** — no regressions. - **Upstream `0xWheatyz/api-company`** — still does not exist; fork sync skipped (blocker #47). ## Completed Previous Cycle (2026-05-28 — Late-Night Triage) - **#79** — Triaged: `gitea-registry` imagePullSecret needed in 4 namespaces. Manual operator task; kubectl docker-registry secret instructions posted. - **#80** — Triaged: `gitea-image-automation-token` secret needed in `flux-system`. Manual operator task; write-scoped PAT required, kubectl instructions posted. - **#81** — Triaged: `rapidapi-proxy-secret` needed in `zip-enrichment`, `holidays`, `air-quality`. Manual operator task; placeholder + real-secret commands posted. - **No open PRs** — queue empty. - **`kustomize build flux/` = PASS** — no regressions. ## Completed Previous Cycle (2026-05-28 — Night Triage) - **#76** — Triaged: `gitea-leeworks-agents-token` secret required in `flux-system` to unblock Flux GitRepository auth. Manual operator task; kubectl instructions + reconcile steps posted in issue comment. - **#77** — Triaged: `gitea-runner-token` secret required in `gitea-runner` namespace to register Act Runner. Manual operator task; full step-by-step instructions posted in issue comment. - **No open PRs** — queue empty. - **`kustomize build flux/` = PASS** — no regressions. ## Completed Previous Cycle (2026-05-28 — Evening Triage) - **#74** — Triaged: `GITEA_TOKEN` Actions secret required in leeworks-agents/api-company for docs-site CI. Manual operator task; instructions posted. - **#73** — Triaged: `gatus-slack-webhook` secret required in `monitoring` namespace. Manual operator task; kubectl instructions posted. - **#67** — Confirmed already resolved: `docs/operator-runbook.md` and `docs/dns.md` both list all 7 subdomains incl. `grafana.leeworks.dev` (PR #63). No code change needed. - **No open PRs** — queue empty. - **`kustomize build flux/` = PASS** — no regressions. ## Completed Previous Cycle (2026-05-28 — Morning Triage) - **#69 → PR #71 MERGED** — Added `.gitea/workflows/validate-flux.yaml` CI workflow: runs `kustomize build flux/` on every PR and push to `main`. CI gate enforced once Act Runner (#3) is online. - **#70** — Triaged: `grafana-admin` secret needed in `monitoring` namespace. Manual operator task; kubectl instructions posted in issue comment. - **#67** — Confirmed `docs/operator-runbook.md` Phase 4 DNS table already lists all 7 subdomains including grafana.leeworks.dev. No code change needed. - **#66** — Blocked on Phase 0 operator actions (#47, #2, #3, #4). Status comment posted. - **#47, #2, #3, #4, #7, #8, #16, #17, #18, #19, #27, #30, #33, #44** — Status comments posted confirming blocked/awaiting-operator state. - **No open PRs to review** — queue empty after PR #71 merged. - **`kustomize build flux/` = PASS** — no regressions. ## Completed Previous Cycle (2026-05-27 — Evening Triage) - **Triage pass** — all 15 open agent-ready issues reviewed; status comments posted on each. - **No open PRs** — nothing to merge or review. - **No new feature work** — all issues remain blocked on operator actions or cross-repo prerequisites. - **`kustomize build flux/` = PASS** — no regressions. ## Completed Previous Cycle (2026-05-27 — Ship/Afternoon) - **PRs reviewed** — 0 open PRs on fork; nothing to merge. - **Upstream sync** — `0xWheatyz/api-company` does not yet exist (blocker #41/#47); `git fetch upstream` failed as expected. Fork `origin/main` is current (SHA `9a1639f`). - **`kustomize build flux/` = PASS** — all sub-trees validate cleanly; no regressions. - **Deployment PR** — skipped; upstream repo must be created by operator first (#41, #47). - **No new feature work** — all 15 open agent-ready issues remain blocked on operator actions. ## Completed Previous Cycle (2026-05-27 — Morning) - **Triage pass** — all 15 open agent-ready issues reviewed; status comments posted/confirmed on each. - **#19** — First triage comment posted: RapidAPI/PayPal operator task fully documented; all agent-side prerequisites (OpenAPI specs, listing copy, proxy-secret placeholders) confirmed ready. - **No PRs to review** — fork had no open PRs. - **No new feature work** — all open issues blocked on operator actions. ## Completed Previous Cycle (2026-05-26 Evening) - **#50** — `docs/operator-runbook.md` added: ordered phase-by-phase manual for operator. PR #52 merged. - **#51** — Flux image automation: `ImageRepository` + `ImagePolicy` + `ImageUpdateAutomation` for all three API services; setter markers added to HelmReleases. PR #52 merged. `kustomize build flux/ = PASS`. ## Completed Previous Cycle (2026-05-26 PM) - **#46** — Scaffolded Flux deployment manifests for all three API services (zip-enrichment, holidays, air-quality). PR #48 merged. ## Completed Previous Cycle (2026-05-26 AM) - **#43** — secrets-checklist.md added (closed, PR #45) - **#36** — Cluster audit committed to `docs/cluster-audit.md` (closed) - **#40** — Legal docs (ToS, Privacy Policy, AUP) under `docs/legal/` (closed) - **#37** — docs-site Astro skeleton with Redoc pages; `npm run build` passes (closed) - **#39** — SEO blog posts (ZIP, Holidays, Air Quality) in `docs-site/src/pages/blog/` (closed) - **#38** — Gitea Actions CI workflow (`.gitea/workflows/build-docs.yaml`) + Dockerfile (closed) - **#34** — Cluster audit PR merged ## Flux Manifests (kustomize build flux/ = PASS) All flux manifests validate successfully. Committed components pending Flux activation: - `gitea-runner` namespace + HelmRelease (gitea-act-runner chart) - `monitoring` namespace + kube-prometheus-stack HelmRelease - `monitoring` Gatus HelmRelease (status.leeworks.dev, 90-day retention) - `docs-site` HelmRelease (docs.leeworks.dev) - `zip-enrichment` namespace + HelmRelease (zip.leeworks.dev) + rapidapi-proxy-secret placeholder - `holidays` namespace + HelmRelease (holidays.leeworks.dev) + rapidapi-proxy-secret placeholder - `air-quality` namespace + HelmRelease (aqi.leeworks.dev) + rapidapi-proxy-secret placeholder - `vin-decoder` namespace + HelmRelease (vin.leeworks.dev) + Flux manifests - `image-automation` ImageRepository + ImagePolicy + ImageUpdateAutomation for all three APIs ## Blockers (human operator action required) 1. **Create `0xWheatyz/api-company` repo on Gitea** — every ship cycle fails until this exists (#41, #47) **<-- DO THIS FIRST** 2. **Add api-company GitRepository+Kustomization to 0xWheatyz/Talos** at `testing1/first-cluster/cluster/flux/` — reference manifests ready in `flux/api-company-source/` (#2) 3. **Create `gitea-leeworks-agents-token` secret** in `flux-system` namespace (HTTPS token for Gitea) 4. **Create `gitea-runner-token` secret** in `gitea-runner` namespace (Gitea Admin -> Actions -> Runners -> New Runner) (#3) 5. **Enable Gitea packages** (for container registry at `registry.leeworks.dev`) (#4) 6. **Create `gitea-registry` imagePullSecret in `vin-decoder` namespace** (#127) — VIN Decoder P1 7. **RapidAPI + PayPal setup** — manual, gated on operator turning 18 (#19, #44) > Full ordered runbook with copy-paste commands: `docs/operator-runbook.md`