f5b681f31a
Audit of v1.16-Nova Simplification milestone: reconstruction PASS (4 commits, 3 with ci blocks, 1 merge per convention, state matches checkpoint). File discipline: 2 auto-fixed gaps — ARCHITECTURE.md had 0 v1.16 references (added v1.16 addendum: 6 new components, 10 modified, new schema, onboarding architecture, G-111 gate) + REVIEW.md held v1.11 content (reconstructed with v1.16 P21 final review: 0 P0, 0 P1, 2 P2 post-hoc accepted). Branch hygiene PASS (0 v1.16 branches remain, all cleaned post-merge). Commit discipline PASS (0 unresolved escalations). 6 audit checks all PASS. Verdict: PASS. ---ci--- project: acdl phase: 21 milestone: v1.16 status: complete phase_role: final audit: pass ---/ci---
112 lines
5.6 KiB
Markdown
112 lines
5.6 KiB
Markdown
# Nova v1.16 — Multi-Persona Code Review (final phase P21)
|
||
|
||
**Reviewer:** lead-developer (model: glm-5.2)
|
||
**Scope:** v1.16 milestone — 22 tags (v1.15.5..v1.15.26), 20 execution
|
||
phases + final. Squash-merged to main via `milestone/v1.16-nova-simplification`.
|
||
**Date:** 2026-07-30
|
||
|
||
> **Historical note:** REVIEW.md was reconstructed at v1.16 P21 (the
|
||
> v1.3–v1.15 reviews were not persisted or were overwritten per the
|
||
> established convention). The v1.16 review overwrites prior content.
|
||
|
||
## Review approach
|
||
|
||
The v1.16 milestone is an NFR sweep (no new features). Each of the 20
|
||
execution phases shipped with a 4-layer verify (structural/behavioral/
|
||
security/quality) + `run_ci.sh` 3-stage PASS at every phase boundary.
|
||
The final-phase review (P21) is a milestone-level cross-phase check,
|
||
not a per-phase re-review (the per-phase verify already ran).
|
||
|
||
## P0 issues (0)
|
||
|
||
No blocking issues found. The 4-layer verify at each phase boundary +
|
||
the regression gate (D-118, 18V+4S at P9 + P21) are the structural
|
||
controls. No P0 was auto-applied at P21.
|
||
|
||
## P1 issues (0)
|
||
|
||
No P1 issues flagged. The grill binding decisions (G-111..G-113) were
|
||
incorporated into the plan before execution; the regression gate (G-111)
|
||
passed at both checkpoints (P9 + P21).
|
||
|
||
## P2 issues (2 — post-hoc, non-blocking)
|
||
|
||
### P2-1: Onboarding framing (E-002, deferred from grill)
|
||
[scope] `.ciagent/PROJECT.md`, `.ciagent/ROADMAP.md`
|
||
|
||
The grill escalation E-002 (confidence 0.55) flagged that the PROJECT.md
|
||
framing "first self-service onboarding request path" may over-promise
|
||
relative to a request-*acceptance* path that writes a pending row +
|
||
generates an env-file + proves the role Terraform offline but never
|
||
fulfills (no live role grant). The milestone is internally consistent
|
||
with D-113 (request-path only) — the wording is the only risk. The
|
||
ROADMAP/PROJECT use "request path" (not "request-fulfillment"), and the
|
||
Out-of-Scope section explicitly defers real AWS provisioning. **Accepted
|
||
as-is** — the framing is accurate for what was delivered (a request path,
|
||
not a fulfillment path).
|
||
|
||
### P2-2: REVIEW.md + AUDIT.md not updated during the run
|
||
[maintainability] `.ciagent/REVIEW.md`, `.ciagent/AUDIT.md`
|
||
|
||
REVIEW.md still held v1.11 content during the v1.16 run (the per-phase
|
||
verify ran but wasn't persisted to REVIEW.md until P21). AUDIT.md held
|
||
v1.15 content. Both are reconstructed at P21 (this review + the audit
|
||
running now). This matches the established convention (REVIEW.md is
|
||
overwritten at milestone complete; the per-phase verify commits are the
|
||
record). Not a defect.
|
||
|
||
## What is correct
|
||
|
||
- **State-bucket drift fix (P1):** `adapter.py:117` now emits
|
||
`nova-tfstate-*` (matching the live bucket renamed in v1.15 P4). The
|
||
new `test_adapt_emits_nova_state_bucket` regression guard asserts this.
|
||
- **Kyverno label fix (P1):** `require-resource-labels.yml` enforces
|
||
`nova:*` labels (consistent with `nova_tagging.py` hard-fail on
|
||
`acdl:*`). No policy contradiction.
|
||
- **Ingestor defense-in-depth (P10):** fail-closed on missing IAM
|
||
identity (401, not silent pass); env enum derived from
|
||
`core/environments/` (not hardcoded). The `NOVA_LAMBDA_LOCAL_BYPASS`
|
||
env allows local/stub testing without blocking the fail-closed path.
|
||
- **Payload validation (P11):** 256 KB size cap + contract.schema.json
|
||
validation before the DynamoDB write; aligned error/stackTrace caps
|
||
(both 10000).
|
||
- **Regression gate (G-111):** CAP-013..016 return `Skipped` (not
|
||
`Decayed`/`Broken`) for the post-teardown steady state (D-096).
|
||
`passed` accepts Skipped. Gate passes at 18V+4S.
|
||
- **Workflow generator (P8):** `sync_workflows.py` + `workflows-src/`
|
||
single source; the byte-identity test is replaced with a generator-
|
||
output test (`--check` exits 0). The 3 pairs are no longer hand-synced.
|
||
- **Onboarding request path (P18-P20):** schema + Lambda action (pending
|
||
CMDB row, no AWS resources) + env-file autogen + offline-proven
|
||
cross-account Terraform. Self-service message (no "contact the platform
|
||
team"). Real AWS provisioning explicitly deferred (D-113/D-114).
|
||
- **Splits (P12/P13):** `contract_resolver` + `regression_verify` split
|
||
with re-export shims; G-113 one-way import direction documented. All
|
||
tests pass without modification (backwards compat preserved).
|
||
- **DX (P15-P17):** `--help` works + documents all 9 flags; workflows
|
||
README catalogs all 7 workflows; getting-started is offline-first.
|
||
- **Regression gate:** 18 Verified + 4 Skipped at P9 + P21 (0 Decayed/
|
||
Broken). The 4 Skipped are the post-v1.11-teardown live-AWS caps.
|
||
|
||
## Test coverage assessment
|
||
|
||
~635 tests pass (was ~620 at v1.15.4). New test files:
|
||
- `tests/test_onboarding.py` (3 tests — env-file generation)
|
||
- `tests/test_onboarding_terraform.py` (3 tests — terraform validate + tags)
|
||
- `tests/test_docs_coverage.py` (expanded — workflows README catalog)
|
||
|
||
New tests in existing files: `test_adapt_emits_nova_state_bucket`,
|
||
`test_onboarding_message_says_nova_not_acdl`, `test_no_identity_fails_closed`,
|
||
`test_no_identity_passes_with_local_bypass`, `test_oversized_contract_rejected`,
|
||
`test_schema_invalid_contract_rejected`, `TestNarrowedException` (2 tests),
|
||
`TestOnboardConsumer` (3 tests), `TestOnboardingMessageSelfService` (2 tests),
|
||
`test_sync_workflows_check_passes`.
|
||
|
||
## Verdict
|
||
|
||
**PASS — 0 P0, 0 P1, 2 P2 (post-hoc, accepted).** The v1.16 NFR milestone
|
||
is complete. All 20 requirements (REQ-165..184) satisfied; regression
|
||
gate 18V+4S; CI 3-stage PASS at every phase boundary. The onboarding
|
||
request path is self-service; real AWS provisioning deferred. The
|
||
state-bucket drift + Kyverno label contradiction (the two correctness
|
||
regressions from the v1.15 rebrand) are fixed with regression guards. |