Review: Align k8s manifests with convention and add /metrics endpoint
Verdict: READY
Template Completeness
- [x] Type — Feature
- [x] Lineage — Standalone, discovered during platform onboarding
- [x] Repo — forgejo_admin/linkedin-scheduler-remote
- [x] User Story — Full As a / I want / So that format
- [x] Context — Explains why remaining delta matters (inline manifests break convention, ServiceMonitor 404)
- [x] File Targets — 5 modify/create targets + 4 do-not-touch targets with reasons
- [x] Acceptance Criteria — 7 criteria
- [x] Test Expectations — 3 items + run command
- [x] Constraints — 4 constraints including stale PR #4 handling
- [x] Checklist — 3 items
- [x] Related — 2 references
All 11 required sections from
template-issue-feature are present and filled.Traceability
- [x] story:superuser-onboard — platform operator onboarding services
- [x] arch:ci-pipeline — CI/CD pipeline infrastructure
- [x] Forgejo issue — forgejo_admin/linkedin-scheduler-remote#3, open
All three legs of the traceability triangle are complete.
File Targets
- [x]
k8s/deployment.yaml— verified: exists on main, confirmed 3 YAML documents (Deployment + Service + PVC separated by---). Ticket correctly identifies the split needed. - [x]
k8s/service.yaml— verified: does NOT exist yet. New file, as ticket states. Service content matches what is inline in deployment.yaml (port 8000, selector app: linkedin-scheduler-remote). - [x]
k8s/pvc.yaml— verified: does NOT exist yet. New file, as ticket states. PVC content matches inline (linkedin-mcp-data, 100Mi, local-path). - [x]
k8s/kustomization.yaml— verified: exists, currently lists only deployment.yaml + servicemonitor.yaml. Ticket correctly says to add service.yaml and pvc.yaml. - [x]
server.py— verified: exists, confirmed NO /metrics endpoint (grep empty). Ticket correctly identifies the gap.
Do-not-touch files verified:
- [x]
.woodpecker.yml— exists, CI pipeline correct (ruff check + kaniko build) - [x]
Dockerfile— exists - [x]
k8s/servicemonitor.yaml— exists, scraping /metrics at port http every 30s - [x]
pyproject.toml— exists, ruff config present
Repo Placement
OK. Issue filed on forgejo_admin/linkedin-scheduler-remote, all changes target that same repo. No cross-repo concern.
Dependencies
No dependencies. Board item #65 has no
depends: label. No other board items reference this ticket or share the linkedin-scheduler-remote repo. Sibling item #63 (gcal-mcp-remote CI) is independent work on a different repo.Acceptance Criteria
7 criteria total. All are verifiable by an agent:
- AC 1-4: Structural file checks — verifiable via
kubectl kustomize k8s/rendering 4 separate resources - AC 5: /metrics endpoint — verifiable via
curl http://localhost:8000/metrics - AC 6: ArgoCD sync — integration-level, appropriate as post-deploy validation (not agent-automatable in PR)
- AC 7: CI passes — verifiable by Woodpecker pipeline on PR push
Test commands are real and match the repo tooling (kubectl kustomize, curl, ruff via Woodpecker).
Blast Radius
Low. Verified that notion-mcp-remote already follows the split-file convention (separate deployment.yaml, service.yaml, pvc.yaml, servicemonitor.yaml in k8s/). This change aligns linkedin-scheduler-remote with that established pattern. No downstream consumers affected by the manifest split. The /metrics endpoint is additive — no existing consumers to break.
Decomposition
5 file targets in 1 repo, 7 AC. The 7 AC count exceeds the threshold of 5, but 4 of the 7 are structural file checks handled by a single kustomize extraction pass (copy-paste from multi-doc YAML to individual files). The only substantive code work is the /metrics endpoint addition in server.py. Closing stale PR #4 is a single API call. Estimated agent time: ~3 minutes. No decomposition needed.
Recommendation
No action needed. Ticket is ready for execution.
Prior Reviews
This is the third review (v3). Prior reviews:
review-65-2026-03-27— NEEDS_REFINEMENT: scope was ~80% stale, missing template sectionsreview-65-2026-03-27-v2— NEEDS_REFINEMENT: 6 of 11 sections still missing, deprecated Plan header, no /metrics AC
All issues from both prior reviews have been resolved in the current issue body. Title was updated to reflect the actual remaining delta. All 11 template sections are now present and accurate.