Jon Chery
|
18b03db272
|
feat(P2): metrics collector — SQLite cold store + Decision Ledger CLI (REQ-189,200,201,207)
P2 (Wave 2, feat) — REQ-189, REQ-200, REQ-201, REQ-207
New components:
- core/metrics/collector.py — reads all grounded signals (REGRESSION_REPORT.json,
per-run manifests, junit XML, coverage.json, decision ledger, lifecycle reports)
→ SQLite cold store (metrics/nova_metrics.db) with fact_run, fact_capability,
fact_policy_check, fact_confidence, fact_test, fact_decision, fact_cost_estimate,
fact_lifecycle, dim_capability, dim_milestone tables
- core/metrics/decision_ledger_cli.py — CLI with query/verify-chain/stats/export/replay
- tests/test_metrics_collector.py — 7 tests (all pass, incl. idempotent re-run REQ-200)
D-120: Nova-native (SQLite, no ClickHouse)
D-125: hybrid (reads files + events → SQLite)
D-126: cold-only (no hot path)
---ci---
project: acdl
phase: 2
milestone: v1.17
status: execute
---/ci---
|
2026-08-04 20:01:50 +00:00 |
|
Jon Chery
|
f8616b806e
|
feat(P1): event emitters — CloudEvents envelope, Decision Ledger, Infracost adapter, attestation/confidence/policy event emission
P1 (Wave 1, feat) — REQ-187, REQ-188, REQ-205 (emitter), REQ-206 (emitter)
New components:
- core/metrics/event_envelope.py — CloudEvents 1.0 envelope + platform.* conventions
- core/metrics/run_manifest.py — per-run manifest writer (nova.run.started/completed/failed)
- core/metrics/decision_ledger.py — SQLite append-only hash-chain (ai.decision.made + attestation.recorded)
- core/metrics/infracost_adapter.py — Infracost post-processor (degraded mode when CLI absent, A6)
- schemas/metrics_event.schema.json — CloudEvents envelope schema
- schemas/metrics_run_manifest.schema.json — per-run manifest schema
- metrics/README.md — backup/restore doc (REQ-201)
- tests/test_metrics_emitters.py — 16 tests (all pass)
Modified components:
- core/confidence_signal.py — emits nova.confidence.computed + nova.ai.decision.made (D-122)
- core/hitl_gates.py — emits nova.attestation.recorded on qa/prod/dr gates (D-132)
- adapters/terraform/policy/checkov_adapter.py — emits nova.policy.evaluated
- pyproject.toml — addopts gains --junitxml + --json-report + --cov (REQ-206)
- .gitignore — metrics runtime artifacts ignored
D-120: Nova-native (JSONL + SQLite, no Kafka/OTel)
D-121: Decision Ledger = outbox_writer extension → SQLite hash-chain
D-122: AI decision = confidence_signal + HITL gate (not LLM)
D-128: metrics/ at repo root
D-132: Attestation instrumentation
---ci---
project: acdl
phase: 1
milestone: v1.17
status: execute
---/ci---
|
2026-08-04 19:58:54 +00:00 |
|