diff --git a/dev/ACTIVE_TASK.json b/dev/ACTIVE_TASK.json index 5bf8f7d..943f790 100644 --- a/dev/ACTIVE_TASK.json +++ b/dev/ACTIVE_TASK.json @@ -1,5 +1,5 @@ { - "task_file": "dev/tasks/DEV-000283-generic-candidate-verifier.json", - "task_id": "DEV-000283", + "task_file": "dev/tasks/DEV-000284-live-generic-synthesis-evidence.json", + "task_id": "DEV-000284", "task_revision": 1 } diff --git a/dev/tasks/DEV-000284-live-generic-synthesis-evidence.json b/dev/tasks/DEV-000284-live-generic-synthesis-evidence.json new file mode 100644 index 0000000..883c0cd --- /dev/null +++ b/dev/tasks/DEV-000284-live-generic-synthesis-evidence.json @@ -0,0 +1,23 @@ +{ + "task_id": "DEV-000284", + "task_revision": 1, + "architecture_revision": "ADR-0018", + "base_repo_revision": "bcbd41f", + "risk_tier": "E", + "intent": "Record a bounded production canary proving that generic Work Graph candidates remain unverified until an independent verifier and synthesis path completes the graph.", + "requirement_ids": ["generic candidate independent verification", "candidate dissent lineage", "graph completion only after verified synthesis"], + "allowed_change_scope": {"modules": [], "paths": ["dev/ACTIVE_TASK.json", "dev/tasks/DEV-000284-live-generic-synthesis-evidence.json", "docs/PROJECT_STATUS.md", "docs/evidence/audit-completion-matrix-2026-08-24-v14.json", "docs/evidence/generic-synthesis-live-2026-08-24-v1.json"]}, + "forbidden_change_scope": {"paths": ["architecture/**", "security/**", "database/**", "contracts/**", "modules/**", "adapters/**", "cmd/**", "deploy/**", "LLM-local/**"]}, + "allowed_architecture_delta": {"new_cross_module_dependencies": 0, "new_canonical_owners": 0, "new_privileges": 0, "new_third_party_dependencies": 0, "new_database_owner_roles": 0}, + "contracts": {"consume": ["task-verifier generic envelope response", "Work Graph synthesis response", "production runtime labels"], "may_change": ["audit evidence only"]}, + "semantic_owner": "evidence reconciliation", + "canonical_state": ["synthetic canary graph and candidates are disposable evidence records; no user data or external mutation"], + "state_transitions": ["candidate recorded -> independently envelope-verified -> synthesis verified -> graph completed"], + "side_effects_and_privileges": ["bounded synthetic production Work Graph records only"], + "persistence_and_migrations": ["documentation only; no migration"], + "failure_retry_restart": ["canary is idempotent by unique synthetic graph id; failure remains evidence gap"], + "assumptions": ["semantic envelope verification is not semantic truth verification", "external model qualification remains deferred"], + "acceptance_scenarios": ["two candidates retain dissent lineage", "synthesis response is independently attributed", "graph reaches COMPLETED only through synthesis endpoint", "semantic content remains explicitly unverified"], + "required_tests": ["go test ./...", "go vet ./...", "preflight", "check-diff", "check-architecture", "independent", "git diff --check", "CI", "production health smoke", "live generic synthesis canary"], + "terminal_gap_states": ["BLOCKED_BY_MISSING_CAPABILITY"] +} diff --git a/docs/PROJECT_STATUS.md b/docs/PROJECT_STATUS.md index 634b927..be173c3 100644 --- a/docs/PROJECT_STATUS.md +++ b/docs/PROJECT_STATUS.md @@ -28,10 +28,10 @@ ## Current governance checkpoint -- `COMPLETION_MATRIX = docs/evidence/audit-completion-matrix-2026-08-24-v13.json`; generic local bridge rollout is live; independent candidate verification, authenticated chat E2E, mobile viewport acceptance and deferred external qualification remain explicit. +- `COMPLETION_MATRIX = docs/evidence/audit-completion-matrix-2026-08-24-v14.json`; generic candidate envelope verification and independent Work Graph synthesis are live and proven by a bounded synthetic production canary; authenticated chat E2E, mobile viewport acceptance and deferred external qualification remain explicit. -- `ACTIVE_TASK = dev/tasks/DEV-000282-final-auto-deploy-evidence.json revision 1`; this evidence reconciliation does not change runtime behavior or model routing. +- `ACTIVE_TASK = dev/tasks/DEV-000284-live-generic-synthesis-evidence.json revision 1`; this evidence reconciliation does not change runtime behavior or model routing. - `LINEAGE_DECISION = docs/GOVERNANCE_LINEAGE_DECISION_2026-08-22.md`; historical packets remain provenance and are not current authority. - `REGISTRY_STATUS = YAML and JSON semantic mirrors agree` - `PRODUCTION_DOMAIN = docker.cin.su`; shared docker-test is not used for this project. -- `NEXT_WORK = strengthen local CPU/Lifeboat capabilities and generic local agent work; obtain a viewport-capable browser for real mobile visual acceptance; add external providers later under an explicit task.` +- `NEXT_WORK = exercise authenticated research chat when a signed-in browser session is available; obtain a viewport-capable browser for real mobile visual acceptance; add external providers later under an explicit task.` diff --git a/docs/evidence/audit-completion-matrix-2026-08-24-v14.json b/docs/evidence/audit-completion-matrix-2026-08-24-v14.json new file mode 100644 index 0000000..0df1fa6 --- /dev/null +++ b/docs/evidence/audit-completion-matrix-2026-08-24-v14.json @@ -0,0 +1,23 @@ +{ + "evidence_id": "audit-completion-matrix-2026-08-24-v14", + "captured_at": "2026-08-24T01:53:00Z", + "production_revision": "bcbd41f2172dc7ec68482680612ffcc50ea339d6", + "supersedes": "docs/evidence/audit-completion-matrix-2026-08-24-v13.json", + "overall_status": "NOT_COMPLETE", + "completed_areas": ["durable Agent Execution lease/heartbeat/recovery", "bounded local task-evaluation bridge", "typed local generic cognitive specialist bridge", "independent generic candidate envelope verification and Work Graph synthesis canary", "multi-agent Work Graph fan-out/fan-in foundation", "Truth/Research runtime and source-backed routing", "Learning reflection loop", "governed self-development gate and verifier", "local-first model routing", "Portainer delayed auto-deployment", "production health and live runtime checks"], + "remaining_gaps": ["authenticated chat end-to-end research response was not exercised in this session", "real mobile authenticated visual acceptance is unavailable", "external model qualification and promotion remain deferred by explicit scope"], + "live_facts": { + "assistant_healthz": "OK", + "runtime_project_revision": "bcbd41f2172dc7ec68482680612ffcc50ea339d6", + "bridge": {"status": "ok", "capabilities": ["task-evaluation", "generic-cognitive-work"]}, + "agent_worker": {"ready": true, "executor_configured": true, "mode": "execution", "capabilities": ["task-evaluation", "generic-cognitive-work"]}, + "work_graph": {"status": "ready", "generic_synthesis_canary": "COMPLETED_AFTER_VERIFIED_SYNTHESIS"}, + "task_verifier": {"status": "ok", "generic_envelope_verifier": "verified"}, + "research_runtime": "ok", + "fleet": {"ready_tiers": ["MEDIUM", "LIFEBOAT"], "selected_tier": "MEDIUM", "fallback_tier": "LIFEBOAT", "fast_ready": false, "heavy_ready": false}, + "mobile_viewport_verified": false, + "authenticated_chat_e2e_verified": false, + "external_probe_required": false, + "secrets": "No secret values included." + } +} diff --git a/docs/evidence/generic-synthesis-live-2026-08-24-v1.json b/docs/evidence/generic-synthesis-live-2026-08-24-v1.json new file mode 100644 index 0000000..29ac20e --- /dev/null +++ b/docs/evidence/generic-synthesis-live-2026-08-24-v1.json @@ -0,0 +1,31 @@ +{ + "evidence_id": "generic-synthesis-live-2026-08-24-v1", + "captured_at": "2026-08-24T01:53:00Z", + "production_revision": "bcbd41f2172dc7ec68482680612ffcc50ea339d6", + "synthetic_graph_id": "live-generic-synthesis-1787536366515", + "steps": { + "candidate_recording": {"result": "two candidates recorded", "graph_revision": 2, "node_state_before_synthesis": "LEASED"}, + "independent_envelope_verification": { + "result": "both verified", + "verifier_identity": "deterministic-generic-envelope-verifier-v1", + "verification_refs": ["verification:61ea799b2713606095c2cb717a29e14b18ff63a56dc6bdf3412693dcd4d27e41", "verification:9c660a252d0b497ba6eaedfa0c09d01295226c83b7ada863fce016cb611292d9"] + }, + "independent_synthesis": { + "result": "verified", + "verifier_run_id": "independent-verifier-live-283", + "selected_candidate_id": "candidate-a", + "dissent_candidate_ids": ["candidate-b"], + "graph_state_after_synthesis": "COMPLETED", + "node_state_after_synthesis": "SUCCEEDED" + } + }, + "truth_boundary": "The canary proves attribution, evidence-envelope verification and explicit dissent retention. It does not prove the semantic content of either synthetic candidate; the response explicitly remained unverified.", + "runtime_checks": { + "assistant_healthz": "OK", + "agent_execution_bridge": "OK", + "task_verifier": "OK", + "work_graph_ready": "READY", + "agent_worker_ready": true + }, + "secrets": "No secret values included." +}