@claude — provision the FuzePlan data-tier (Mongo + Neo4j) and seal it for the fuzeplan namespace
Context / diagnosis (FuzePlan → Contabo). FuzePlan is deployed and live: plan.fuzefront.com/ = 200 (frontend MF remote serves remoteEntry.js), Argo app synced, ghcr-pull secret working (#137 ✅). The backend is the last gap: plan.fuzefront.com/api/* = 502 because the backend has no datastore credentials — its SealedSecret fuzeplan-secrets (namespace fuzeplan) is an empty scaffold (encryptedData: {}), so MONGO_URL/NEO4J_* never reach the pod. (Separately, FuzePlan is landing a /healthz probe fix so the backend reports Ready without the SPA static files — that's on our side.)
Mongo/Neo4j are your shared datastores; FuzePlan must not operate the cluster or edit FuzeInfra directly, so delegating per the family protocol.
Ask
- Provision a FuzePlan-scoped MongoDB on the shared cluster Mongo:
- database
FuzePlan, a dedicated least-privilege user scoped only to FuzePlan (readWrite on that DB; no admin/other-DB access).
- Provision a FuzePlan-scoped Neo4j user + database (least-priv) on the shared Neo4j.
- Seal the connection values into a SealedSecret with strict scope name=
fuzeplan-secrets, namespace=fuzeplan, using the cluster's active sealed-secrets cert (kubeseal), for these keys:
MONGO_URL — in-cluster SRV/standard URI (svc DNS, e.g. mongodb://<user>:<pw>@mongodb.fuzeinfra.svc.cluster.local:27017/FuzePlan?authSource=FuzePlan)
MONGO_DB = FuzePlan
NEO4J_URL (bolt://… svc DNS), NEO4J_USER, NEO4J_PASSWORD
- Return the sealed
encryptedData: block in a reply on this issue (it is RSA-encrypted → safe to paste publicly). FuzePlan will commit it into an Argo-synced chart template (deploy/helm/fuzeplan/templates) named fuzeplan-secrets, so it reconciles automatically — no out-of-band apply needed on your side.
- If you'd rather open a PR against FuzePlan adding that template, that's fine too (
izzywdev/FuzePlan, path deploy/helm/fuzeplan/templates/).
Acceptance
- FuzePlan-scoped Mongo
FuzePlan DB + least-priv user exist; Neo4j user/db exist.
- A strict-scoped sealed
encryptedData block for fuzeplan/fuzeplan-secrets (the 5 keys above) is posted here (or PR'd).
- After FuzePlan commits it + Argo syncs,
plan.fuzefront.com/api/health returns 200 and login against the bootstrapped root admin works.
STATE (recall)
@claude — provision the FuzePlan data-tier (Mongo + Neo4j) and seal it for the
fuzeplannamespaceContext / diagnosis (FuzePlan → Contabo). FuzePlan is deployed and live:
plan.fuzefront.com/= 200 (frontend MF remote servesremoteEntry.js), Argo app synced, ghcr-pull secret working (#137 ✅). The backend is the last gap:plan.fuzefront.com/api/*= 502 because the backend has no datastore credentials — its SealedSecretfuzeplan-secrets(namespacefuzeplan) is an empty scaffold (encryptedData: {}), soMONGO_URL/NEO4J_*never reach the pod. (Separately, FuzePlan is landing a/healthzprobe fix so the backend reports Ready without the SPA static files — that's on our side.)Mongo/Neo4j are your shared datastores; FuzePlan must not operate the cluster or edit FuzeInfra directly, so delegating per the family protocol.
Ask
FuzePlan, a dedicated least-privilege user scoped only toFuzePlan(readWrite on that DB; no admin/other-DB access).fuzeplan-secrets, namespace=fuzeplan, using the cluster's active sealed-secrets cert (kubeseal), for these keys:MONGO_URL— in-cluster SRV/standard URI (svc DNS, e.g.mongodb://<user>:<pw>@mongodb.fuzeinfra.svc.cluster.local:27017/FuzePlan?authSource=FuzePlan)MONGO_DB=FuzePlanNEO4J_URL(bolt://… svc DNS),NEO4J_USER,NEO4J_PASSWORDencryptedData:block in a reply on this issue (it is RSA-encrypted → safe to paste publicly). FuzePlan will commit it into an Argo-synced chart template (deploy/helm/fuzeplan/templates) namedfuzeplan-secrets, so it reconciles automatically — no out-of-band apply needed on your side.izzywdev/FuzePlan, pathdeploy/helm/fuzeplan/templates/).Acceptance
FuzePlanDB + least-priv user exist; Neo4j user/db exist.encryptedDatablock forfuzeplan/fuzeplan-secrets(the 5 keys above) is posted here (or PR'd).plan.fuzefront.com/api/healthreturns 200 and login against the bootstrapped root admin works.STATE (recall)
deploy/helm/fuzeplan(Argo path), backend readsMONGO_URL,MONGO_DB,NEO4J_URL,NEO4J_USER,NEO4J_PASSWORDviasecretKeyRef→fuzeplan-secrets(alloptional:true).fuzeplan-app-secrets(FLASK/ENCRYPTION/ADMIN) already sealed & Argo-synced. First-runbootstrap_serviceseeds a root admin into Mongo on backend start (idempotent) once Mongo is reachable.fuzeplan.@izzywdev BLOCKED: <q>+ updated STATE; end withDONE: <sealed block or PR link>.