Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 01ec869a35 | |||
| cfb8acea58 | |||
| 3a56a9f4f3 | |||
| cf33100c4b | |||
| ca91ebeae9 | |||
| 8ffcdf53db | |||
| dac39c8fa7 | |||
| 5fccccb0ed | |||
| d8cc0402a3 | |||
| 1982e74aaf | |||
| 64f1d1bd12 | |||
| daa3866926 | |||
| 2208c61ff1 | |||
| 99ffdf48c4 |
+9
-2
@@ -6,9 +6,11 @@ Cross-repo milestones. Per-API phases live in each API repo's ROADMAP.md.
|
|||||||
|
|
||||||
## Phase 0 — Orientation (one-time)
|
## Phase 0 — Orientation (one-time)
|
||||||
- [x] Audit cluster: nodes, namespaces, ingress, Flux state → `docs/cluster-audit.md` (issue #36 — closed ✅)
|
- [x] Audit cluster: nodes, namespaces, ingress, Flux state → `docs/cluster-audit.md` (issue #36 — closed ✅)
|
||||||
- [ ] Add Flux GitRepository + Kustomization watching `leeworks-agents/api-company` — issue #2
|
- [ ] 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
|
- [ ] 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
|
- [ ] 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
|
## Phase 1 — API Contracts
|
||||||
Each API repo writes its `openapi.yaml` first and lints it. Spec is the source of truth.
|
Each API repo writes its `openapi.yaml` first and lints it. Spec is the source of truth.
|
||||||
@@ -25,7 +27,9 @@ Per-API: implement Fastify/FastAPI service matching `openapi.yaml` exactly. Rapi
|
|||||||
## Phase 4 — Monitoring
|
## Phase 4 — Monitoring
|
||||||
- [ ] Prometheus + Grafana via Flux HelmRelease (`flux/monitoring/`) — issue #7
|
- [ ] Prometheus + Grafana via Flux HelmRelease (`flux/monitoring/`) — issue #7
|
||||||
- [ ] Gatus public status page at `status.leeworks.dev` — issue #8
|
- [ ] Gatus public status page at `status.leeworks.dev` — issue #8
|
||||||
- [ ] Instrument every API with `api_requests_total`, `api_response_duration_seconds`, `api_data_freshness_seconds` — issue #27
|
- [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 metrics instrumentation + Grafana dashboard (issue #129 — closed ✅)
|
||||||
- [x] VIN Decoder Gatus health check (issue #134 — closed ✅)
|
- [x] VIN Decoder Gatus health check (issue #134 — closed ✅)
|
||||||
|
|
||||||
@@ -47,6 +51,9 @@ Per-API: implement Fastify/FastAPI service matching `openapi.yaml` exactly. Rapi
|
|||||||
- [ ] PayPal linked to RapidAPI (manual, on 18th birthday) — issue #19
|
- [ ] PayPal linked to RapidAPI (manual, on 18th birthday) — issue #19
|
||||||
- [ ] Paid tiers enabled on RapidAPI listings (manual) — issues #44 (original 3), #151 (VIN Decoder)
|
- [ ] 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
|
## Revenue target
|
||||||
|
|
||||||
$100/mo **net** ≈ $136/mo gross after RapidAPI 25% + PayPal ~2%.
|
$100/mo **net** ≈ $136/mo gross after RapidAPI 25% + PayPal ~2%.
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
# Company Status
|
# Company Status
|
||||||
|
|
||||||
_Last updated: 2026-06-02 (sprint planning cycle — #175/#176 STATUS/ROADMAP Phase 5/6 annotation)_
|
_Last updated: 2026-06-04_
|
||||||
|
|
||||||
## APIs
|
## APIs
|
||||||
| API | Spec | Code | Deployed | Listed on RapidAPI | Paying Users | MRR |
|
| API | Spec | Code | Deployed | Listed on RapidAPI | Paying Users | MRR |
|
||||||
|----------------|------|------|----------|--------------------|--------------|-----|
|
|----------------|------|------|----------|--------------------|--------------|-----|
|
||||||
| ZIP Enrichment | [~] | [~] | [ ] | [ ] | 0 | $0 |
|
| ZIP Enrichment | [x] | [x] | [ ] | [ ] | 0 | $0 |
|
||||||
| Holidays | [~] | [~] | [ ] | [ ] | 0 | $0 |
|
| Holidays | [x] | [x] | [ ] | [ ] | 0 | $0 |
|
||||||
| Air Quality | [ ] | [ ] | [ ] | [ ] | 0 | $0 |
|
| Air Quality | [x] | [x] | [ ] | [ ] | 0 | $0 |
|
||||||
| VIN Decoder | [x] | [x] | [ ] | [ ] | 0 | $0 |
|
| VIN Decoder | [x] | [x] | [ ] | [ ] | 0 | $0 |
|
||||||
|
|
||||||
Legend: [x]=done, [~]=in-progress, [ ]=not started
|
Legend: [x]=done, [~]=in-progress, [ ]=not started
|
||||||
@@ -23,7 +23,42 @@ Legend: [x]=done, [~]=in-progress, [ ]=not started
|
|||||||
- **Image automation:** `flux/image-automation/` — ImageRepository + ImagePolicy + ImageUpdateAutomation for all three APIs
|
- **Image automation:** `flux/image-automation/` — ImageRepository + ImagePolicy + ImageUpdateAutomation for all three APIs
|
||||||
- **VIN Decoder manifests:** `flux/vin-decoder/` — Flux HelmRelease + Kustomization committed (issue #140)
|
- **VIN Decoder manifests:** `flux/vin-decoder/` — Flux HelmRelease + Kustomization committed (issue #140)
|
||||||
|
|
||||||
## Completed This Cycle (2026-06-02 — Sprint Planning Cycle #175/#176)
|
## Completed This 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.
|
- **#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.
|
- **#175** — STATUS.md updated with 2026-06-02 sprint planning cycle results (this entry). Last updated date set to 2026-06-02.
|
||||||
@@ -54,7 +89,7 @@ Legend: [x]=done, [~]=in-progress, [ ]=not started
|
|||||||
- **PR #160 closed** — had merge conflicts and ROADMAP.md regressions (unchecked completed items). Clean fix applied here.
|
- **PR #160 closed** — had merge conflicts and ROADMAP.md regressions (unchecked completed items). Clean fix applied here.
|
||||||
- **`kustomize build flux/` = PASS** — no regressions.
|
- **`kustomize build flux/` = PASS** — no regressions.
|
||||||
|
|
||||||
## Current Blockers (as of 2026-06-02)
|
## Current Blockers (as of 2026-06-04)
|
||||||
|
|
||||||
In dependency order — operator tasks unless noted:
|
In dependency order — operator tasks unless noted:
|
||||||
|
|
||||||
@@ -65,8 +100,13 @@ In dependency order — operator tasks unless noted:
|
|||||||
5. **P1 #83** — Configure `GITEA_TOKEN` Actions secret in zip-enrichment, holidays, air-quality repos (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 ✅)
|
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)
|
7. **P1 #127** — Create `gitea-registry` imagePullSecret in `vin-decoder` namespace (operator)
|
||||||
8. **P2 #173** — Create ESO source secrets in `external-secrets` namespace for RapidAPI proxy-secret syncing (operator) — blocks ESO sync
|
8. **P1 #187** — Merge Talos PR for api-company Flux source manifests (operator) — upstream deploy PR open, same unblock target as #90
|
||||||
9. **P2 #174** — VIN Decoder metrics instrumentation in `leeworks-agents/vin-decoder` repo (agent task, depends on #18 deploy)
|
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)
|
## Sprint Summary (2026-06-01 — Sprint Planning Cycle)
|
||||||
- **Issues closed this cycle:** 0
|
- **Issues closed this cycle:** 0
|
||||||
|
|||||||
Reference in New Issue
Block a user