diff --git a/dev/ACTIVE_TASK.json b/dev/ACTIVE_TASK.json index 9ee6d62..97ba957 100644 --- a/dev/ACTIVE_TASK.json +++ b/dev/ACTIVE_TASK.json @@ -1,5 +1,5 @@ { - "task_file": "dev/tasks/DEV-000204-gpu-discovery-evidence.json", - "task_id": "DEV-000204", + "task_file": "dev/tasks/DEV-000205-gpu-invocation-smoke-evidence.json", + "task_id": "DEV-000205", "task_revision": 1 } diff --git a/dev/tasks/DEV-000205-gpu-invocation-smoke-evidence.json b/dev/tasks/DEV-000205-gpu-invocation-smoke-evidence.json new file mode 100644 index 0000000..f316523 --- /dev/null +++ b/dev/tasks/DEV-000205-gpu-invocation-smoke-evidence.json @@ -0,0 +1,23 @@ +{ + "task_id": "DEV-000205", + "task_revision": 1, + "architecture_revision": "ADR-0018", + "base_repo_revision": "288d18a4fba0535e3e2d15643de5b78499beb961", + "risk_tier": "E", + "intent": "Record a bounded protected GPU invocation smoke result without promoting or activating an unqualified model.", + "requirement_ids": ["WP-200", "WP-201", "model fleet/failover", "truthful negative evidence"], + "allowed_change_scope": {"modules": ["governance status", "evidence"], "paths": ["docs/evidence/gpu-invocation-smoke-2026-08-23-v1.json", "docs/PROJECT_STATUS.md", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000205-gpu-invocation-smoke-evidence.json"]}, + "forbidden_change_scope": {"paths": ["architecture/**", "security/**", "cmd/**", "modules/**", "contracts/**", "adapters/**", "database/**", "deploy/**", ".gitea/**"]}, + "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": ["protected GPU gateway OpenAI-compatible endpoint", "existing GPU discovery evidence"], "may_change": []}, + "semantic_owner": "governance evidence projection", + "canonical_state": [], + "state_transitions": ["discovery available -> invocation smoke not observed; no activation"], + "side_effects_and_privileges": ["one bounded synthetic request through an already configured protected credential"], + "persistence_and_migrations": ["immutable JSON evidence only"], + "failure_retry_restart": ["no retry; 400 remains an explicit negative observation"], + "assumptions": ["the gateway credential is resolved inside the protected runtime and is not copied into evidence"], + "acceptance_scenarios": ["model discovery remains visible", "failed invocation is recorded without claiming quality", "GPU remains inactive and cannot become routing priority from discovery alone"], + "required_tests": ["JSON validation", "go test", "go vet", "go run ./cmd/devctl preflight -active dev/ACTIVE_TASK.json", "go run ./cmd/devctl check-diff -active dev/ACTIVE_TASK.json", "go run ./cmd/devctl check-architecture", "independent", "git diff --check", "CI", "production public health check"], + "terminal_gap_states": ["BLOCKED_BY_MISSING_CAPABILITY", "BLOCKED_BY_SPEC_GAP"] +} diff --git a/docs/PROJECT_STATUS.md b/docs/PROJECT_STATUS.md index d8bb065..2aa0811 100644 --- a/docs/PROJECT_STATUS.md +++ b/docs/PROJECT_STATUS.md @@ -5,7 +5,7 @@ - `CURRENT_PRODUCTION_STATUS = LIVE_HEALTHY`; public `/healthz` is healthy. The exact deployed revision is authoritative in the deployment log and merge record, not duplicated in this mutable status projection. Evidence: `docs/evidence/audit-runtime-status-2026-08-23-v1.json`. - `FAST_PROVIDER_STATUS = LIVE_SMOKE_SUPPORTED`: local CPU gateway authentication is configured through a protected file reference; four bounded local-only advisory cases completed through cognitive-worker. Evidence: `docs/evidence/wp-601-fast-gateway-live-smoke-2026-08-22-v1.json`. - `MEDIUM_PROVIDER_STATUS = LIVE_BOUNDED_SMOKE_SUPPORTED_UNPROMOTED`; four bounded local-provider cases passed with template thinking disabled. This is availability/response-shape evidence only; lifecycle qualification, activation and promotion remain unclaimed. Evidence: `docs/evidence/medium-live-bounded-smoke-2026-08-23-v1.json`. -- `HEAVY_PROVIDER_STATUS = LIVE_DISCOVERED_AVAILABLE_UNPROMOTED`; protected GPU discovery currently sees two available models, both `DISCOVERED`/`INACTIVE` with capability and invokability not yet observed. GPU availability is not treated as intelligence or routing priority. Evidence: `docs/evidence/gpu-discovery-2026-08-23-v1.json`. +- `HEAVY_PROVIDER_STATUS = LIVE_DISCOVERED_NOT_INVOCABLE`; protected GPU discovery sees two available models, but the bounded Qwen invocation smoke returned `400 missing_model`, so completion/invocability is not observed. GPU availability is not treated as intelligence or routing priority. Evidence: `docs/evidence/gpu-discovery-2026-08-23-v1.json`, `docs/evidence/gpu-invocation-smoke-2026-08-23-v1.json`. - `AGENT_EXECUTION_STATUS = DURABLE_DRY_RUN_CANARY_VERIFIED`; the explicit production canary persisted a dispatch intent, an ACTIVE lease and callback head sequence 2. No independently operated bridge endpoint is configured, so bridge-backed execution remains unavailable. Evidence: `docs/evidence/agent-execution-dry-run-canary-2026-08-23-v1.json`. - `FLEET_EXECUTION_EVIDENCE = docs/evidence/audit-runtime-status-2026-08-23-v1.json`; FAST, MEDIUM and LIFEBOAT are ready, HEAVY is explicitly degraded by provider timeout, FAST remains preferred/selected, and LIFEBOAT is the fallback tier. - `TRUTH_RESEARCH_STATUS = LIVE_CANARY_PERSISTED`; the web research canary preserved an OBSERVED/COMPLETE/NO-CONFLICT source chain while leaving the claim UNVERIFIED and belief PROVISIONAL. Evidence: `docs/evidence/truth-runtime-canary-2026-08-23-v1.json`. @@ -20,4 +20,4 @@ - `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 = close browser-driven interaction, external Agent Execution bridge and GPU gaps; retain explicit evidence for all remaining negative directions.` +- `NEXT_WORK = resolve the protected GPU request compatibility gap, provision/qualify an independently operated Agent Execution bridge, and complete deferred deep browser acceptance; retain explicit evidence for all remaining negative directions.` diff --git a/docs/evidence/gpu-invocation-smoke-2026-08-23-v1.json b/docs/evidence/gpu-invocation-smoke-2026-08-23-v1.json new file mode 100644 index 0000000..fd9ccd9 --- /dev/null +++ b/docs/evidence/gpu-invocation-smoke-2026-08-23-v1.json @@ -0,0 +1,25 @@ +{ + "evidence_id": "gpu-invocation-smoke-2026-08-23-v1", + "captured_at": "2026-08-23T08:16:05Z", + "environment": "production", + "endpoint_class": "protected OpenAI-compatible GPU gateway", + "discovery": { + "request": "GET /v1/models with protected runtime credential", + "http_status": 200, + "models_observed": [ + "Qwen3.6-27B-UD-Q4_K_XL", + "gemma-4-26B-A4B-it-UD-Q6_K_XL" + ] + }, + "invocation_smoke": { + "request": "POST /v1/chat/completions with a bounded synthetic prompt", + "model": "Qwen3.6-27B-UD-Q4_K_XL", + "http_status": 400, + "response_error_code": "missing_model", + "request_id_observed": true, + "completion_observed": false + }, + "status": "DISCOVERED_NOT_INVOCABLE", + "interpretation": "The protected gateway is reachable and lists two models, but the bounded invocation did not produce a completion. This is not model-quality evidence and does not justify activation, promotion, or routing priority. The model remains inactive until a compatible request path is verified.", + "secrets": "No credential values included." +}