Skip to content

Latest commit

 

History

History
40 lines (37 loc) · 6.45 KB

File metadata and controls

40 lines (37 loc) · 6.45 KB

Delivery metrics ledger

Per-repo values for the portfolio QUALITY-AND-METRICS-STANDARD.md. Delivery plan and milestones live in OPENJOBRADAR-ROADMAP.md; this ledger records only measured values.

Metric Value Source As of
Branch coverage 96% (floor 85%, ratchet to be added with first release) make test / CI 2026-08-23
Lint ruff, full select set, clean make lint / CI 2026-08-23
Typecheck mypy on src/, clean make typecheck / CI 2026-08-23
Tests 347 Python passing (unit + property via Hypothesis) + 35 web (Vitest) pytest / vitest 2026-08-23
Config-schema validation fail-closed, aggregate errors; v1→v2 migration covered tests/test_loader.py 2026-08-22
Location-policy verdicts 8 named rules; never raises on arbitrary input (property-tested) tests/test_location_policy.py, ADR-0012 2026-08-23
Hard-filter findings 5 rule families; all findings collected; never raises on arbitrary input tests/test_hard_filters.py, ADR-0013 2026-08-23
Values screening opt-in packs, neutral default; registry integrity + never-raise property-tested tests/test_values_presets.py, ADR-0014 2026-08-23
De-personalization structural purge gate always on; strong local tokens enforced when .purge-tokens.local present tests/test_purge_gate.py, roadmap M1.6 2026-08-23
Stranger parity ≥3 synthetic profiles through full policy stack; per-user divergence asserted tests/test_stranger_parity.py, roadmap M1.6 2026-08-23
Scoring contract 6 archetype rubrics validated (weights=1, bands descending); prompt fences sanitize untrusted input; activation gate refuses without golden evidence tests/test_scoring_*.py, ADR-0015 2026-08-23
Tenant isolation adversarial model-based fuzz (2 tenants × interleaved ops) + hostile-identity probes; merge-gated tests/test_repository_isolation.py, ADR-0016 2026-08-23
Per-user services settings (layered + optimistic versioning), budget caps pre-invocation, vault masked reads tests/test_tenancy_services.py, ADR-0016 2026-08-23
Threat model initial STRIDE dispositions; KMS cipher + authZ middleware + DPIA tracked open docs/THREAT-MODEL.md, M2.7 2026-08-23
Control plane plan caps structural (Free ≤$0.50/mo); webhooks idempotent; downgrade→dry-run invariant tested tests/test_control_plane.py, ADR-0017 2026-08-23
Due-work scheduling yield-adaptive cadence (property-tested bounds/monotonicity); fair-share dispatch never starves a light user nor lets a lower lane preempt a committed higher one (unit + Hypothesis) tests/test_scheduling.py, tests/test_dispatch_fairness.py, ADR-0018 2026-08-23
Notify decision threshold ladder verdict monotonic in score (property-tested); dry-run/channel axes orthogonal to verdict; quiet hours defer never drop tests/test_notify_decision.py, ADR-0019 2026-08-23
Source-yield tracking capped 72-outcome per-org ledger; tier recommendation neutral below minimum sample (property-tested tier is always one of three); isolated per user tests/test_source_yield.py, ADR-0020 2026-08-23
M4 tenant soak (exit criterion, 1/2) 200 synthetic tenants, heterogeneous configs, dispatched (tenant,org) pairs exactly match scheduled — no cross-talk; p95 latency half open (needs real poll infra) tests/test_m4_tenant_soak.py, roadmap M4 exit 2026-08-23
Infra (CDK) all three stacks synthesize clean (cdk synth, no AWS credentials — verified with credentials fully unset); 29 Jest assertions (table schema/GSI/encryption/PITR/removal policy; Cognito password/MFA/PKCE-client config; API route/authorizer/IAM/CORS); zero account-ID literals verified against synthesized output for every stack infra/test/*.test.ts, ADR-0021/0022/0024 2026-08-23
DynamoDB store adapter same isolation adversarial suite (model-based fuzz + hostile probes) reruns against a moto-mocked table, not just InMemoryStore; float⇄Decimal roundtrip verified tests/test_dynamo_store*.py, ADR-0023 2026-08-23
First live API route GET /me behind Cognito JWT authorizer synthesizes clean (6 Jest assertions: route/authorizer wiring, IAM grant, CORS per env, no account-ID literal); handler tested end to end against moto-mocked DynamoDB (5 Python tests: provision, idempotent, isolated per user, malformed-claims fails closed) infra/test/api-stack.test.ts, tests/test_lambda_handler_me.py, ADR-0024 2026-08-23
Poll → score → notify pipeline 2 ATS adapters (25 tests) against live-recorded public fixtures, one real double-HTML-encoding bug found and fixed; full pipeline (6 tests) proven against a real profile + real fixture data, plus a live (non-mocked) smoke run against GitLab's current board (204 postings, 166 scored) tests/test_poll_adapters.py, tests/test_pipeline.py, ADR-0025 2026-08-23
Watchlist service CRUD isolated per tenant (8 tests); overwrite-by-slug semantics; count matches list length tests/test_watchlist.py, ADR-0026 2026-08-23
Scheduled poll bridge End-to-end: watchlist entry → due-work scheduled → fair-share dispatched → pipeline runs → cadence resets on a hit / backs off on all-already-seen, across two real cycles; removed org unschedules instead of crashing (5 tests, 100% coverage) tests/test_scheduled_poll.py, ADR-0027 2026-08-23
Alert rendering + SES delivery 10 tests; real send verified against moto-mocked SES; verdict/channel/dry-run/quiet-hours gating each independently proven never to send tests/test_notify_delivery.py, ADR-0028 2026-08-23
Bedrock scorer 23 tests; exact prompt-sent assertion; every response-malformation mode independently proven to fail closed (wrong type, out-of-range, missing rationale, prose-wrapped/fenced JSON, hallucinated facet dropped as noise, malformed outer envelope) tests/test_scoring_bedrock.py, ADR-0029 2026-08-23
Web app (PKCE sign-in) 35 Vitest tests; generateCodeChallenge matches RFC 7636 Appendix B's own test vector exactly; full round-trip (begin → callback → token exchange) proven, including CSRF-state mismatch, replay-after-completion, and Cognito error-callback cases web/test/*.test.ts, ADR-0030 2026-08-23
DORA Not yet meaningful (pre-release) 2026-08-22

Ratchet policy: the coverage floor only moves up. Baseline file lands alongside the first tagged release (roadmap M0/M9 exit criteria).