diff --git a/.ciagent/CHECKPOINT.json b/.ciagent/CHECKPOINT.json index 3c60f0b..8af23c4 100644 --- a/.ciagent/CHECKPOINT.json +++ b/.ciagent/CHECKPOINT.json @@ -1,13 +1,12 @@ { - "phase": 21, - "stage": "complete", - "milestone": "v1.16", - "phase_role": "final", + "phase": 0, + "stage": "specify", + "milestone": "v1.17", + "phase_role": "pre_execution", "attempts": 0, - "updated_at": "2026-07-30T16:05:00Z", - "milestone_complete": true, - "tag": "v1.15.26", - "release_id": 370, - "requirements": ["REQ-165", "REQ-166", "REQ-167", "REQ-168", "REQ-169", "REQ-170", "REQ-171", "REQ-172", "REQ-173", "REQ-174", "REQ-175", "REQ-176", "REQ-177", "REQ-178", "REQ-179", "REQ-180", "REQ-181", "REQ-182", "REQ-183", "REQ-184"], - "regression": {"Verified": 18, "Decayed": 0, "Broken": 0, "Skipped": 4} + "updated_at": "2026-08-04T19:30:00Z", + "milestone_complete": false, + "tag": null, + "requirements": ["REQ-185"], + "notes": "v1.17 Strategic Direction, Leadership Metrics & Unified Story. Three pillars. NORTH_STAR.md drafted (pending interactive GRILL)." } \ No newline at end of file diff --git a/.ciagent/NORTH_STAR.md b/.ciagent/NORTH_STAR.md new file mode 100644 index 0000000..bb00af9 --- /dev/null +++ b/.ciagent/NORTH_STAR.md @@ -0,0 +1,182 @@ +# NORTH_STAR — Nova + +> **Status:** Draft (pending interactive GRILL → final) +> **Milestone:** v1.17 — Strategic Direction, Leadership Metrics & Unified Story +> **Owner:** Product Owner +> **Purpose:** Durable strategic intent. Read by CIAgent in every future +> `/ci-run` so the platform's direction survives across milestones. This +> is NOT a status document (that's PROJECT.md) and NOT an engineering +> architecture (that's the telemetry reference in RESEARCH.md/ +> ARCHITECTURE.md). It is the PO's committed direction: what we're +> building toward, what we refuse to build, and how we'll know we won. + +--- + +## Vision + +> **Infrastructure operations become invisible. Every environment +> provisioned, every incident healed, every risk remediated — by an +> autonomous system whose trustworthiness is provable, not promised. +> Human attestation remains required at stage gates — QA signs off for +> production, SRE greenlights based on operational readiness — but the +> operator is never in the loop of normal operations.** + +Nova is the autonomous infrastructure layer that lets product teams ship +without engaging an operator, and lets executives trust the AI not because +it never fails but because every decision is captured, scored, and +accountable. + +--- + +## Strategic Objectives (4) + +**1. Demonstrate production-grade zero-touch operations.** +Nova must run real customer estates with no human in the loop of normal +operations — autonomy as the default, not the demo. Stage-gate +attestation (QA for production, SRE for operational readiness) remains +human by design; operational escalations (AI confidence too low to +proceed) are the failure mode we drive toward zero. Everything else +collapses if autonomy isn't real. + +**2. Establish provable trust in AI decisions.** +Build the audit substrate — Decision Ledger, confidence scoring, circuit +breakers, blast-radius controls — that turns "autonomous" from a +marketing claim into a defensible one. Trust is the moat. Features can be +copied; an immutable, queryable decision history cannot. + +**3. Deliver compounding, quantifiable ROI for customers.** +Each quarter on Nova must reduce cloud spend, free engineering hours, and +avoid downtime measurably. If the CFO can't point to a number that +improves quarter-over-quarter, Nova fails its commercial test, regardless +of how clever the AI is. + +**4. Become the default substrate for agentic infrastructure consumption.** +AI agents are already becoming the largest consumers of cloud +infrastructure. Nova must be the platform through which those agents +declare, deploy, and verify infrastructure — not a vendor scrambling into +that market two quarters late. + +--- + +## Anti-Goals (5 — what Nova is fundamentally NOT) + +1. **Not a Terraform, Kubernetes, or hyperscaler competitor.** We + orchestrate them. Replacing them is the most expensive possible + distraction from the value we create. +2. **Not a general-purpose AI agent platform.** We are purpose-built for + infrastructure operations. Breadth here produces shallow tools; depth + here wins the category. +3. **Not a system that removes humans from accountability.** Only from + operations. Every AI decision lands in an immutable ledger. Every + stage-gate promotion (qa/prod/dr) requires a human attestation recorded + with approver identity, separation-of-duties check, and the 8-concern + evidence matrix. The absence of an operator is never the absence of a + record. +4. **Not for legacy, untagged, or freeform infrastructure.** Nova requires + Terraform-managed, policy-aligned, fully-tagged inputs. We optimize for + the disciplined 95%, not the chaotic 5%. +5. **Not sold to operators.** Nova is sold to leadership on outcomes — + cost, velocity, risk. Selling to operators inverts the incentive and + breaks the autonomy thesis. + +--- + +## Non-Goals (v1.17 milestone scope — deferred work, not permanent boundaries) + +> Anti-Goals are what Nova *fundamentally is not*. Non-Goals are what we +> *will not do this milestone* — deferred work, not permanent boundaries. +> Each Non-Goal cites the controlling decision ID. + +1. **Live AWS re-provisioning** (deferred — D-096). Metrics that require + live infrastructure ship as placeholder PowerBI views with documented + schemas. +2. **Onboarding auto-grant** (deferred — D-113/D-114/D-119). Only the + request-path metric is grounded; the requested→granted funnel is a + placeholder. +3. **ML anomaly-forecasting / predictive remediation** (no emitter today). + The Predictive-vs-Reactive metric ships as a placeholder. +4. **Drift detection scheduled job** (deferred — D-096 + no scheduler). + Drift metrics ship as placeholders. +5. **Live cost CUR reconciliation** (deferred — D-096). Pre-apply Infracost + estimates are grounded; actual-spend reconciliation is a placeholder. +6. **S3 Object Lock / JWS tamper-evident ledger** (deferred — D-083). The + Decision Ledger uses a local SQLite hash-chain this milestone; the + Object-Lock/JWS build-out is a future milestone. +7. **Multi-cloud support** (Azure/GCP/K8s). Nova is AWS-only this milestone. + +--- + +## 12–18 Month Targets + +Targets are committed, not aspirational. Each is a number a board member +can repeat back to us. The grounding column records whether the metric is +measurable this milestone, and if not, what blocks it. + +| Domain | Target | Grounding (v1.17) | Note | +|---|---|---|---| +| **Touchless Resolution Rate** | ≥ 99% across production estates | grounded (after P1) | runs completing without *operational* HITL block ÷ total runs (attestation gates excluded — they're designed controls, not escalations) | +| **Human Escalation Frequency** | < 0.1% of platform actions | grounded (after P1) | *operational* HITL blocks only (confidence-driven); attestation sign-offs excluded | +| **MTTR (p95)** | < 60 seconds | grounded (platform-run MTTR) | apply.failed → successful retry; infra-incident MTTR deferred (no incident detection) | +| **Predictive vs. Reactive Ratio** | ≥ 3 : 1 (prevention dominates reaction) | deferred | requires ML forecasting service (future emitter) | +| **AI Decision Accuracy** | ≥ 99.5% (no rollback, no follow-up incident within 5 min of action) | grounded (after decision ledger) | decisions not followed by apply.failed/incident within 5min | +| **Drift Auto-Reversal Rate** | ≥ 95% within one detection cycle | deferred | requires drift detection (D-096 + scheduler) | +| **Cloud Spend Reduction** | ≥ 25% on pilot estates vs. 12-month pre-Nova baseline | partial | pre-apply estimate grounded (Infracost); actual-spend deferred (D-096 CUR) | +| **L1 / L2 Ops Hours Avoided** | ≥ 70% of pre-Nova FTE allocation | derived | formula over run count × manual baseline | +| **Platform ROI** | ≥ 250% measured annually | derived | formula (labor savings + cloud savings + avoided downtime) ÷ platform op cost | +| **Decision Ledger Coverage** | 100% of AI actions with backfilled outcome | grounded (this milestone builds it) | outbox_writer.py → SQLite hash-chain | +| **Attestation Coverage** | 100% of prod/dr promotions attested by a human | grounded | hitl_gates.py + outbox approver_* attributes; separation-of-duties on prod | +| **AI-Agent Intent Share** | ≥ 40% of total intent volume originated by non-human consumers | future | no AI-agent consumers today; no emitter; placeholder view | + +> Committed targets whose measurement is deferred remain committed — the +> target is the destination; the metric is the odometer, and some +> odometers aren't built yet. Each deferred metric ships as a placeholder +> PowerBI view + a definition-of-success doc recording the dependency. + +--- + +## Success Criteria (v1.17 — what constitutes success for THIS milestone) + +> Distinct from the 12–18mo targets: those are the destination. These are +> the milestone's exit criteria. + +v1.17 is a success if: + +1. **Decision Ledger emits `ai.decision.made` for 100% of platform runs** + with outcome backfill, AND **`attestation.recorded` for 100% of + qa/prod/dr promotions** with approver identity + 8-concern matrix + result (grounded in `outbox_writer.py` → SQLite hash-chain; honors + D-083). +2. **`docs/METRICS.md` catalogs every executive KPI** with a `grounded` / + `derived` / `deferred` status, a source file or decision ID, and a + per-KPI definition-of-success doc in `docs/metrics/`. +3. **The PowerBI export produces all fact/dimension views** + 8 empty + placeholder views for deferred metrics (with documented schemas ready + to fill when their blocking decisions lift). +4. **The unified narrative deck ships** with the x3 arc + (Problem→Vision→How→Proof→Roadmap) at deck + slide level, per-slide + benefit callouts, and fluid transitions; both old decks retired. +5. **`NORTH_STAR.md` is wired into CIAgent context-loading** so every + future `/ci-run` reads it. +6. **CAP-023 (metrics collector) + CAP-024 (deck structure) pass** in the + regression gate. + +--- + +## What "won" looks like + +By month 18, Nova is the layer enterprise leadership points to when they +say *"we don't have an infrastructure ops team anymore, and the audit +trail is stronger than it ever was"* — and it is the default substrate +their AI engineering teams reach for first when an agent needs to deploy. + +--- + +## Relationship to v1.17 engineering + +- **Pillar A (this file):** strategic direction — durable, PO-authored. +- **Pillar B (engineering):** the telemetry reference architecture + (adapted from the PO's technical-direction input) lives in + RESEARCH.md/ARCHITECTURE.md. It is the *how*; this file is the *why*. +- **Pillar C (story):** the unified narrative deck proves Pillars A+B to + leadership. The deck's Proof section cites grounded metrics; its + Roadmap section cites deferred targets honestly. \ No newline at end of file diff --git a/.ciagent/PROJECT.md b/.ciagent/PROJECT.md index 1c8a60a..2ffa95a 100644 --- a/.ciagent/PROJECT.md +++ b/.ciagent/PROJECT.md @@ -1072,4 +1072,65 @@ conversation; D-117..D-119 resolved at CLARIFY. | D-116 | Drift fixes = P1 of v1.16 (not a hotfix to main). | User chose "P1 of v1.16." The state-bucket drift (`adapter.py:117`) and Kyverno label contradiction are correctness regressions but latent in plan-only mode (no live apply in the default path), so they are not an active outage. Fixing them as P1 keeps the milestone self-contained. | P1 fixes both; no hotfix to main. | | D-117 | v1.14 NFR categories are NOT re-proposed. | v1.14 already swept over-broad excepts (REQ-141), hardcoded account-ID (REQ-142), IAM `Resource:"*"` scoping (REQ-143), contractId/env validation (REQ-144), `.gitignore` catch-all (REQ-146), `--kube-version` removal (REQ-147), orphan cleanup (REQ-148), `set -euo pipefail` parity (REQ-150). v1.16 finds NEW residual signals (the v1.15 rebrand left a fresh debt layer) and does not duplicate completed work. | Wave 1–5 target only fresh debt. | | D-118 | Regression gate (D-091) gates Wave 2 completion and P21. | "Simplify without regressions" is only credible if the regression gate runs after the simplification wave. The gate runs after P9 (Wave 2 done) and at P21 (milestone complete); any non-Verified capability halts W3. Mid-milestone checkpoint after P14 (offline). | P9 + P21 run the gate; P14 checkpoint. | -| D-119 | `onboard_consumer` action stores a CMDB row pending grant (not auto-provisions). | The request-path-only scope (D-113) means the Lambda accepts an onboarding request and writes a `pending` row to `nova-contracts` (or a new `nova-onboarding` partition key); the platform automation that grants the ABAC role is the P20 Terraform (offline-proven). No AWS resources are created by the Lambda action itself. | P18 writes the pending row; P20 proves the grant Terraform offline. | \ No newline at end of file +| D-119 | `onboard_consumer` action stores a CMDB row pending grant (not auto-provisions). | The request-path-only scope (D-113) means the Lambda accepts an onboarding request and writes a `pending` row to `nova-contracts` (or a new `nova-onboarding` partition key); the platform automation that grants the ABAC role is the P20 Terraform (offline-proven). No AWS resources are created by the Lambda action itself. | P18 writes the pending row; P20 proves the grant Terraform offline. | + +## Objective for Milestone v1.17 (active — Strategic Direction, Leadership Metrics & Unified Story) + +**Milestone type:** Feature (P1–P3 feat; P4 docs; P5 docs+test; P6 test; +P7 review+audit+ship). Tags on the v1.16.x line: `v1.16.0` (P0) → +`v1.16.1..v1.16.7` (P1–P7) → `v1.16.8` (P8 final = milestone release). + +**Three pillars:** + +- **Pillar A — Strategic Direction.** A durable, PO-authored + `.ciagent/NORTH_STAR.md` encodes the platform's vision, 4 strategic + objectives, 5 anti-goals, v1.17 non-goals, 12–18mo targets (with a + grounding column), and success criteria. CIAgent reads it in every + future `/ci-run` so the direction survives across milestones. The + attestation clarification is reflected: human attestation required at + stage gates (QA for production, SRE for operational readiness); autonomy + in operations, not in accountability. + +- **Pillar B — Leadership Metrics + PowerBI.** Instrument Nova to + collect, aggregate, and surface leadership-grade metrics that prove the + "no-humans" autonomous-infrastructure value proposition. Nova-native + minimal tech (CloudEvents 1.0 envelope, JSONL event log, SQLite cold + store, hash-chained Decision Ledger via `outbox_writer.py` extension) + + Infracost for pre-apply cost estimates. Hybrid model: existing + file-based signals (REGRESSION_REPORT.json, pcr.json, signal.json, + junit XML) are sources the collector reads and projects into events; + new emitters emit CloudEvents directly. PowerBI export = CSV/JSON + views (fact + dimension tables + 8 empty placeholder views for + deferred metrics). **Hard constraint: DO NOT make anything up.** Every + metric is `grounded` (cites source file + schema), `derived` + (documented formula), or `deferred` (cites decision ID — D-096/D-083/ + D-113/D-114/D-119). The 8 deferred metrics: drift detection, GreenOps/ + carbon, predictive/reactive, live CUR reconciliation, multi-cloud, + red-team MTTR, self-healing velocity, SLA/downtime. + +- **Pillar C — Unified Narrative Deck.** Merge the two existing decks + (`how-the-platform-works` + `the-developer-experience`) into one unified + narrative deck "Nova — The No-Humans Infrastructure Platform" with a + single arc: Problem → Vision/Direction (NORTH_STAR) → How it works → + Proof (metrics) → Roadmap/Ask. The "tell them x3" structure applies at + deck level AND per slide (each slide opens with what it covers, + delivers, closes with an explicit "benefit of this stage" callout). + Fluid transitions between slides. Both old decks retired. + +**Key decisions resolved in the planning conversation (D-120+):** + +| ID | Decision | Rationale | Outcome | +|----|----------|-----------|---------| +| D-120 | Tech stack = Nova-native + Infracost, drift deferred. | The PO's technical-direction document specifies Kafka/Prometheus/ClickHouse/QLDB/OTel — none exist in Nova today. Adopt the PRINCIPLES (events as source of truth, CloudEvents envelope, decision ledger, definition-of-success docs, dashboards-as-projections) but implement with Nova-native minimal tech (JSONL + SQLite + hash-chained ledger). No Kafka/Prometheus/ClickHouse/QLDB. Infracost adopted (runs offline on plan JSON). Drift detection deferred (D-096 + no scheduler). | P1–P3 use Nova-native tech; Infracost in P1; drift deferred. | +| D-121 | Decision Ledger = extend outbox_writer.py → SQLite append-only hash chain. | The direction's #1 priority is the Decision Ledger. Nova already has a hash-chained outbox (outbox_writer.py). Extend it to a SQLite append-only table with hash chain; add ai.decision.made + attestation.recorded events. Honors D-083 (no S3 Object Lock/JWS). | P1 extends outbox_writer; ledger is SQLite hash-chain. | +| D-122 | AI Planner framing = map Nova's real decision points. | The direction assumes an "AI Planner/Reasoner" (planner-v3.2). Nova's actual decision path is confidence_signal + HITL gate. Model ai.decision.made from confidence_signal (decision_id=run_id, chosen_action=band, confidence=score, alternatives=perInput, human_override=HITL block). LLM planner marked future/aspirational. | P1 emits honest decision events; no fabricated LLM. | +| D-123 | Deferred metrics = all 8 (drift, GreenOps, predictive/reactive, live CUR, multi-cloud, red-team MTTR, self-healing, SLA/downtime). | These require live AWS (D-096) or new external systems. Ship as empty PowerBI placeholder views with documented schemas. | P3 ships 8 placeholder views; METRICS.md marks them deferred. | +| D-124 | NORTH_STAR = strategy; tech direction = engineering input. | The PO's technical-direction document is engineering architecture, not strategy. NORTH_STAR.md captures strategic vision/objectives/anti-goals (PO-authored). The tech direction becomes the telemetry reference architecture section in RESEARCH.md/ARCHITECTURE.md, cited by NORTH_STAR's engineering objectives. | P0 writes NORTH_STAR; RESEARCH writes the telemetry reference. | +| D-125 | Events vs files = hybrid. | Existing file-based signals (REGRESSION_REPORT.json, pcr.json, signal.json, junit) stay as files; the collector reads them and emits normalized CloudEvents into JSONL + SQLite. New emitters emit CloudEvents directly. | P2 collector reads files + events. | +| D-126 | Hot/cold split = cold-only SQLite (hot path deferred). | Nova has no live ops dashboard (no live AWS, D-096). The SQLite store is cold-only (batch/historical). The hot path is documented as deferred. | P2 SQLite is cold-only. | +| D-127 | Definition-of-success = per-KPI docs. | The direction's §11 requires a definition-of-success doc for every executive KPI. Adopt this standard; docs live in `docs/metrics/`. | P4 writes per-KPI docs. | +| D-128 | Storage location = metrics/ at repo root. | metrics/runs/ (per-run manifests), metrics/nova_metrics.db (SQLite), metrics/events.jsonl (event log), metrics/powerbi/ (export). | P1–P3 use metrics/ at repo root. | +| D-129 | PowerBI delivery = CSV/JSON files, folder connector. | Nova is offline-first; no live connector to a running service. PowerBI ingests via the folder connector. | P3 emits CSV/JSON to metrics/powerbi/. | +| D-130 | Deck arc = Problem → Vision → How → Proof → Roadmap. | The unified narrative deck's 5-act structure. x3 arc at deck + slide level. Per-slide benefit callouts. Fluid transitions. Both old decks retired. | P5 builds the unified deck; old decks deleted. | +| D-131 | MTTR scope = platform-run MTTR. | The <60s MTTR target refers to platform-run failures (apply.failed → successful retry), not infra-incident MTTR (no incident detection system). Infra-incident MTTR deferred. | P4 grounds platform-run MTTR. | +| D-132 | Attestation instrumentation = emit attestation.recorded events. | The attestation system (hitl_gates.py + attestation_matrix.py + separation_of_duties.py) already exists. Instrument it: emit attestation.recorded events into the Decision Ledger + PowerBI. Attestation Coverage = 100% target grounded from outbox approver_* attributes. | P1 emits attestation events; P4 grounds Attestation Coverage. | \ No newline at end of file diff --git a/.ciagent/REQUIREMENTS.md b/.ciagent/REQUIREMENTS.md index 60ba2c1..60e1ff2 100644 --- a/.ciagent/REQUIREMENTS.md +++ b/.ciagent/REQUIREMENTS.md @@ -956,3 +956,154 @@ simplification and the first self-service onboarding request path. scoping (REQ-143), contractId/env validation (REQ-144), `.gitignore` catch-all (REQ-146), `--kube-version` removal (REQ-147), orphan cleanup (REQ-148), `set -euo pipefail` parity (REQ-150). + +## v1.17 — Strategic Direction, Leadership Metrics & Unified Story + +**Milestone type:** Feature (P1–P3 feat; P4 docs; P5 docs+test; P6 test; +P7 review+audit+ship). Progressive patches; the final phase's patch IS +the milestone release. Tags run on the v1.16.x line: `v1.16.0` (P0) → +`v1.16.1..v1.16.7` (P1–P7) → `v1.16.8` (P8 final = milestone release). + +**Objective:** Three pillars. (A) Encode the PO's strategic direction in +a durable `NORTH_STAR.md` read by CIAgent in every future `/ci-run`. +(B) Instrument Nova to collect, aggregate, and surface leadership-grade +metrics that prove the "no-humans" autonomous-infrastructure value +proposition — grounded in signals Nova actually emits, derived via +documented formulas, or explicitly deferred with a decision ID — flowing +into PowerBI-ready views. (C) Merge the two existing decks into one +unified narrative deck with the "tell them x3" arc at deck + slide level, +per-slide benefit callouts, and fluid transitions. + +**Hard constraint:** DO NOT make anything up. Every metric carries a +`grounded` / `derived` / `deferred` status with a source file or +decision ID. Deferred metrics ship as empty PowerBI placeholder views +with documented schemas. + +### Requirements + +**Pillar A — Strategic Direction** + +- **REQ-185** — `.ciagent/NORTH_STAR.md` is PO-authored with Vision, + Strategic Objectives (4), Anti-Goals (5), Non-Goals (v1.17 scope), + 12–18mo Targets (with grounding column), and Success Criteria. The + attestation clarification is reflected: human attestation required at + stage gates (QA for production, SRE for operational readiness); + autonomy in operations, not in accountability. (Phase P0) +- **REQ-186** — CIAgent reads `NORTH_STAR.md` in context-loading for all + future milestones; the file is referenced from PROJECT.md and + ARCHITECTURE.md so the strategic direction survives across milestones. + (Phase P4) + +**Pillar B — Leadership Metrics + PowerBI** + +- **REQ-187** — Event emitters: a CloudEvents 1.0 envelope is adopted; + a per-run manifest writer emits structured events (run_id, contractId, + env, stages×durations, exit, confidence, HITL block count) to + `metrics/runs/`; existing ephemeral `$WORK/*.json` (pcr, signal, + event, outbox, stack) are persisted as durable artifacts; pytest + `addopts` gains `--junitxml`+`--json-report`; Infracost runs as a + plan post-processor emitting `cost.estimated{delta_usd}` (offline). + (Phase P1) +- **REQ-188** — Decision Ledger: `outbox_writer.py` is extended to emit + to a SQLite append-only table with hash chain; `ai.decision.made` + events are modeled from Nova's real decision points (decision_id=run_id, + chosen_action=band outcome, confidence=score, alternatives=perInput + breakdown, human_override=HITL block) with outcome backfill from + apply.completed; `attestation.recorded` events capture qa/prod/dr + sign-offs (approver, env, concerns, result). Honors D-083 (no S3 Object + Lock/JWS). (Phase P1) +- **REQ-189** — Metrics collector: `core/metrics/collector.py` + + `schemas/metrics_*.schema.json` read all grounded signals + (REGRESSION_REPORT.json, per-run manifests, junit XML, pcr.json, + signal.json, COST.md, decision ledger) → normalized SQLite cold store + at `metrics/nova_metrics.db`; idempotent re-runs. (Phase P2) +- **REQ-190** — PowerBI export: `core/metrics/powerbi_export.py` emits + CSV/JSON views to `metrics/powerbi/` (fact_run, fact_capability, + fact_policy_check, fact_confidence, fact_test, fact_decision, + fact_cost_estimate, dim_capability, dim_milestone + 8 empty + placeholder views for deferred metrics with documented schemas) + + `docs/METRICS_VIEWS.md` schema doc. (Phase P3) +- **REQ-191** — Zero-touch efficiency metrics: Autonomous Resolution + Rate (runs without operational HITL block ÷ total; attestation gates + excluded), Human Escalation Frequency (operational HITL blocks only), + AI Decision Accuracy (decisions not followed by apply.failed/incident + within 5min), MTTD/MTTR (platform-run: apply.failed → successful + retry), Attestation Coverage (prod/dr promotions attested ÷ total + prod/dr promotions). (Phase P4) +- **REQ-192** — Velocity metrics: Provisioning Lead Time + (apply.completed.time − intent.received.time), Deployment Frequency + (count(apply.completed) per day). Self-Healing Velocity deferred (no + auto-remediator). (Phase P4) +- **REQ-193** — Financial & cost-ROI metrics: FTE Hours Saved (derived: + run count × manual baseline), Cost Savings via Infracost estimates + (grounded), Cost Efficiency Ratio (derived), Platform ROI (derived + formula). Live CUR reconciliation deferred (D-096). (Phase P4) +- **REQ-194** — Reliability, security & compliance metrics: Zero-Trust + Policy Compliance Rate (from pcr.json), Attestation Coverage (from + hitl_gates.py). Uptime, Patch Remediation, SLA/downtime deferred + (D-096). (Phase P4) +- **REQ-195** — Metrics catalog doc: `docs/METRICS.md` catalogs every + executive KPI with `grounded`/`derived`/`deferred` status, source + file or decision ID, and a per-KPI definition-of-success doc in + `docs/metrics/.md`. (Phase P4) + +**Pillar C — Unified Narrative Deck** + +- **REQ-196** — The two existing decks (`how-the-platform-works` + + `the-developer-experience`) are merged into one unified narrative deck + "Nova — The No-Humans Infrastructure Platform" with a single arc: + Problem → Vision/Direction (NORTH_STAR) → How it works → Proof + (metrics) → Roadmap/Ask. The x3 structure ("tell them what you're + going to tell them → tell them → tell them what you told them") applies + at deck level (opening = arc; body = tell them; closing = recap + ask). + Both old decks are retired (all derived artifacts deleted). (Phase P5) +- **REQ-197** — Each slide has the x3 structure (opens with what it + covers, delivers, closes with an explicit "benefit of this stage" + callout) + fluid transitions between slides (no disjointed jumps). + The 4-step deck process (source `.md` → Marp → HTML → talking-points) + is re-run for the unified deck. (Phase P5) + +**Cross-cutting** + +- **REQ-198** — Regression capability: CAP-023 (metrics collector runs, + emits expected schema) + CAP-024 (deck structure: slide count, x3 + present, per-slide benefit present) added to `core/regression_verify.py`. + (Phase P6) + +### v1.17 Traceability + +| Requirement | Phase | Status | +|-------------|-------|--------| +| REQ-185 | P0 | in_progress | +| REQ-186 | P4 | pending | +| REQ-187 | P1 | pending | +| REQ-188 | P1 | pending | +| REQ-189 | P2 | pending | +| REQ-190 | P3 | pending | +| REQ-191 | P4 | pending | +| REQ-192 | P4 | pending | +| REQ-193 | P4 | pending | +| REQ-194 | P4 | pending | +| REQ-195 | P4 | pending | +| REQ-196 | P5 | pending | +| REQ-197 | P5 | pending | +| REQ-198 | P6 | pending | + +### Out of Scope (v1.17) + +- Live AWS re-provisioning (D-096) — metrics requiring live + infrastructure ship as placeholder views. +- Onboarding auto-grant (D-113/D-114/D-119) — only the request-path + metric is grounded. +- ML anomaly-forecasting / predictive remediation — no emitter today; + Predictive-vs-Reactive metric ships as a placeholder. +- Drift detection scheduled job (D-096 + no scheduler) — drift metrics + ship as placeholders. +- Live cost CUR reconciliation (D-096) — Infracost pre-apply estimates + are grounded; actuals are not. +- S3 Object Lock / JWS tamper-evident ledger (D-083) — Decision Ledger + uses a local SQLite hash-chain this milestone. +- Multi-cloud support (Azure/GCP/K8s) — Nova is AWS-only this milestone. +- A third deck — the two existing decks merge into one; no new + standalone metrics deck. +- A Nova web UI — dashboards are PowerBI, not a Nova-built frontend. diff --git a/.ciagent/config.json b/.ciagent/config.json index 34b8826..b433935 100644 --- a/.ciagent/config.json +++ b/.ciagent/config.json @@ -8,7 +8,7 @@ ], "active_project": "acdl", "active_projects": ["acdl"], - "active_milestone": "v1.16", + "active_milestone": "v1.17", "autonomy": { "level": "full", "escalation_hooks": ["deploy", "delete_data", "merge_to_main"],