Files
api-company/STATUS.md
T
AI-Agent ca91ebeae9
Validate Flux manifests / kustomize-build (pull_request) Failing after 26s
docs: annotate ROADMAP.md with #187/#166/#167 refs, update STATUS.md for 2026-06-03 sprint (closes #194, closes #193)
- ROADMAP.md Phase 0: add Talos PR implementation reference (issue #187) alongside issue #2
- ROADMAP.md Phase 6: add issue #166 (pre-launch checklist) and #167 (launch announcement)
- STATUS.md: new Completed This Cycle section for sprint planning cycle #193/#194
- STATUS.md Current Blockers: add #80 (gitea-image-automation-token) as item 10
- kustomize build flux/ = PASS

Closes leeworks-agents/api-company#194
Closes leeworks-agents/api-company#193
2026-06-04 00:03:35 +00:00

265 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Company Status
_Last updated: 2026-06-03_
## APIs
| API | Spec | Code | Deployed | Listed on RapidAPI | Paying Users | MRR |
|----------------|------|------|----------|--------------------|--------------|-----|
| ZIP Enrichment | [x] | [x] | [ ] | [ ] | 0 | $0 |
| Holidays | [x] | [x] | [ ] | [ ] | 0 | $0 |
| Air Quality | [x] | [x] | [ ] | [ ] | 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-03 — Sprint Planning Cycle #193/#194)
- **#194** — ROADMAP.md annotated with missing issue cross-references: Phase 0 issue #2 entry updated to reference implementation issue #187; Phase 6 entries added for issue #166 (pre-launch checklist) and #167 (launch announcement). Closes leeworks-agents/api-company#194.
- **#193** — STATUS.md updated for 2026-06-03 sprint planning cycle. Current Blockers confirmed accurate; #80 (gitea-image-automation-token) listed. Closes leeworks-agents/api-company#193.
- **Sprint Summary:** 2 new documentation issues created (#193 STATUS.md update, #194 ROADMAP annotation). 0 issues closed. 0 stale. Critical path entirely operator-gated.
- **`kustomize build flux/` = PASS** — no regressions confirmed.
## Completed Previous Cycle (2026-06-03 — Audit Cycle #190/#191)
- **#190** — ZIP Enrichment API audit complete: `openapi.yaml` present at repo root (57 KB, OpenAPI 3.0.3); server entry point `src/server.js`; all routes confirmed implemented; `X-RapidAPI-Proxy-Secret` preHandler middleware on all routes except `/health`; `/metrics` Prometheus endpoint present; STATUS.md ZIP Enrichment Spec and Code rows updated to `[x]`. Closes leeworks-agents/api-company#190.
- **#191** — Holidays API audit complete: `openapi.yaml` present at repo root (13 KB, OpenAPI 3.0.3); server entry point `src/server.js`; all routes confirmed implemented; `X-RapidAPI-Proxy-Secret` preHandler middleware on all routes except `/health` and `/metrics`; `/metrics` Prometheus endpoint present (issue #180 confirmed done); STATUS.md Holidays Spec and Code rows updated to `[x]`. Closes leeworks-agents/api-company#191.
- **`kustomize build flux/` = PASS** — no regressions confirmed.
## Completed Previous Cycle (2026-06-03 — Sprint Planning Cycle)
- **#188** — STATUS.md updated for 2026-06-03 sprint planning cycle (this entry). Last updated date set to 2026-06-03.
- **#187** — Talos PR for api-company Flux source manifests: PR #399 on `leeworks-agents/Talos` confirmed valid; upstream deploy PR created targeting `0xWheatyz/Talos`.
- **#186** — Air Quality API audit complete: `openapi.yaml` ✅ exists at repo root in `leeworks-agents/air-quality`; server implementation ✅ present (`src/server.ts`, `src/app.ts`, `src/routes/`); STATUS.md Air Quality row updated to `[x]/[x]`.
- **#178** relabeled — added `blocked` label (depends on #173 + Flux active).
- **#174** relabeled — added `blocked` label (depends on #18 deploy + #7 monitoring).
- **Current Blockers updated:** #187 added before #90 (same unblock target, more actionable).
- **`kustomize build flux/` = PASS** — no regressions confirmed.
## Completed Previous Cycle (2026-06-02 — Sprint Planning Cycle #175/#176)
- **#176** — ROADMAP.md Phase 6 unchecked items annotated with issue cross-references: DNS — issues #33, #106, #150; PayPal — issue #19; Paid tiers — issues #44 (original 3), #151 (VIN Decoder). No checked items changed.
- **#175** — 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 documentation issues created (#175 STATUS.md update, #176 ROADMAP Phase 5/6 annotation). 0 code issues created (all ROADMAP items already covered by existing issues). 0 issues closed (none stale). 0 reprioritizations.
- **Current Blockers updated:** #173 (ESO source secrets in `external-secrets` ns) and #174 (VIN Decoder metrics instrumentation) added.
- **`kustomize build flux/` = PASS** — no regressions confirmed.
## Completed Previous 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-03)
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)
8. **P1 #187** — Merge Talos PR for api-company Flux source manifests (operator) — upstream deploy PR open, same unblock target as #90
9. **P1 #90** — Wire Flux GitRepository + Kustomization for api-company in `0xWheatyz/Talos` (superseded by #187 upstream PR)
10. **P2 #80** — Create `gitea-image-automation-token` secret in `flux-system` namespace (operator) — enables Flux image automation
11. **P2 #173** — Create ESO source secrets in `external-secrets` namespace for RapidAPI proxy-secret syncing (operator) — blocks ESO sync
12. **P2 #174** — VIN Decoder metrics instrumentation in `leeworks-agents/vin-decoder` repo (agent task, depends on #18 deploy)
13. **P2 #178** — Validate ESO HelmRelease deployment and ExternalSecret sync for all 4 API namespaces (depends on #173 + Flux active)
14. **P2 #179** — Execute extended full-stack Flux validation checklist including VIN Decoder (depends on #126, #127, #128)
## 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 16). `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`