-
v1.28.6: v1.29 Reposplit + Identity Layer Bring-Live — milestone release
StableNova Slides Render / render (push) Failing after 22sreleased this
2026-08-20 05:29:51 +00:00 | 45 commits to main since this releasev1.29 — Reposplit + Identity Layer Bring-Live
Feature milestone — complete. v1.29 makes platform operations a Terraform-controlled discipline that lives outside the engineering repo, with a narrow-IAM
kjsubstrate shared by the primary runtime and its defensive fallback.acdl/acdlstandardizes on GitHub (Gitea scrub); Nova-idp is brought live in account581513795199(code complete since v1.28, unverified in-account at Phase 0);kjhas exactly one identity (one ECR image digest) shared by both substrates (KJ-LOCKSTEP, REQ-371).Phases
Phase Tag Scope P0 v1.28.0 Pre-execution: SPECIFY + CLARIFY + RESEARCH + PLAN + GRILL + MVP/UX P1 v1.28.1 publish.yml ECR image + Lambda zip + GitHub Release (REQ-354) P2 v1.28.2 Gitea scrub (REQ-367) + decisions D-232..240 (REQ-368) P3 v1.28.3 CFN archive + terraform delegation (REQ-369) P4 v1.28.4 Operator guide + ARCHITECTURE §12.11 + STATE v1.29 P5 v1.28.5 Consumer deploy.yml @v1.25 -> @v1.29 (REQ-CONSUMER-BUMP) P6 v1.28.6 Final review + audit + milestone ship (this release) Requirements (17 total)
Acdl-side (6, complete):
- REQ-354: publish.yml ECR image + Lambda zip + GitHub Release
- REQ-367: Gitea scrub (.gitea/ removed, forge_parity_disabled CI)
- REQ-368: Decisions D-232..240 recorded
- REQ-369: CFN archive + terraform delegation
- REQ-OPS-GUIDE: operator-guide-platform-ops.md (747 lines, 18 sections)
- REQ-CONSUMER-BUMP: consumer deploy.yml @v1.25 -> @v1.29
Covered-reference (14, verified via M1/M1.5/M2 cutover gates in nova-platform-ops):
- REQ-355, 356, 357, 358 (ops repo CI/HITL/version-pin)
- REQ-359, 360 (Gitea-private repo, IAM scope bounded)
- REQ-361, 362 (terraform import, KMS key provisioning)
- REQ-363, 363b (Lambda/Fargate substrate, KJ-LOCKSTEP)
- REQ-364, 365, 366 (JWKS/WAF/ACM edge)
- REQ-371 (KJ-LOCKSTEP lifecycle.precondition)
Decisions (9)
- D-232: Forge parity abandoned (Gitea -> GitHub standardization)
- D-233: JWKS public-read via CloudFront edge (INV-18)
- D-234: KMS asymmetric key provisioning (ECC_NIST_P256, 90-day rotation)
- D-235: Tag-pin handoff (engineering -> ops via GitHub Releases)
- D-236: Cutover shape + rollback procedure
- D-237: Fargate sunset discipline (>=30 days green + architecture review)
- D-238: KJ-LOCKSTEP release-gate invariant
- D-239: ECR tag format correction (+ invalid -> - separator)
- D-240: Terraform lifecycle.precondition floor v1.2.0 (not v1.4+)
Invariants + NFR constraints
- INV-18 (JWKS-EDGE-ONLY): JWKS is the only public read surface
- KJ-STATIC: kj binary compiled CGO_ENABLED=0, statically linked
- KJ-LOCKSTEP: Fargate digest == Lambda image_uri digest at every plan
- KJ-WARMUP-HEALTH: Fargate standby READY probe every 10s
- OPER-PRIV, IAM-NARROW, DRIFT-DETECT, IMPORT-IDEMPOTENT, TFM-HITL, JWKS-SLO, JWKS-ROTATION
Capabilities (3 new)
- CAP-039: platform-ops-reposplit
- CAP-040: kj-substrate-lockstep
- CAP-041: jwks-edge-only
Grill + Review + Audit
- Grill: PROCEED-WITH-CONDITIONS 0.72 (4 critical fixes: M1.5 hard gate, covered-reference Result column, P1 intermediate tag, kj source-fetch)
- Review: PASS-WITH-ISSUES (3 P0 fixes auto-applied: wheel upload masking, forge-mention CI block, vacuous test pass; 5 P1+ flagged — STATE.md footer fixed in P6)
- Audit: all 7 checks PASS (reconstruction, file discipline, branch hygiene, commit discipline, tag discipline, M1.5 gate template, covered-reference tracking)
Carry-forward
- Q7 (kj image verification — M1.5 gate, operator attests in nova-platform-ops CI)
- M-001 (ABAC empty-policy-dir fail-open gap — pinned in test, mitigated)
Key deliverables
.github/workflows/publish.yml— tag-triggered, ECR image build with KJ-STATIC gatedocs/operator-guide-platform-ops.md— 747-line operator runbook with 18 sections + Cutover Gates tabledocs/archive/nova-idp-cfn-v1.28.md— CFN template archived as read-only referencenova/idp/setup.py— terraform delegation (--apply -> terraform apply)tests/test_abac_e2e.py— ABAC allowed/denied/fail-closed (INV-17)platform/abac/kj-version.txt— kj v0.0.3 pinned + repo URL
Milestone branch:
milestone/v1.29-reposplit-identity(deleted after merge).
Tag line: v1.28.x (P0=v1.28.0 -> P6=v1.28.6=milestone release).
Intermediate tag: v1.29.0 (CF-3 artifact production for P5 smoke test).Downloads