add final acceptance verification
This commit is contained in:
@@ -1,4 +1,16 @@
|
||||
# Phase 16 pilot benchmark
|
||||
# Benchmarks and final acceptance
|
||||
|
||||
Phase 17 final acceptance is run with:
|
||||
|
||||
```bash
|
||||
python3 scripts/final_acceptance.py
|
||||
```
|
||||
|
||||
It writes `final_acceptance.latest.json`, validates local artifacts, and records
|
||||
explicit external blockers. See `docs/FINAL_ACCEPTANCE.md`; capacity numbers are
|
||||
synthetic smoke bounds only.
|
||||
|
||||
## Phase 16 pilot benchmark
|
||||
|
||||
Run from the repository root:
|
||||
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
{
|
||||
"blockers": [
|
||||
{
|
||||
"gate": "remote_auth",
|
||||
"reason": "Remote repository authentication and branch permission are not available to this local acceptance run.",
|
||||
"status": "blocked"
|
||||
},
|
||||
{
|
||||
"gate": "deployment_access",
|
||||
"reason": "No production host, Docker/Compose, DNS/TLS, secrets, or deployment access is available; no deployment was attempted.",
|
||||
"status": "blocked"
|
||||
},
|
||||
{
|
||||
"gate": "real_provider_legal",
|
||||
"reason": "Real source/provider enablement, consent/legal basis, terms, and operational approval remain explicit gates; outreach stays disabled.",
|
||||
"status": "blocked"
|
||||
}
|
||||
],
|
||||
"capacity_smoke": {
|
||||
"bounded": true,
|
||||
"interpretation": "Deterministic in-memory smoke only; not a production capacity or throughput claim.",
|
||||
"large_batch": {
|
||||
"input_items": 5000,
|
||||
"retained_items": 100,
|
||||
"truncated": true
|
||||
},
|
||||
"limits": {
|
||||
"max_batch_items_retained": 100,
|
||||
"max_page_size": 100
|
||||
},
|
||||
"pagination": {
|
||||
"has_more": true,
|
||||
"requested_page_size": 100,
|
||||
"returned_items": 100,
|
||||
"synthetic_total": 1000
|
||||
}
|
||||
},
|
||||
"checks": {
|
||||
"api_tests": {
|
||||
"command": [
|
||||
"/usr/bin/python3",
|
||||
"-m",
|
||||
"unittest",
|
||||
"discover",
|
||||
"-v",
|
||||
"-s",
|
||||
"apps/api/tests",
|
||||
"-t",
|
||||
"apps/api"
|
||||
],
|
||||
"passed": true,
|
||||
"status": "passed",
|
||||
"summary": "exit=0, tests=100"
|
||||
},
|
||||
"benchmark_no_latency": {
|
||||
"command": [
|
||||
"/usr/bin/python3",
|
||||
"scripts/benchmark_phase16.py",
|
||||
"--no-latency",
|
||||
"--output",
|
||||
"/tmp/prospect-phase16-acceptance.json"
|
||||
],
|
||||
"passed": true,
|
||||
"status": "passed",
|
||||
"summary": "exit=0"
|
||||
},
|
||||
"compose_config": {
|
||||
"command": [
|
||||
"docker",
|
||||
"compose",
|
||||
"-f",
|
||||
"docker-compose.yml",
|
||||
"config",
|
||||
"--quiet"
|
||||
],
|
||||
"passed": true,
|
||||
"status": "passed",
|
||||
"summary": "exit=0"
|
||||
},
|
||||
"git_state": {
|
||||
"branch_status": "exit=0",
|
||||
"head": "9622f769776637a40fdae797adccba91445cd351",
|
||||
"passed": true,
|
||||
"status": "passed",
|
||||
"working_tree_clean": false
|
||||
},
|
||||
"json_validation": {
|
||||
"files": {
|
||||
"docs/benchmarks/final_acceptance.schema.json": {
|
||||
"passed": true,
|
||||
"status": "valid_json"
|
||||
},
|
||||
"docs/benchmarks/phase16.latest.json": {
|
||||
"passed": true,
|
||||
"status": "valid_json"
|
||||
},
|
||||
"docs/benchmarks/phase16.schema.json": {
|
||||
"passed": true,
|
||||
"status": "valid_json"
|
||||
},
|
||||
"phase16_schema_contract": {
|
||||
"passed": true,
|
||||
"status": "schema_valid"
|
||||
}
|
||||
},
|
||||
"passed": true
|
||||
},
|
||||
"py_compile": {
|
||||
"command": [
|
||||
"/usr/bin/python3",
|
||||
"-m",
|
||||
"py_compile",
|
||||
"scripts/benchmark_phase16.py",
|
||||
"scripts/final_acceptance.py",
|
||||
"apps/api/app/__init__.py",
|
||||
"apps/api/app/ai_assistance.py",
|
||||
"apps/api/app/config.py",
|
||||
"apps/api/app/contact_extractor.py",
|
||||
"apps/api/app/domain.py",
|
||||
"apps/api/app/domain_intelligence.py",
|
||||
"apps/api/app/main.py",
|
||||
"apps/api/app/scoring.py",
|
||||
"apps/api/app/sources.py",
|
||||
"apps/api/app/website_scanner.py"
|
||||
],
|
||||
"passed": true,
|
||||
"status": "passed",
|
||||
"summary": "exit=0"
|
||||
},
|
||||
"safety_invariants": {
|
||||
"checks": {
|
||||
"no_send_network": true,
|
||||
"outreach_disabled": true,
|
||||
"tenant_routes": true
|
||||
},
|
||||
"passed": true
|
||||
},
|
||||
"shell_syntax": {
|
||||
"command": [
|
||||
"bash",
|
||||
"-n",
|
||||
"scripts/backup_sqlite.sh",
|
||||
"scripts/healthcheck.sh",
|
||||
"scripts/restore_sqlite.sh",
|
||||
"scripts/rollback.sh"
|
||||
],
|
||||
"passed": true,
|
||||
"status": "passed",
|
||||
"summary": "exit=0"
|
||||
}
|
||||
},
|
||||
"limitations": [
|
||||
"Synthetic capacity smoke measurements do not establish production throughput, concurrency, durability, or availability."
|
||||
],
|
||||
"passed": true,
|
||||
"report": "phase17-final-acceptance",
|
||||
"scope": "local-repository-acceptance",
|
||||
"version": 1
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"title": "Prospect Platform Phase 17 final acceptance report",
|
||||
"type": "object",
|
||||
"required": ["report", "version", "scope", "passed", "checks", "capacity_smoke", "blockers", "limitations"],
|
||||
"properties": {
|
||||
"report": {"const": "phase17-final-acceptance"},
|
||||
"version": {"type": "integer", "const": 1},
|
||||
"scope": {"const": "local-repository-acceptance"},
|
||||
"passed": {"type": "boolean"},
|
||||
"checks": {"type": "object", "additionalProperties": true},
|
||||
"capacity_smoke": {"type": "object"},
|
||||
"blockers": {"type": "array", "items": {"type": "object", "required": ["gate", "status", "reason"], "properties": {"gate": {"type": "string"}, "status": {"type": "string"}, "reason": {"type": "string"}}}},
|
||||
"limitations": {"type": "array", "items": {"type": "string"}}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user