Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 57a1f67802 | |||
| fb68a12b86 | |||
| 5dd9f4dbc6 | |||
| 01ec869a35 | |||
| cfb8acea58 | |||
| 3a56a9f4f3 | |||
| cf33100c4b | |||
| ca91ebeae9 | |||
| 8ffcdf53db | |||
| dac39c8fa7 | |||
| 5fccccb0ed | |||
| d8cc0402a3 | |||
| 1982e74aaf | |||
| 64f1d1bd12 | |||
| daa3866926 | |||
| 2208c61ff1 | |||
| 99ffdf48c4 | |||
| 2eadeeb4ee | |||
| a30834db51 | |||
| b4460ad818 | |||
| e228f61c21 | |||
| 80f4d5be22 | |||
| ee224fba3d |
+17
-10
@@ -6,9 +6,11 @@ Cross-repo milestones. Per-API phases live in each API repo's ROADMAP.md.
|
||||
|
||||
## Phase 0 — Orientation (one-time)
|
||||
- [x] Audit cluster: nodes, namespaces, ingress, Flux state → `docs/cluster-audit.md` (issue #36 — closed ✅)
|
||||
- [ ] Add Flux GitRepository + Kustomization watching `leeworks-agents/api-company`
|
||||
- [ ] Deploy `gitea-act-runner` in cluster via Flux HelmRelease (`flux/gitea-runner/`)
|
||||
- [ ] Stand up `registry.leeworks.dev` (container registry) — required before any API CI works
|
||||
- [ ] Add Flux GitRepository + Kustomization watching `leeworks-agents/api-company` — issue #2 (Talos PR implementation: issue #187)
|
||||
- [ ] Deploy `gitea-act-runner` in cluster via Flux HelmRelease (`flux/gitea-runner/`) — issue #3
|
||||
- [ ] Stand up `registry.leeworks.dev` (container registry) — required before any API CI works — issue #4
|
||||
- [ ] Validate ESO HelmRelease deployment and ExternalSecret sync for all 4 API namespaces — issue #178
|
||||
- [ ] Extend full-stack Flux validation checklist to cover VIN Decoder — issue #179 (extends #66)
|
||||
|
||||
## Phase 1 — API Contracts
|
||||
Each API repo writes its `openapi.yaml` first and lints it. Spec is the source of truth.
|
||||
@@ -23,16 +25,18 @@ Per-API: implement Fastify/FastAPI service matching `openapi.yaml` exactly. Rapi
|
||||
- [x] VIN Decoder: Fastify server implementation (issue #121 — closed ✅)
|
||||
|
||||
## Phase 4 — Monitoring
|
||||
- [ ] Prometheus + Grafana via Flux HelmRelease (`flux/monitoring/`)
|
||||
- [ ] Gatus public status page at `status.leeworks.dev`
|
||||
- [ ] Instrument every API with `api_requests_total`, `api_response_duration_seconds`, `api_data_freshness_seconds`
|
||||
- [ ] Prometheus + Grafana via Flux HelmRelease (`flux/monitoring/`) — issue #7
|
||||
- [ ] Gatus public status page at `status.leeworks.dev` — issue #8
|
||||
- [x] Instrument every API with `api_requests_total`, `api_response_duration_seconds`, `api_data_freshness_seconds` (issue #27 — closed ✅)
|
||||
- [x] Add Prometheus metrics endpoint to holidays service (issue #180 — closed ✅)
|
||||
- [ ] Verify VIN Decoder metrics endpoint and ServiceMonitor scrape config — issue #174
|
||||
- [x] VIN Decoder metrics instrumentation + Grafana dashboard (issue #129 — closed ✅)
|
||||
- [x] VIN Decoder Gatus health check (issue #134 — closed ✅)
|
||||
|
||||
## Phase 5 — Documentation site
|
||||
- [x] `docs-site/` Astro + Redoc skeleton (issue #28 — closed ✅)
|
||||
- [x] Gitea Actions pipeline that copies per-API `openapi.yaml` files at build time (issues #29 ✅, #38 ✅, #85 ✅)
|
||||
- [ ] Deploy to `docs.leeworks.dev` via Flux
|
||||
- [ ] Deploy to `docs.leeworks.dev` via Flux — issue #30
|
||||
- [x] One SEO blog post per API minimum (issues #39 ✅ — ZIP/Holidays/AirQuality, #124 ✅ — VIN Decoder)
|
||||
- [x] VIN Decoder docs page (issue #123 — closed ✅)
|
||||
- [x] VIN Decoder SEO blog post (issue #124 — closed ✅)
|
||||
@@ -41,11 +45,14 @@ Per-API: implement Fastify/FastAPI service matching `openapi.yaml` exactly. Rapi
|
||||
- [x] `docs/legal/terms-of-service.md` (issue #40 — closed ✅)
|
||||
- [x] `docs/legal/privacy-policy.md` (issue #40 — closed ✅)
|
||||
- [x] `docs/legal/acceptable-use-policy.md` (issues #40 ✅, #89 ✅)
|
||||
- [ ] DNS: `zip.leeworks.dev`, `holidays.leeworks.dev`, `aqi.leeworks.dev`, `docs.`, `status.`, `registry.`
|
||||
- [ ] DNS: `zip.leeworks.dev`, `holidays.leeworks.dev`, `aqi.leeworks.dev`, `docs.`, `status.`, `registry.` — issues #33, #106, #150
|
||||
- [x] VIN Decoder DNS `vin.leeworks.dev` (issue #130 — closed ✅)
|
||||
- [x] VIN Decoder RapidAPI listing (issue #131 — closed ✅ as tracker; operator action required)
|
||||
- [ ] PayPal linked to RapidAPI (manual, on 18th birthday)
|
||||
- [ ] Paid tiers enabled on RapidAPI listings (manual)
|
||||
- [ ] PayPal linked to RapidAPI (manual, on 18th birthday) — issue #19
|
||||
- [ ] Paid tiers enabled on RapidAPI listings (manual) — issues #44 (original 3), #151 (VIN Decoder)
|
||||
|
||||
- [ ] Execute pre-launch checklist before go-live — issue #166
|
||||
- [ ] Publish launch announcement (HN, Reddit, Twitter, Dev.to) — issue #167
|
||||
|
||||
## Revenue target
|
||||
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
# Company Status
|
||||
|
||||
_Last updated: 2026-06-01 (sprint-planning cycle)_
|
||||
_Last updated: 2026-06-04_
|
||||
|
||||
## APIs
|
||||
| API | Spec | Code | Deployed | Listed on RapidAPI | Paying Users | MRR |
|
||||
|----------------|------|------|----------|--------------------|--------------|-----|
|
||||
| ZIP Enrichment | [~] | [~] | [ ] | [ ] | 0 | $0 |
|
||||
| Holidays | [~] | [~] | [ ] | [ ] | 0 | $0 |
|
||||
| Air Quality | [ ] | [ ] | [ ] | [ ] | 0 | $0 |
|
||||
| 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)
|
||||
- **Flux wiring (api-company):** `flux/api-company-source/` — Fork PR #399 **MERGED** to leeworks-agents/Talos; upstream PR #14 open on 0xWheatyz/Talos — awaiting operator merge to activate Flux (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)
|
||||
@@ -23,19 +23,94 @@ Legend: [x]=done, [~]=in-progress, [ ]=not started
|
||||
- **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-01 — Sprint Planning Cycle)
|
||||
## Completed This Cycle (2026-06-04 — Triage Cycle #204)
|
||||
|
||||
- **Triage** — All 29 open `agent-ready` issues reviewed and commented with current status (2026-06-04).
|
||||
- **#204** (smoke tests): ❌ BLOCKED — all HTTP endpoints timeout; DNS not configured; kubectl unreachable.
|
||||
- **#203** (ClusterIssuer): ❌ BLOCKED — kubectl not accessible from agent environment.
|
||||
- **#187, #90, #2** (Flux wiring): Waiting on operator to merge upstream Talos PR #14.
|
||||
- **#179, #178, #66** (validation checklists): Blocked on Flux active + cluster access.
|
||||
- **#174** (VIN metrics): `kustomize build flux/` PASS; blocked on cluster deploy.
|
||||
- **#173, #81, #128, #126, #127, #83, #80, #79, #77, #76, #74, #73, #70** (secrets): Manual operator tasks, all documented.
|
||||
- **#167, #166** (launch/pre-launch): Blocked on DNS + Flux + RapidAPI + PayPal.
|
||||
- **#161, #151, #150, #139, #116, #106, #47, #44, #33, #30, #19, #8, #7, #4, #3**: Manual operator tasks or blocked on operator actions.
|
||||
- **`kustomize build flux/` = PASS** — no regressions.
|
||||
- **0 PRs open** — nothing to review or merge.
|
||||
- **Critical path unchanged:** Operator must (1) create `0xWheatyz/api-company` (#47), (2) merge upstream Talos PR #14 (#187) to activate Flux.
|
||||
|
||||
## Completed Previous Cycle (2026-06-04 — Sprint Planning Cycle #200/#201)
|
||||
|
||||
- **#200** — STATUS.md Infrastructure section updated: Flux wiring row for `flux/api-company-source/` updated to reflect Fork PR #399 **MERGED** to leeworks-agents/Talos; upstream PR #14 open on 0xWheatyz/Talos awaiting operator merge. Current Blockers updated to note upstream PR #14 as critical gate.
|
||||
- **#201** — Sprint planning STATUS.md update for 2026-06-04 cycle. Issues #200 and #201 created this cycle. ROADMAP cross-reference: all 18 unchecked items confirmed grounded in open issues (no gaps). Staleness check: oldest open issue is #2 from 2026-05-18 (17 days, not stale — threshold 30 days). Priority review: all labels confirmed appropriate. Critical path: operator-gated on 0xWheatyz/Talos PR #14 merge.
|
||||
- **`kustomize build flux/` = PASS** — no regressions confirmed.
|
||||
|
||||
## Completed Previous Cycle (2026-06-04 — Sprint Planning Cycle #198)
|
||||
|
||||
- **#198** — STATUS.md updated for 2026-06-04 sprint planning cycle. Last updated date set to 2026-06-04.
|
||||
- **Sprint Summary:** 0 new code issues created (all ROADMAP items grounded — all 18 unchecked items have corresponding open issues). 0 issues closed (no stale; oldest is #2 at 17 days). 0 label changes. Critical path is entirely operator-gated: Talos merge of #187 unblocks the #2/#3/#4 chain.
|
||||
- **`kustomize build flux/` = PASS** — no regressions confirmed.
|
||||
|
||||
## Completed Previous Cycle (2026-06-04 — Sprint Planning Cycle #196)
|
||||
|
||||
- **#196** — STATUS.md updated for 2026-06-04 sprint planning cycle. Last updated date set to 2026-06-04.
|
||||
- **Sprint Summary:** ROADMAP cross-reference complete — all 18 unchecked items have corresponding open issues (no gaps). 1 new issue created: #196 (this STATUS.md update). 0 issues closed (no stale issues; oldest open issue is #2 from 2026-05-18, only 17 days old). 0 label changes (all priority/complexity labels correct). Critical path remains entirely operator-gated.
|
||||
- **`kustomize build flux/` = PASS** — no regressions confirmed.
|
||||
|
||||
## Completed Previous 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 This Cycle (2026-06-01 — Triage Cycle)
|
||||
## 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)
|
||||
## Current Blockers (as of 2026-06-04)
|
||||
|
||||
In dependency order — operator tasks unless noted:
|
||||
|
||||
@@ -46,6 +121,13 @@ In dependency order — operator tasks unless noted:
|
||||
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 upstream PR #14 on 0xWheatyz/Talos to activate Flux for api-company (operator) — Fork PR #399 already MERGED to leeworks-agents/Talos; upstream PR #14 is the critical gate; unblocks #2, #3, #4, #66 chain
|
||||
9. **P1 #90** — Wire Flux GitRepository + Kustomization for api-company in `0xWheatyz/Talos` (superseded by #187; upstream PR #14 pending operator merge)
|
||||
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
|
||||
@@ -59,7 +141,7 @@ In dependency order — operator tasks unless noted:
|
||||
- **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 This Cycle (2026-05-31 — Sprint Cycle)
|
||||
## 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).
|
||||
@@ -67,8 +149,8 @@ In dependency order — operator tasks unless noted:
|
||||
## 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) — **open, in progress** (P1 blocker)
|
||||
- **#121** — VIN Decoder Fastify server — **open, in progress** (P1 blocker, depends on #120)
|
||||
- **#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 ✅**
|
||||
@@ -101,8 +183,8 @@ See **Current Blockers** section above for the full ordered list as of 2026-06-0
|
||||
- **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 — **open, P1**
|
||||
- **#121** — VIN Decoder Fastify server — **open, P1**
|
||||
- **#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
|
||||
|
||||
Reference in New Issue
Block a user