Relocate completed-milestone history to .ciagent/archive/ (byte-identical
snapshots of PROJECT/REQUIREMENTS/ROADMAP/ARCHITECTURE pre-compression +
verbatim moves of REVIEW/AUDIT/VERIFY/PRE_MORTEM). Slim the in-place files
to retain only active-milestone (v1.26) + immediate-predecessor (v1.25)
context + durable vision/tenets/scope/RACI/capability-status/load-bearing
decisions. REGRESSION_REPORT.{json,md} stay in place (live read/write
targets of core/metrics/collector.py + core/regression_verify.py).
Working context: 11,164 → 4,152 lines (~63% reduction). Archive preserves
8,615 lines. Lossless via relocation + git history. No test regressions
(761 passed; same 3 pre-existing failures as baseline).
---ci---
project: acdl
phase: 2
milestone: v1.26
status: execute
lessons:
- REGRESSION_REPORT.{json,md} are live operational files (read by
core/metrics/collector.py + core/regression_verify.py) — must NOT be
archived. Pre-flight grep for code references to candidate archive
paths before any move.
- test_no_purged_loaded_term scans .ciagent/PROJECT.md + CLARIFY.md +
docs/ for 'penetrat' — slimmed files must not reintroduce it. Historical
description of the purge ('removed the term ...') is safe in ROADMAP.
- Git rename detection (R) works for pure file moves; snapshot-then-slim
shows as A + M. Both preserve history.
---/ci---
5.6 KiB
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:117now emitsnova-tfstate-*(matching the live bucket renamed in v1.15 P4). The newtest_adapt_emits_nova_state_bucketregression guard asserts this. - Kyverno label fix (P1):
require-resource-labels.ymlenforcesnova:*labels (consistent withnova_tagging.pyhard-fail onacdl:*). 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). TheNOVA_LAMBDA_LOCAL_BYPASSenv 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(notDecayed/Broken) for the post-teardown steady state (D-096).passedaccepts 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 (--checkexits 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_verifysplit with re-export shims; G-113 one-way import direction documented. All tests pass without modification (backwards compat preserved). - DX (P15-P17):
--helpworks + 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.