Files
0pt/PRODUCTION_EVIDENCE.json
Simon AxelssonandClaude Sonnet 5 e7516697b3
CI (SIAX Cloud) / security (push) Successful in 23s
CI (SIAX Cloud) / integration (push) Successful in 30s
Security Scan (SIAX Cloud) / security (push) Successful in 30s
CI (SIAX Cloud) / quality (push) Successful in 53s
CI (SIAX Cloud) / security (pull_request) Successful in 20s
CI (SIAX Cloud) / quality (pull_request) Successful in 51s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 22s
CI (SIAX Cloud) / integration (pull_request) Successful in 32s
docs(p010): implementation report + production evidence for Data-OS completion
From-scratch verification (fresh clone, fresh installs) backing up the P010
completion pass: 256/256 vitest, 28/28 pytest, clean typecheck/build on the
committed tree, pre-existing-only lint noise. Documents that
OPT_QUALITY_BRIDGE_ENABLED ships off and stays off in this PR -- activating
it in production is left as Simon's decision, with a readiness checklist.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-01 21:08:20 +02:00

176 lines
10 KiB
JSON

{
"report": "PRODUCTION_EVIDENCE.json",
"companion_doc": "IMPLEMENTATION_REPORT.md",
"generated_at": "2026-09-01T21:10:00+02:00",
"repo": {
"remote": "https://git.siax.io/sax3l/0pt.git",
"canonical_remote_per_claude_md": "git.siax.io/sax3l/0pt",
"note": "A second remote (github.com/sax3l/0pt) also claims to be this repo per CLAUDE.md; explicitly unresolved and left to Simon. This pass worked only against git.siax.io."
},
"branch": {
"name": "feat/p010-data-os-completion",
"renamed_from": "feat/p010-source-registry-persistence",
"base_branch": "main",
"base_commit": "f8bb0d5ab9f35c652d09f7639d20458cfe849f56",
"head_commit": "9740e20818a8ce0a90498bdb12c501bc74395ac",
"commits_on_branch": [
{
"sha": "07b13bd8331017462ead11b9b2ce8fa9188e520f",
"summary": "feat(data-os): Source Registry Postgres persistence + full HTTP route surface"
},
{
"sha": "9740e20818a8ce0a90498bdb12c501bc74395ac",
"summary": "feat(data-os): TS/Python quality bridge + provenance fields + fault-injection tests"
}
],
"pushed_to_origin_this_pass": true,
"diffstat_vs_base": {
"files_changed": 47,
"insertions": 3119,
"deletions": 201
}
},
"pull_request": {
"url": "https://git.siax.io/sax3l/0pt/pulls/28",
"number": 28,
"base": "main",
"head": "feat/p010-data-os-completion",
"state_at_report_time": "open",
"opened_this_pass": true
},
"verification_methodology": {
"description": "All numbers below were produced by a from-scratch verification pass: a fresh `git clone` of the pushed branch into an isolated directory, a fresh `pnpm install --frozen-lockfile`, and a fresh Python venv built from requirements-dev.txt. This is deliberately NOT a rerun inside the original working tree that developed the branch, to avoid reporting stale or environment-contaminated results.",
"clean_clone_path_used_for_verification": "isolated scratch directory, discarded after this pass",
"original_working_tree": "/home/simon/siax-platforms-work/0pt"
},
"checks": [
{
"name": "pnpm install --frozen-lockfile",
"result": "ok",
"note": "lockfileVersion 9, no resolution drift from the committed pnpm-lock.yaml"
},
{
"name": "typecheck",
"command": "pnpm run typecheck",
"underlying": "tsc -p tsconfig.check.json (src/**/*.ts + tests/**/*.ts)",
"ci_gate": "blocking",
"result": "pass",
"errors": 0,
"note": "Zero errors on the pristine clone. The original dev working tree separately contains 5 untracked/uncommitted stray paths (src/fleet/, src/graph/, src/metrics/, src/projections/, src/features/feature-registry.ts) that were already present before this pass (flagged in BEFORE_STATE.md as unaudited) and are NOT part of any commit on this branch or on main -- confirmed via `git diff --stat origin/main..feat/p010-data-os-completion` touching none of them, and via their total absence from the fresh clone. Running the same command inside that non-clean working tree surfaces 14 TS errors from those 5 files; that is local litter CI will never see, not a defect in this PR."
},
{
"name": "unit/integration tests (TypeScript)",
"command": "pnpm run test",
"underlying": "vitest run",
"ci_gate": "blocking",
"result": "pass",
"test_files_passed": 34,
"test_files_skipped": 3,
"tests_passed": 256,
"tests_skipped": 18,
"tests_new_this_branch": 7,
"new_test_file": "tests/p0/quality-bridge.test.ts",
"skip_reason": "pre-existing .realinfra/.integration suites self-skip honestly when no live ST0RE/OpenSearch/ClickHouse is reachable from the verification environment",
"sample_skip_stderr": "[realinfra] ST0RE (https://api.st0re.siax.io) not reachable this run (ST0RE responded HTTP 401) -- skipping honestly, not fabricating success."
},
{
"name": "lint",
"command": "pnpm run lint",
"underlying": "eslint src tests",
"ci_gate": "advisory (continue-on-error in both .gitea/workflows/ci.yml and .github/workflows/ci.yml)",
"result": "pre-existing failures only, zero introduced by this branch",
"errors": 12,
"warnings": 4,
"verification": [
"git diff --stat origin/main..feat/p010-data-os-completion on every flagged file returns no output -- byte-identical to main",
"ran `pnpm lint` against a worktree checked out directly at origin/main and got the identical 12 errors / 4 warnings"
]
},
{
"name": "build",
"command": "pnpm run build",
"underlying": "next build",
"ci_gate": "blocking in .gitea/workflows/ci.yml; not run by .github/workflows/ci.yml (needs runtime secrets Vercel owns)",
"result": "pass",
"note": "Route manifest confirms new surface is built: /api/0pt/quality/{bridge-run,issues,rules,rules/[ruleId],runs,runs/[runId]} and /api/0pt/sources/{route,[sourceId],[sourceId]/{freshness,health,provenance,rights}} all present as dynamic routes."
},
{
"name": "Python engine tests",
"command": "python -m pytest -v",
"cwd": "services/api",
"environment": "fresh venv, python3.12, requirements-dev.txt",
"ci_gate": "NOT WIRED INTO CI -- both .gitea/workflows/ci.yml and .github/workflows/ci.yml state the Python engine is gated separately if/when a Python workflow is added; this pass did not add that workflow",
"result": "pass",
"tests_passed": 28,
"tests_skipped": 2,
"skip_detail": [
{
"test": "test_cdc_interruption_not_implementable_against_real_code",
"reason": "no CDC pipeline exists anywhere in services/api"
},
{
"test": "test_true_backfill_idempotency_not_implementable_against_real_code",
"reason": "no delivery/order persistence layer exists anywhere in services/api"
}
],
"new_test_files": [
"services/api/tests/test_connectors_provenance.py",
"services/api/tests/test_known_gaps.py",
"services/api/tests/test_pipeline_fault_injection.py",
"services/api/tests/test_quality_bridge.py",
"services/api/tests/test_resolve_determinism.py"
]
}
],
"net_ci_status": {
"gitea_ci_blocking_gates": {
"typecheck": "green",
"test": "green",
"build": "green"
},
"github_ci_blocking_gates": {
"typecheck": "green",
"test": "green"
},
"advisory_only_not_blocking": ["lint (both workflows)", "typecheck:app (github only)"],
"unwired_gate_not_in_ci": ["python pytest (services/api) -- manually verified green, no automated workflow yet"]
},
"production_feature_flags": {
"OPT_QUALITY_BRIDGE_ENABLED": {
"default_shipped_value": "unset (treated as false)",
"changed_by_this_pr": false,
"activated_in_production_by_this_pass": false,
"behavior_when_off": "quality_bridge.py makes zero network calls, returns status=disabled immediately; pipeline.py's delivery decision is completely unaffected",
"behavior_when_on_but_bridge_unreachable": "fails open -- status=unavailable, delivery decision unaffected, error never raised into run_job",
"behavior_when_on_and_reachable": "advisory only -- stamps a quality field on delivered provenance and records a score; does NOT and, per the current ExpectationEngine contract, currently CANNOT change which rows pipeline.py's confidence-threshold filter keeps or drops",
"decision_owner": "Simon",
"readiness_checklist_before_enabling": [
"OPT_QUALITY_BRIDGE_URL / OPT_QUALITY_BRIDGE_EDGE_URL must point at a reachable, authenticated 0pt.app deployment (cross-service network dependency -- Python engine and Next.js edge are typically different deploy targets)",
"accept that this remains advisory-only (no per-row gating) unless the ExpectationEngine contract is separately extended to return per-row results",
"recommended: enable against one non-production tenant/order first and confirm bridge-run round-trips before any production enablement"
],
"manual_live_verification_performed_this_pass": {
"what": "real `next dev` server (AUTH_ENFORCE=false, local only) + real Python pipeline hitting real brreg.no + real bridge-run round-trip + real QualityService score returned",
"when": "during development of commit 9740e20, 2026-09-01",
"repeatable_automated_equivalent": "services/api/tests/test_quality_bridge.py (respx-mocked bridge responses, run as part of the 28/28 pytest total above)",
"note": "the live run was a one-off manual verification during development, not a formal staging rollout step, and not itself part of the from-scratch CI-mirroring verification in this report"
}
}
},
"residual_gaps": [
"Python engine tests (28/28) not wired into any CI workflow yet",
"bridge_provenance as a single unified TS/Python construct still does not exist -- this pass narrows, does not close, the provenance-schema split",
"per-row quality gating from TS into Python is not implementable against the current ExpectationEngine contract -- advisory-only is the ceiling of this pass, not a corner cut",
"resolve.py's greedy merge remains genuinely order-sensitive for non-transitive-similarity triangles -- tested and documented, not fixed (algorithm change, out of scope)",
"CDC-interruption and true delivery-store backfill-idempotency tests remain unimplementable -- no CDC pipeline or delivery persistence layer exists anywhere in services/api",
"5 untracked/unaudited local paths (src/fleet/, src/graph/, src/metrics/, src/projections/, src/features/feature-registry.ts) left exactly as found -- not part of this diff, absent from a fresh clone",
"services/scrapers/ (WAF-bypass stack) remains on main with its deletion PR still open -- unrelated to and untouched by this pass"
],
"process_notes": {
"pr_open_before_this_pass": false,
"before_state_md_left_untouched": true,
"gitignore_additions": [".venv/", ".pytest_cache/"],
"leftover_processes_confirmed_stopped": true
}
}