Compare commits

...
Author SHA1 Message Date
m aebc932b97 docs(status): refresh current runtime evidence
CI / test (push) Successful in 1m2s
CI / test (pull_request) Successful in 1m7s
2026-08-23 13:50:44 +03:00
m 05a246ea3f fix(agent-worker): report local fallback truthfully
CI / test (push) Successful in 1m5s
fix(agent-worker): report local fallback truthfully (#193)
2026-08-23 10:42:50 +00:00
m c847988630 fix(agent-worker): report local fallback truthfully
CI / test (push) Successful in 1m3s
CI / test (pull_request) Successful in 1m3s
2026-08-23 13:41:22 +03:00
m 62f0c529b3 feat(work): persist governed development candidates
CI / test (push) Successful in 53s
feat(work): persist governed development candidates (#192)
2026-08-23 10:29:05 +00:00
7 changed files with 100 additions and 4 deletions
+3
View File
@@ -49,6 +49,9 @@ func main() {
os.Exit(1)
}
} else {
// The local evaluator keeps task-qualification work alive, but it is not
// an external Agent Execution Bridge and must never be reported as one.
localFallback = true
executor = newTaskEvaluationExecutor(envOr("COGNITIVE_WORKER_URL", "http://cognitive-worker:8083"), envOr("WORK_GRAPH_RUNTIME_URL", "http://work-graph-runtime:8088"), &http.Client{Timeout: *leaseTTL})
fmt.Fprintln(os.Stderr, "protected agent execution bridge URL is not configured; task evaluations use the local durable evaluator, other work remains in fallback")
}
+12
View File
@@ -50,6 +50,18 @@ func TestWorkerStatusReportsLocalFallback(t *testing.T) {
}
}
func TestWorkerStatusDoesNotCallLocalFallbackAnExternalExecutor(t *testing.T) {
response := httptest.NewRecorder()
workerStatusHandler(false, true).ServeHTTP(response, httptest.NewRequest(http.MethodGet, "/status", nil))
var value workerStatusResponse
if err := json.NewDecoder(response.Body).Decode(&value); err != nil {
t.Fatal(err)
}
if value.ExecutorConfigured || value.Ready || !value.LocalFallback || value.Mode != "local-fallback" {
t.Fatalf("local fallback was presented as external execution: %+v", value)
}
}
func TestWorkerReadyzRequiresExecutor(t *testing.T) {
response := httptest.NewRecorder()
workerStatusHandler(false).ServeHTTP(response, httptest.NewRequest(http.MethodGet, "/readyz", nil))
+2 -2
View File
@@ -1,5 +1,5 @@
{
"task_file": "dev/tasks/DEV-000215-governed-development-control-plane.json",
"task_id": "DEV-000215",
"task_file": "dev/tasks/DEV-000217-current-status-evidence.json",
"task_id": "DEV-000217",
"task_revision": 1
}
@@ -0,0 +1,23 @@
{
"task_id": "DEV-000216",
"task_revision": 1,
"architecture_revision": "ADR-0018",
"base_repo_revision": "62f0c529b3f8b3c92e4a69fcc6298d59b3015fde",
"risk_tier": "E",
"intent": "Keep agent-worker status truthful when the protected external execution bridge is absent while retaining local task-evaluation fallback.",
"requirement_ids": ["WP-301", "truthful degraded status", "local fallback"],
"allowed_change_scope": {"modules": ["agent-worker"], "paths": ["cmd/agent-worker/main.go", "cmd/agent-worker/status_test.go", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000216-agent-worker-status-truth.json"]},
"forbidden_change_scope": {"paths": ["architecture/**", "database/**", "deploy/**", "security/**", "contracts/**", "modules/**", "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": ["protected bridge file", "agent-worker status response", "local task-evaluation fallback"], "may_change": []},
"semantic_owner": "work",
"canonical_state": ["existing worker status projection and durable dispatch lifecycle"],
"state_transitions": ["bridge absent -> local-fallback status", "bridge present -> execution status"],
"side_effects_and_privileges": ["no external mutation; no new credentials; no persistence change"],
"persistence_and_migrations": ["none"],
"failure_retry_restart": ["bridge absence remains explicit after restart; local evaluator remains available for bounded qualification work"],
"assumptions": ["task-evaluation fallback is not general external agent execution"],
"acceptance_scenarios": ["worker marks local_fallback when protected bridge URL is absent", "status never reports executor_configured=true for local fallback", "configured bridge path remains execution mode", "no secret value is exposed"],
"required_tests": ["go test ./cmd/agent-worker", "go vet ./cmd/agent-worker", "preflight", "check-diff", "check-architecture", "independent", "git diff --check", "CI", "production worker status"],
"terminal_gap_states": ["BLOCKED_BY_MISSING_CAPABILITY", "BLOCKED_BY_SPEC_GAP"]
}
@@ -0,0 +1,23 @@
{
"task_id": "DEV-000217",
"task_revision": 1,
"architecture_revision": "ADR-0018",
"base_repo_revision": "05a246ea3f240a77be769969ad62a236fba33bac",
"risk_tier": "E",
"intent": "Refresh the project status projection and redacted live evidence after the agent-worker truthful fallback fix without changing runtime behavior.",
"requirement_ids": ["current audit evidence", "task lineage accuracy", "negative-state transparency"],
"allowed_change_scope": {"modules": ["operations-evidence"], "paths": ["docs/PROJECT_STATUS.md", "docs/evidence/audit-runtime-status-2026-08-23-v2.json", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000217-current-status-evidence.json"]},
"forbidden_change_scope": {"paths": ["architecture/**", "security/**", "cmd/**", "modules/**", "contracts/**", "database/**", "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": ["live health/readiness/status responses", "merged task lineage"], "may_change": ["operations status projection and redacted evidence artifact"]},
"semantic_owner": "operations-evidence projection",
"canonical_state": ["none; docs and evidence are rebuildable projections"],
"state_transitions": ["stale status projection -> current evidence projection"],
"side_effects_and_privileges": ["read-only live checks; no secrets, credentials or runtime mutation"],
"persistence_and_migrations": ["none"],
"failure_retry_restart": ["evidence records unavailable/degraded states explicitly; no success inferred from missing data"],
"assumptions": ["historical evidence remains immutable and is not rewritten"],
"acceptance_scenarios": ["active task points to the current merged packet", "bridge absence is reported as local fallback", "GPU timeout is reported as degraded without changing FAST preference", "authenticated UI availability is not claimed without a current signed-in session", "no secret value appears in the projection"],
"required_tests": ["go test", "go vet", "preflight", "check-diff", "check-architecture", "independent", "git diff --check", "CI", "production public health and runtime status"],
"terminal_gap_states": ["BLOCKED_BY_MISSING_CAPABILITY", "BLOCKED_BY_SPEC_GAP"]
}
+4 -2
View File
@@ -13,13 +13,15 @@
- `BACKUP_RESTORE_STATUS = VERIFIED`; latest checksum and isolated restore evidence is retained in `docs/evidence/wp-002-postgres-restore-2026-08-22-v1.json`.
- `GOVERNED_SELF_DEVELOPMENT_STATUS = DURABLE_GATE_PERSISTED`; Work-owned revisioned gate storage and optimistic-concurrency persistence are live. No bridge-backed source mutation, promotion or rollback is claimed. Evidence: `docs/evidence/governed-development-gate-persistence-2026-08-23-v1.json`.
- `UI_AUTHENTICATED_ACCEPTANCE = AUTHENTICATED_QUICK_SMOKE_PASS`; browser-driven smoke completed in the active production session: chat response received, admin login accepted, diagnostics 7/7 passed, operations fleet 4/4 READY, and action history loaded. Deep mutation, delegation-specific and long-running acceptance remain intentionally deferred.
- `CURRENT_UI_SESSION_STATUS = NO_CURRENT_AUTHENTICATED_SESSION`; the historical quick-smoke evidence above is retained, but the current acceptance run has no signed-in browser session, so no new authenticated visual result is claimed. Public cabinet shell and unauthenticated protection were checked separately.
- `AGENT_WORKER_STATUS_CORRECTION = LIVE_TRUTHFUL_LOCAL_FALLBACK`; after DEV-000216, absence of the protected bridge is reported as `executor_configured=false`, `mode=local-fallback`, `ready=false`; local task evaluation is not represented as external agent execution. Evidence: `docs/evidence/audit-runtime-status-2026-08-23-v2.json`.
## Current governance checkpoint
- `COMPLETION_MATRIX = docs/evidence/audit-completion-matrix-2026-08-23-v3.json`; all seven objective areas are mapped to current repository/production proof, with external bridge, GPU promotion/quality and deep-acceptance gaps explicit.
- `ACTIVE_TASK = dev/tasks/DEV-000207-gpu-invocation-qualification.json revision 1`
- `ACTIVE_TASK = dev/tasks/DEV-000217-current-status-evidence.json revision 1`
- `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 = 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.`
- `NEXT_WORK = provision/qualify an independently operated Agent Execution bridge when available, complete deferred deep browser acceptance with a signed-in session, and add task-quality verification only when live work produces an unresolved case; retain explicit evidence for all remaining negative directions.`
@@ -0,0 +1,33 @@
{
"observed_on": "2026-08-23",
"source": "production docker.cin.su read-only live checks",
"public": {
"healthz": {"status": 200, "runtime": "creator-web"}
},
"agent_worker": {
"runtime": "agent-worker",
"executor_configured": false,
"mode": "local-fallback",
"ready": false,
"local_fallback": true,
"reason": "external bridge unavailable; durable work is retained without external mutation"
},
"fleet": {
"preferred_tier": "FAST",
"selected_tier": "FAST",
"ready_tiers": ["FAST", "MEDIUM", "LIFEBOAT"],
"fallback_tier": "LIFEBOAT",
"heavy": {"ready": false, "reason_class": "provider timeout"}
},
"runtimes": {
"core": "ready",
"work_graph": "ready",
"research": "ready",
"reflection_worker": "running"
},
"ui": {
"public_admin_shell": "available",
"authenticated_browser_session": "not_available_for_current_acceptance"
},
"secret_policy": "values omitted; only typed states and reason classes retained"
}