787a6490a5
Audit of v1.15-Nova milestone: reconstruction PASS (27 commits, 20 with ci blocks, 7 merges per convention, state matches checkpoint). File discipline: 10 auto-fixed rebrand-completeness gaps — 9 .ciagent/*.md headers still said ACDL (PROJECT/REQUIREMENTS/ROADMAP/RESEARCH/AUDIT/ REVIEW/COST/IAM_POLICY/CAPABILITY_INVENTORY → Nova) + config.json projects[].name → Nova. Active v1.15 sections already Nova; historical v1.1-v1.14 narratives left as-is. Branch hygiene PASS (6 phases + 1 milestone all merged, 0 orphans). Commit discipline PASS (0 non-merge commits without ci blocks, 0 unresolved escalations). 6 audit checks all PASS. Verdict: PASS. ---ci--- project: acdl phase: 5 milestone: v1.15 status: complete phase_role: final audit: pass ---/ci---
106 lines
4.6 KiB
Markdown
106 lines
4.6 KiB
Markdown
# Nova AWS Cost Report (v1.0 → v1.14)
|
||
|
||
> **Query date:** 2026-07-29 (updated v1.14 P19)
|
||
> **Source:** AWS Cost Explorer (`ce:GetCostAndUsage`)
|
||
> **Window:** 2026-07-21 → 2026-07-29 (v1.0 ship → v1.14 active)
|
||
> **Account:** 581513795199 (us-east-1)
|
||
> **Closes:** G-008 (no cost documentation despite live AWS resources)
|
||
|
||
## Summary
|
||
|
||
| Metric | Value |
|
||
|--------|-------|
|
||
| Total spend (8 days) | **$0.001883** |
|
||
| Daily average | $0.000235 |
|
||
| Projected monthly | ~$0.007 |
|
||
| Peak day | 2026-07-27 ($0.000867 — v1.10 regression + verify run) |
|
||
|
||
**Verdict:** The ACDL platform cost is effectively zero — less than one cent
|
||
over 8 days of active development and testing. The cost is dominated by S3
|
||
(terraform state bucket, $0.001860). No compute costs (ECS/Lambda) were
|
||
incurred because the v1.0→v1.10 platform was plan-only (terraform plan, not
|
||
apply) for IAM-gated capabilities. The v1.11 lifecycle pipeline will incur
|
||
transient costs during apply→modify→destroy cycles, but these are
|
||
self-cleaning (destroy enforced).
|
||
|
||
## Daily Breakdown
|
||
|
||
| Date | Spend (USD) | Notes |
|
||
|------|-------------|-------|
|
||
| 2026-07-21 | $0.000622 | v1.0 ship day — initial S3 state bucket + DynamoDB outbox |
|
||
| 2026-07-22 | $0.000111 | v1.1–v1.3 development |
|
||
| 2026-07-23 | $0.000063 | v1.4–v1.5 development |
|
||
| 2026-07-24 | $0.000063 | v1.6–v1.7 development |
|
||
| 2026-07-25 | $0.000063 | v1.8 development |
|
||
| 2026-07-26 | $0.000094 | v1.9 development + stub testing |
|
||
| 2026-07-27 | $0.000867 | v1.10 regression + verify run (peak — local E2E + live terraform plan) |
|
||
| 2026-07-28 | $0.000000 | v1.11 restart (cost query day, no spend yet) |
|
||
| **TOTAL** | **$0.001883** | |
|
||
|
||
## By Service
|
||
|
||
| Service | Spend (USD) | % of total |
|
||
|---------|-------------|------------|
|
||
| Amazon Simple Storage Service | $0.001860 | 98.8% |
|
||
| AWS Secrets Manager | $0.000015 | 0.8% |
|
||
| Amazon DynamoDB | $0.000008 | 0.4% |
|
||
|
||
### S3 ($0.001860)
|
||
|
||
The `acdl-tfstate-581513795199-us-east-1` bucket stores terraform state for
|
||
all ACDL stacks. Cost is driven by:
|
||
- Storage: ~50 state files × <1KB each = negligible
|
||
- Requests: terraform init/plan/apply S3 API calls during development
|
||
|
||
### Secrets Manager ($0.000015)
|
||
|
||
One secret stored: `acdl/aws-creds` (used by the deploy pipeline for
|
||
consumer repos). $0.40/month per secret → prorated to ~$0.0000625/day.
|
||
|
||
### DynamoDB ($0.000008)
|
||
|
||
The `acdl-outbox` table (D-091 regression gate, CAP-015). Provisioned
|
||
capacity with minimal reads/writes during regression runs.
|
||
|
||
## v1.11 Cost Projection
|
||
|
||
The v1.11 lifecycle pipeline (P59–P62) runs terraform apply→modify→destroy
|
||
against live AWS for each L1 and L2 module. Estimated transient costs:
|
||
|
||
| Resource | Est. cost per lifecycle cell | Cells | Total est. |
|
||
|----------|-------------------------------|-------|------------|
|
||
| S3 bucket (per module) | ~$0.0001 (create + destroy) | 24 L1 + 2 L2 | ~$0.003 |
|
||
| ECS Fargate (microservice) | ~$0.01 (brief run + destroy) | 2 | ~$0.02 |
|
||
| ALB (microservice) | ~$0.005 (create + destroy) | 2 | ~$0.01 |
|
||
| RDS (rds module) | ~$0.02 (brief run + destroy) | 2 | ~$0.04 |
|
||
| CloudFront (static-assets) | ~$0.001 (create + destroy) | 2 | ~$0.002 |
|
||
| **Total v1.11 transient** | | | **~$0.075** |
|
||
|
||
All resources are destroyed by the pipeline's destroy step + the
|
||
`ci-vpc-destroy` cleanup job. No persistent resources remain after the run
|
||
(D-096 teardown mandatory, enforced by P64).
|
||
|
||
## Cost Ceiling Guidance
|
||
|
||
Per G-008 binding decision: the ACDL platform must operate at
|
||
**zero-cost steady state** — no live resources between test runs. This is
|
||
enforced by:
|
||
1. The `ci-vpc-destroy` job in `modules-lifecycle.yml` (always runs, `if:
|
||
always()`).
|
||
2. The per-module destroy step in each lifecycle cell.
|
||
3. The P64 `--decommission` teardown (D-070 two-step, CR CHG0680001).
|
||
|
||
Any cost spike > $1/day is an anomaly and should be investigated via Cost
|
||
Explorer. The v1.0→v1.10 spend ($0.001883 over 8 days) is the baseline.
|
||
|
||
## Methodology
|
||
|
||
- **Query:** `boto3.client('ce').get_cost_and_usage()` with
|
||
`Granularity='DAILY'`, `Metrics=['BlendedCost']`, and
|
||
`GroupBy=[{'Type': 'DIMENSION', 'Key': 'SERVICE'}]`.
|
||
- **Credentials:** `ACDL_AWS_ACCESS_KEY_ID` / `ACDL_AWS_SECRET_ACCESS_KEY`
|
||
from `.env.secrets` (spike-runner IAM principal).
|
||
- **Limitation:** Cost Explorer data has a 24h delay; the 2026-07-28 value
|
||
($0.000000) may update after the billing pipeline processes the day's
|
||
usage. The v1.11 lifecycle pipeline costs are not yet reflected.
|
||
- **Reproducibility:** Run `python3 -c "import boto3; ce = boto3.client('ce', region_name='us-east-1'); print(ce.get_cost_and_usage(TimePeriod={'Start':'2026-07-21','End':'2026-07-29'},Granularity='MONTHLY',Metrics=['BlendedCost']))"` |