Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1a1a109aa3 | |||
| 618d1acd68 | |||
| 459fc99f31 | |||
| e470826a78 | |||
| c5947359c5 | |||
| 5555c7524b | |||
| 8c46feb1c6 | |||
| 28878773dd | |||
| c71651d4a2 | |||
| 636d68ced5 | |||
| b62bf046f6 | |||
| 181b9f9501 | |||
| d465c26832 | |||
| 49af1e73a6 |
@@ -1,6 +1,6 @@
|
|||||||
# Company Status
|
# Company Status
|
||||||
|
|
||||||
_Last updated: 2026-05-27 (agent cycle — night triage)_
|
_Last updated: 2026-05-28 (agent cycle — cycle-2 triage)_
|
||||||
|
|
||||||
## APIs
|
## APIs
|
||||||
| API | Spec | Code | Deployed | Listed on RapidAPI | Paying Users | MRR |
|
| API | Spec | Code | Deployed | Listed on RapidAPI | Paying Users | MRR |
|
||||||
@@ -21,10 +21,39 @@ Legend: [x]=done, [~]=in-progress, [ ]=not started
|
|||||||
- **API service manifests:** `flux/zip-enrichment/`, `flux/holidays/`, `flux/air-quality/` scaffolded (PR #48, closes #46)
|
- **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
|
- **Image automation:** `flux/image-automation/` — ImageRepository + ImagePolicy + ImageUpdateAutomation for all three APIs
|
||||||
|
|
||||||
## Completed This Cycle (2026-05-27 — Night Triage)
|
## Completed This Cycle (2026-05-28 — Cycle-2 Triage)
|
||||||
- **#67** — New issue triaged: grafana.leeworks.dev missing from DNS checklist. Confirmed `docs/operator-runbook.md` Phase 4 DNS table already lists 7 subdomains including grafana (added by #62). No code change needed; gated on operator DNS setup. Comment posted.
|
- **#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.
|
||||||
- **#66** — New issue triaged: Flux reconciliation validation checklist. Blocked on operator completing Phase 0 (#47, #2, #3, #4). `kustomize build flux/` = PASS confirmed. Comment posted.
|
- **No open PRs** — queue empty.
|
||||||
- **No open PRs** — nothing to merge or review.
|
- **`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.
|
- **`kustomize build flux/` = PASS** — no regressions.
|
||||||
|
|
||||||
## Completed Previous Cycle (2026-05-27 — Evening Triage)
|
## Completed Previous Cycle (2026-05-27 — Evening Triage)
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ spec:
|
|||||||
- name: gitea-registry
|
- name: gitea-registry
|
||||||
containers:
|
containers:
|
||||||
- name: docs-site
|
- name: docs-site
|
||||||
image: registry.leeworks.dev/leeworks-agents/docs-site:latest
|
image: registry.leeworks.dev/leeworks-agents/docs-site:latest # {"$imagepolicy": "flux-system:docs-site"}
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 80
|
- containerPort: 80
|
||||||
resources:
|
resources:
|
||||||
|
|||||||
@@ -37,3 +37,15 @@ spec:
|
|||||||
policy:
|
policy:
|
||||||
semver:
|
semver:
|
||||||
range: ">=0.1.0"
|
range: ">=0.1.0"
|
||||||
|
---
|
||||||
|
apiVersion: image.toolkit.fluxcd.io/v1beta2
|
||||||
|
kind: ImagePolicy
|
||||||
|
metadata:
|
||||||
|
name: docs-site
|
||||||
|
namespace: flux-system
|
||||||
|
spec:
|
||||||
|
imageRepositoryRef:
|
||||||
|
name: docs-site
|
||||||
|
policy:
|
||||||
|
alphabetical:
|
||||||
|
order: asc
|
||||||
|
|||||||
@@ -32,3 +32,14 @@ spec:
|
|||||||
interval: 5m
|
interval: 5m
|
||||||
secretRef:
|
secretRef:
|
||||||
name: gitea-leeworks-agents-token
|
name: gitea-leeworks-agents-token
|
||||||
|
---
|
||||||
|
apiVersion: image.toolkit.fluxcd.io/v1beta2
|
||||||
|
kind: ImageRepository
|
||||||
|
metadata:
|
||||||
|
name: docs-site
|
||||||
|
namespace: flux-system
|
||||||
|
spec:
|
||||||
|
image: registry.leeworks.dev/leeworks-agents/docs-site
|
||||||
|
interval: 5m
|
||||||
|
secretRef:
|
||||||
|
name: gitea-leeworks-agents-token
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ spec:
|
|||||||
- alert: APIDataStale
|
- alert: APIDataStale
|
||||||
expr: |
|
expr: |
|
||||||
api_data_freshness_seconds{job=~"zip|holidays|air-quality"} > 2592000
|
api_data_freshness_seconds{job=~"zip|holidays|air-quality"} > 2592000
|
||||||
for: 5m
|
for: 30m
|
||||||
labels:
|
labels:
|
||||||
severity: warning
|
severity: warning
|
||||||
team: api-company
|
team: api-company
|
||||||
@@ -79,6 +79,20 @@ spec:
|
|||||||
summary: "Stale dataset on {{ $labels.job }} ({{ $labels.dataset }})"
|
summary: "Stale dataset on {{ $labels.job }} ({{ $labels.dataset }})"
|
||||||
description: "{{ $labels.job }} dataset '{{ $labels.dataset }}' has not been re-seeded in {{ $value | humanizeDuration }} (threshold: 30 days). Re-seed required."
|
description: "{{ $labels.job }} dataset '{{ $labels.dataset }}' has not been re-seeded in {{ $value | humanizeDuration }} (threshold: 30 days). Re-seed required."
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
# APIDataCriticallyStale — data freshness > 60 days
|
||||||
|
# -------------------------------------------------------------------
|
||||||
|
- alert: APIDataCriticallyStale
|
||||||
|
expr: |
|
||||||
|
api_data_freshness_seconds{job=~"zip|holidays|air-quality"} > 5184000
|
||||||
|
for: 1h
|
||||||
|
labels:
|
||||||
|
severity: critical
|
||||||
|
team: api-company
|
||||||
|
annotations:
|
||||||
|
summary: "API data is critically stale on {{ $labels.job }}"
|
||||||
|
description: "{{ $labels.job }} data has not been re-seeded in more than 60 days ({{ $value | humanizeDuration }})"
|
||||||
|
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
# APIDown — any API job absent for 2 min
|
# APIDown — any API job absent for 2 min
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user