109 lines
7.7 KiB
Markdown
109 lines
7.7 KiB
Markdown
# Current State
|
|
|
|
This file is the integrated default-branch snapshot. Feature tasks record progress in `30-worklog/tasks/{task_id}.md` and propose canonical changes for the Integration Gate. Feature tasks must not rewrite this file; it changes only in integration mode.
|
|
|
|
## Integrated Through
|
|
|
|
- `c44274f` (rebased integration of `84d84ba`, task `20260812-rds-postgres-adapter-7f2c1a`)
|
|
- `79d29bb` (cross-platform ACK manifest validation fix)
|
|
- `4485899` (task-scoped Next.js frontend plus Go backend target design and explicit not-implemented progress record)
|
|
- `064e155` (canonical ADR-003, architecture, current-state, history, and commitment promotion)
|
|
- `b8db39d` (merge of `aef5a97` — completed Go backend modules; tasks `20260812-go-migration-foundation-b74c9e21`, `20260813-go-identity-vertical-c4e91a72`, `20260813-go-auth-me-http-8d6f3a21`, `20260813-go-auth-lifecycle-3f9a6c12`, `20260813-go-remaining-modules-7d3a9e42`)
|
|
- `d0fb346` (merge of `c1cbd78` — Go backend implementation, contract fixtures, migration 0002, and task-scoped records into `main`; tasks `20260813-go-remaining-modules-7d3a9e42` and `20260814-go-remaining-integration-5e7c9a1b`)
|
|
- `f10cdd9` (record of completed task `20260812-architecture-task-breakdown-a83f61c2`)
|
|
- `ff055c9` (config-driven super-admin bootstrap in the Go backend, task `20260814-go-bootstrap-admin-6e2b7d9c`)
|
|
- `4a8f2d5` (Go workload deployment artifacts and split Ingress routing, task `20260814-go-deploy-artifacts-2a5f8e1d`)
|
|
- `498c2fa` (authenticated Next.js SSR-to-Go identity bridge and ACK Web internal Go URL, task `20260816-fix-authenticated-ssr-6c3f8a21`)
|
|
- `b14b4fc` (pure static Next.js export, browser-to-Go auth, Go-only runtime API
|
|
ownership, unprivileged Nginx Web, and first-deployment ACK cleanup; task
|
|
`20260816-static-frontend-go-api-4f8c2a7d`)
|
|
- `acf368b` (diagnosis of the production Go bootstrap failure against an RDS
|
|
endpoint that refuses PostgreSQL TLS)
|
|
- `ed97814` (code-enforced plaintext PostgreSQL for Go and retained Node
|
|
tooling, removal of the obsolete RDS CA deployment dependency, and protocol
|
|
regression coverage; task `20260816-disable-postgres-tls-d4a89c12`)
|
|
|
|
## Current Focus
|
|
|
|
The first production deployment is live at `https://nianxxaigc.nianxx.cn`.
|
|
After a redeployment, the observed Go API process fails during super-admin
|
|
bootstrap because its RDS endpoint refuses a TLS negotiation. Repository
|
|
revision `ed97814` retains the static Web + Go-only runtime boundary from
|
|
`b14b4fc` and forces every maintained PostgreSQL client to plaintext
|
|
(`sslmode=disable`), without requiring an Alibaba Cloud RDS configuration
|
|
change. The fixed Go image and updated ACK manifest have not yet been verified
|
|
in the live cluster, and the exact deployed image revisions still require
|
|
cluster evidence.
|
|
|
|
## Recently Completed
|
|
|
|
- 2026-08-12: Replaced the Supabase/PostgREST runtime path with a server-only `pg` adapter across data, account, and billing stores.
|
|
- 2026-08-12: Added versioned PostgreSQL migrations, strict backend selection, database readiness, and ACK Web/Worker/migration manifests; the original verified-CA transport decision was amended on 2026-08-16.
|
|
- 2026-08-12: Accepted and documented the Next.js frontend plus Go backend target, migration contracts, and acceptance criteria.
|
|
- 2026-08-14: Implemented and merged the Go backend (foundation, identity, administration, assets, billing, usage, jobs/providers/webhooks/worker loop, public and compatibility HTTP surfaces) with language-neutral contract fixtures and migration 0002.
|
|
- 2026-08-14: Reconciled canonical architecture, decision, history, commitment, and positioning memory with the merged Go implementation (task `20260814-go-memory-reconcile-7f2a9c41`).
|
|
- 2026-08-14: Added config-driven first-super-administrator bootstrap to the Go backend (task `20260814-go-bootstrap-admin-6e2b7d9c`).
|
|
- 2026-08-14: Recorded the first-deployment model: no production cutover, manual schema initialization without the migration Job pod (task `20260814-deploy-model-reconcile-9b4c2e7f`).
|
|
- 2026-08-14: Built the Go workload deployment artifacts: `backend/Dockerfile`, `deploy/ack/go-api.yaml`, split-path Ingress routing, non-root/read-only-filesystem workload config, and updated manifest assertions (task `20260814-go-deploy-artifacts-2a5f8e1d`).
|
|
- 2026-08-16: Implemented authenticated production SSR identity refresh through Go `/api/auth/me`, forwarding only enumerated `zhinian_session` chunks, strictly validating the response, preserving the local direct-store path when the internal URL is absent, and keeping the updated ACK Web configuration database-free (task `20260816-fix-authenticated-ssr-6c3f8a21`, commit `498c2fa`; not yet deployed).
|
|
- 2026-08-16: Replaced production SSR/Middleware/Next Route Handlers with a
|
|
static export and browser auth Module, made Go the only runtime API owner,
|
|
replaced the Web runner with unprivileged Nginx, removed deprecated Node
|
|
Worker/migration manifests, and added static/deployment regressions (task
|
|
`20260816-static-frontend-go-api-4f8c2a7d`, commit `b14b4fc`; not yet
|
|
deployed).
|
|
- 2026-08-16: Diagnosed the Go bootstrap failure as a TLS negotiation against
|
|
an endpoint that refuses TLS, then changed Go and retained Node PostgreSQL
|
|
clients to enforce plaintext, removed the obsolete CA deployment dependency,
|
|
and added real wire-protocol regression coverage (task
|
|
`20260816-disable-postgres-tls-d4a89c12`, commit `ed97814`; live rollout not
|
|
yet verified).
|
|
|
|
## In Progress
|
|
|
|
- Build, publish, and deploy immutable Web and Go images containing `ed97814`,
|
|
then verify PostgreSQL readiness/bootstrap and the static Web + Go-only
|
|
runtime boundary in the live ACK cluster.
|
|
|
|
## Next Recommended Steps
|
|
|
|
1. Build and smoke Web and Go images from `ed97814` in CI or another host with
|
|
Docker, then publish them under new immutable tags or digests.
|
|
2. Create/verify the `zhinian` Namespace, run target-cluster server-side dry
|
|
runs, apply the production Go-owned Secret and six checked-in resource
|
|
manifests (not `secrets.example.yaml`), and confirm live Ingress/Service
|
|
ownership from cluster state.
|
|
3. Confirm Go bootstrap completes without an SSLRequest, then smoke anonymous
|
|
login, authenticated `/create?mode=video`, logout, and each admin role;
|
|
verify Web `/healthz`, Go `/api/health`, and Go `/api/ready`.
|
|
4. Configure OSS or another shared/persistent store before any Go Pod
|
|
replacement that must preserve current local uploads/generated results.
|
|
5. Continue real RDS/provider/Webhook validation and confirm the public
|
|
`/api/v1` compatibility promise for external consumers.
|
|
|
|
## Open Questions / Blockers
|
|
|
|
- Canonical memory does not yet record the live RDS PostgreSQL version,
|
|
connection budget, exact internal endpoint, database roles, effective VPC /
|
|
security-group / allowlist controls, or confirmed request-path Service
|
|
ownership.
|
|
- Real OSS bucket/credential configuration is still needed for shared asset storage.
|
|
- Public `/api/v1` support promises for external consumers need explicit confirmation.
|
|
- The static Web Docker image has not been built or container-smoked in this
|
|
workstation because its Docker daemon is unavailable.
|
|
|
|
## Risky Areas
|
|
|
|
- PostgreSQL transport is intentionally unencrypted. The RDS connection must
|
|
remain on the private network and be constrained by VPC, security-group, and
|
|
allowlist controls; those live controls still require recorded validation.
|
|
- Database grants and least-privilege roles still require documented validation against the live RDS instance.
|
|
- Go currently stores local uploads/results on `emptyDir` when OSS is absent;
|
|
Pod replacement or rolling update loses them, not only horizontal scaling.
|
|
- Real provider, OSS, RDS, and Webhook coverage is not fully documented; do not
|
|
infer which live workload owns paths without cluster evidence.
|
|
|
|
## Last Updated
|
|
|
|
2026-08-16
|