Compare commits

...
Author SHA1 Message Date
m beee8deb34 docs: refresh audit completion matrix
CI / test (push) Successful in 1m4s
CI / test (pull_request) Successful in 1m6s
2026-08-23 11:30:07 +03:00
m faab913227 Merge pull request 'docs: record gpu invocation smoke gap' (#182) from codex/wp-205-gpu-smoke-evidence into main
CI / test (push) Successful in 1m5s
docs: record gpu invocation smoke gap
2026-08-23 08:24:36 +00:00
m 346a8c8467 docs: record gpu invocation smoke gap
CI / test (push) Successful in 1m9s
CI / test (pull_request) Successful in 1m6s
2026-08-23 11:21:51 +03:00
m 288d18a4fb Merge pull request 'docs: record protected gpu model discovery' (#181) from codex/wp-200-gpu-discovery-evidence into main
CI / test (push) Successful in 1m13s
2026-08-23 08:02:48 +00:00
m 97ed2e90ee docs: record protected gpu model discovery
CI / test (push) Successful in 1m7s
CI / test (pull_request) Successful in 1m5s
2026-08-23 11:00:00 +03:00
m b4d166480e Merge pull request 'feat: keep agent work durable without external bridge' (#180) from codex/wp-301-local-fallback into main
CI / test (push) Successful in 1m10s
2026-08-23 07:55:59 +00:00
m 46b35161e9 feat: keep agent work durable without external bridge
CI / test (push) Successful in 1m5s
CI / test (pull_request) Successful in 1m8s
2026-08-23 10:53:10 +03:00
m bee238b61e Merge pull request 'docs: record authenticated ui quick smoke' (#179) from codex/wp-806-authenticated-ui-visual-evidence into main
CI / test (push) Successful in 1m13s
2026-08-23 07:49:55 +00:00
m ca9c4bede5 Merge remote-tracking branch 'origin/main' into codex/wp-806-authenticated-ui-visual-evidence
CI / test (push) Successful in 55s
CI / test (pull_request) Successful in 1m5s
2026-08-23 10:46:39 +03:00
m 48d73c3a4b docs: record authenticated ui quick smoke
CI / test (push) Successful in 1m4s
CI / test (pull_request) Successful in 1m5s
2026-08-23 10:43:03 +03:00
m 76c558ee1a Merge pull request 'docs: record authenticated ui visual evidence' (#178) from codex/wp-806-authenticated-ui-visual-evidence into main
CI / test (push) Successful in 1m9s
2026-08-23 07:21:41 +00:00
m e530058659 docs: record authenticated ui visual evidence
CI / test (push) Successful in 1m6s
CI / test (pull_request) Successful in 1m2s
2026-08-23 10:18:21 +03:00
m 79feab8e41 Merge pull request 'docs: record medium bounded live smoke evidence' (#177) from codex/wp-200-medium-live-smoke-evidence into main
CI / test (push) Successful in 1m10s
2026-08-23 02:03:10 +00:00
m 03943f152d docs: record medium bounded live smoke evidence
CI / test (push) Successful in 1m2s
CI / test (pull_request) Successful in 1m9s
2026-08-23 04:59:14 +03:00
m c8aa731eeb Merge pull request 'fix: disable hidden thinking for bounded local advice' (#176) from codex/wp-200-medium-thinking-control into main
CI / test (push) Successful in 1m12s
2026-08-23 01:04:25 +00:00
20 changed files with 430 additions and 10 deletions
+32
View File
@@ -0,0 +1,32 @@
package main
import (
"context"
"time"
"git.cin.su/m/Assistant/contracts/work"
)
// localFallbackExecutor keeps the durable work path alive when no external
// executor is reachable. It never claims that an external action happened.
// The work owner records the WAITING callback and can retry after a bridge is
// configured or a human chooses the next step.
type localFallbackExecutor struct {
now func() time.Time
}
func newLocalFallbackExecutor() localFallbackExecutor {
return localFallbackExecutor{now: time.Now}
}
func (e localFallbackExecutor) Execute(_ context.Context, request work.AgentExecutionRequest) (work.AgentExecutionResult, error) {
now := time.Now()
if e.now != nil {
now = e.now()
}
return work.AgentExecutionResult{
State: work.AgentExecutionWaiting,
Summary: "Внешний Agent Execution Bridge недоступен; локальный fallback сохранил durable работу и ожидает исполнителя.",
ObservedAtUnixMillis: now.UnixMilli(),
}, nil
}
+24
View File
@@ -0,0 +1,24 @@
package main
import (
"context"
"testing"
"time"
"git.cin.su/m/Assistant/contracts/work"
)
func TestLocalFallbackNeverClaimsExternalExecution(t *testing.T) {
when := time.UnixMilli(1_700_000_000_000)
executor := localFallbackExecutor{now: func() time.Time { return when }}
result, err := executor.Execute(context.Background(), work.AgentExecutionRequest{Intent: work.AgentDispatchIntent{DispatchID: "dispatch-1"}})
if err != nil {
t.Fatal(err)
}
if result.State != work.AgentExecutionWaiting || result.ObservedAtUnixMillis != when.UnixMilli() {
t.Fatalf("unexpected fallback result: %+v", result)
}
if result.OutcomeRef != "" || result.Summary == "" {
t.Fatalf("fallback must not claim an outcome: %+v", result)
}
}
+5 -2
View File
@@ -41,6 +41,7 @@ func main() {
}
defer repository.Close()
var executor ports.AgentExecutor
localFallback := false
if bridgeURL, bridgeConfigured := loadProtectedBridgeURL(); bridgeConfigured {
executor, err = agentbridge.NewHTTPExecutor(bridgeURL, &http.Client{Timeout: *leaseTTL})
if err != nil {
@@ -48,10 +49,12 @@ func main() {
os.Exit(1)
}
} else {
fmt.Fprintln(os.Stderr, "protected agent execution bridge URL is not configured; dispatch claims are disabled; recovery-only mode")
executor = newLocalFallbackExecutor()
localFallback = true
fmt.Fprintln(os.Stderr, "protected agent execution bridge URL is not configured; local fallback preserves durable work without external mutation")
}
go func() {
if serveErr := http.ListenAndServe(*statusAddr, workerStatusHandler(executor != nil)); serveErr != nil {
if serveErr := http.ListenAndServe(*statusAddr, workerStatusHandler(executor != nil && !localFallback, localFallback)); serveErr != nil {
fmt.Fprintln(os.Stderr, "agent worker status server:", serveErr)
}
}()
+8 -1
View File
@@ -11,15 +11,22 @@ type workerStatusResponse struct {
Mode string `json:"mode"`
Ready bool `json:"ready"`
Reason string `json:"reason"`
LocalFallback bool `json:"local_fallback"`
}
func workerStatusHandler(executorConfigured bool) http.Handler {
func workerStatusHandler(executorConfigured bool, localFallback ...bool) http.Handler {
local := len(localFallback) > 0 && localFallback[0]
status := workerStatusResponse{
Runtime: "agent-worker",
ExecutorConfigured: executorConfigured,
Mode: "recovery-only",
Ready: false,
Reason: "protected agent execution bridge URL is not configured",
LocalFallback: local,
}
if local {
status.Mode = "local-fallback"
status.Reason = "external bridge unavailable; durable work is retained without external mutation"
}
if executorConfigured {
status.Mode = "execution"
+12
View File
@@ -38,6 +38,18 @@ func TestWorkerStatusReportsRecoveryOnlyWithoutExecutor(t *testing.T) {
}
}
func TestWorkerStatusReportsLocalFallback(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 response.Code != http.StatusOK || value.Ready || value.Mode != "local-fallback" || !value.LocalFallback {
t.Fatalf("unexpected status: code=%d value=%+v", response.Code, 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-000199-medium-advisory-thinking-control.json",
"task_id": "DEV-000199",
"task_file": "dev/tasks/DEV-000206-completion-matrix-refresh.json",
"task_id": "DEV-000206",
"task_revision": 1
}
@@ -0,0 +1,23 @@
{
"task_id": "DEV-000200",
"task_revision": 1,
"architecture_revision": "ADR-0018",
"base_repo_revision": "c8aa731eeb5f0d1c1dc12591fb50bfbe5dab6d69",
"risk_tier": "E",
"intent": "Record bounded live smoke evidence for the MEDIUM provider after disabling hidden template thinking, without claiming lifecycle qualification or promotion.",
"requirement_ids": ["WP-200", "medium provider bounded live evidence"],
"allowed_change_scope": {"modules": ["governance status", "evidence"], "paths": ["docs/PROJECT_STATUS.md", "docs/evidence/medium-live-bounded-smoke-2026-08-23-v1.json", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000200-medium-live-bounded-smoke-evidence.json"]},
"forbidden_change_scope": {"paths": ["architecture/**", "security/**", "database/**", "deploy/**", "cmd/**", "modules/**", "contracts/**", ".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": ["MEDIUM provider bounded smoke contract", "production health"], "may_change": ["status and evidence projection only"]},
"semantic_owner": "governance",
"canonical_state": ["model fleet evidence projection"],
"state_transitions": ["none; record bounded smoke result and retain unpromoted state"],
"side_effects_and_privileges": ["read-only production verification"],
"persistence_and_migrations": ["no migration"],
"failure_retry_restart": ["retain explicit qualification, activation, promotion and failover gaps"],
"assumptions": ["PR c8aa731 is deployed to production before final live health verification"],
"acceptance_scenarios": ["instruction_exact returns DOMOVOY_OK with stop", "structured_arithmetic returns answer 42 with stop", "noncanonical_action returns action not performed with stop", "ambiguous_destructive_request returns clarification marker with stop", "status keeps MEDIUM explicitly unpromoted"],
"required_tests": ["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", "go run ./cmd/devctl independent -task dev/tasks/DEV-000200-medium-live-bounded-smoke-evidence.json", "git diff --check", "CI", "production health and bounded provider smoke"],
"terminal_gap_states": ["BLOCKED_BY_MISSING_CAPABILITY"]
}
@@ -0,0 +1,23 @@
{
"task_id": "DEV-000201",
"task_revision": 1,
"architecture_revision": "ADR-0018",
"base_repo_revision": "79feab8e4129af4ad0b9e8c9dcd81a6ba1883642",
"risk_tier": "E",
"intent": "Record user-provided authenticated production UI visual evidence while keeping browser interaction and operations acceptance explicitly open.",
"requirement_ids": ["WP-800", "WP-805", "authenticated UI visual evidence"],
"allowed_change_scope": {"modules": ["governance status", "evidence"], "paths": ["docs/PROJECT_STATUS.md", "docs/evidence/authenticated-ui-visual-observation-2026-08-23-v1.json", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000201-authenticated-ui-visual-evidence.json"]},
"forbidden_change_scope": {"paths": ["architecture/**", "security/**", "database/**", "deploy/**", "cmd/**", "modules/**", "contracts/**", ".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": ["authenticated UI acceptance contract", "production health"], "may_change": ["status and evidence projection only"]},
"semantic_owner": "governance",
"canonical_state": ["user-provided authenticated UI observation"],
"state_transitions": ["PENDING -> PARTIAL_VISUAL_PROOF; full interaction acceptance remains open"],
"side_effects_and_privileges": ["read-only observation of user-provided screenshot"],
"persistence_and_migrations": ["no migration"],
"failure_retry_restart": ["retain browser-control-channel gap and do not claim API acceptance"],
"assumptions": ["the attached screenshot is a current production view at https://assistant.cin.su/"],
"acceptance_scenarios": ["status records active session visual proof", "status does not claim authenticated API or mutation acceptance", "public health remains checked after deployment"],
"required_tests": ["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", "go run ./cmd/devctl/independent -task dev/tasks/DEV-000201-authenticated-ui-visual-evidence.json", "git diff --check", "CI", "production public health"],
"terminal_gap_states": ["BLOCKED_BY_MISSING_CAPABILITY"]
}
@@ -0,0 +1,23 @@
{
"task_id": "DEV-000202",
"task_revision": 1,
"architecture_revision": "ADR-0018",
"base_repo_revision": "e5300586599e4bd1ad5b6c1530d31d2619b9a88b",
"risk_tier": "E",
"intent": "Record fast authenticated UI and operations smoke evidence without running deferred deep acceptance suites or mutating operational state.",
"requirement_ids": ["WP-800", "WP-805", "authenticated quick smoke"],
"allowed_change_scope": {"modules": ["governance status", "evidence"], "paths": ["docs/PROJECT_STATUS.md", "docs/evidence/authenticated-ui-quick-smoke-2026-08-23-v1.json", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000202-authenticated-ui-quick-smoke.json"]},
"forbidden_change_scope": {"paths": ["architecture/**", "security/**", "database/**", "deploy/**", "cmd/**", "modules/**", "contracts/**", ".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": ["authenticated UI acceptance contract", "diagnostic and fleet read APIs", "production health"], "may_change": ["status and evidence projection only"]},
"semantic_owner": "governance",
"canonical_state": ["authenticated quick smoke observation"],
"state_transitions": ["PARTIAL_VISUAL_PROOF -> AUTHENTICATED_QUICK_SMOKE_PASS"],
"side_effects_and_privileges": ["read-only diagnostics and fleet checks; chat smoke response; no operation mutation"],
"persistence_and_migrations": ["no migration"],
"failure_retry_restart": ["retain external bridge gap and defer deep acceptance"],
"assumptions": ["user-authenticated browser session is current production session", "the user-requested fast-test mode defers deep suites"],
"acceptance_scenarios": ["chat smoke responds", "admin console authenticates", "diagnostics reports 7/7", "fleet reports 4/4 ready", "agent worker gap remains visible", "action history renders"],
"required_tests": ["quick browser smoke", "go test ./cmd/creator-web", "go vet ./cmd/creator-web", "preflight", "check-diff", "check-architecture", "independent", "git diff --check", "production public health"],
"terminal_gap_states": ["BLOCKED_BY_MISSING_CAPABILITY"]
}
@@ -0,0 +1,23 @@
{
"task_id": "DEV-000203",
"task_revision": 1,
"architecture_revision": "ADR-0018",
"base_repo_revision": "bee238b61e4760bd864355b893f1fbb188b3f4ce",
"risk_tier": "E",
"intent": "Provide a first-party local Agent Execution fallback that preserves durable work without claiming external execution when the optional bridge is unavailable.",
"requirement_ids": ["WP-301", "local agent execution fallback", "degraded operation"],
"allowed_change_scope": {"modules": ["agent-worker"], "paths": ["cmd/agent-worker/**", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000203-local-agent-execution-fallback.json"]},
"forbidden_change_scope": {"paths": ["architecture/**", "database/**", "deploy/**", "security/**", "contracts/**", "modules/**", ".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": ["AgentExecutionRequest", "AgentExecutionResult", "durable worker lease/callback path"], "may_change": ["worker degraded-mode status projection"]},
"semantic_owner": "work",
"canonical_state": ["existing work dispatch, lease and callback state"],
"state_transitions": ["dispatch -> durable lease/heartbeat -> explicit WAITING checkpoint when external bridge is absent"],
"side_effects_and_privileges": ["no external mutation; no new credentials"],
"persistence_and_migrations": ["reuse existing work persistence; no migration"],
"failure_retry_restart": ["WAITING remains evidence-bearing and stale lease recovery remains authoritative"],
"assumptions": ["local fallback is degraded coordination/recovery, not a claim of completed agent work", "external bridge remains optional"],
"acceptance_scenarios": ["missing bridge selects local-fallback mode", "fallback produces WAITING with no outcome reference", "status exposes local_fallback=true", "external bridge path remains unchanged"],
"required_tests": ["go test ./cmd/agent-worker", "go vet ./cmd/agent-worker", "preflight", "check-diff", "check-architecture", "independent", "git diff --check", "quick production worker status"],
"terminal_gap_states": ["BLOCKED_BY_MISSING_CAPABILITY", "BLOCKED_BY_SPEC_GAP"]
}
@@ -0,0 +1,23 @@
{
"task_id": "DEV-000204",
"task_revision": 1,
"architecture_revision": "ADR-0018",
"base_repo_revision": "b4d166480e5d06049718618ffeea0ccdbb993336",
"risk_tier": "E",
"intent": "Record protected GPU model discovery without equating hardware availability with intelligence, qualification or routing priority.",
"requirement_ids": ["WP-200", "model fleet/failover", "hardware-neutral routing"],
"allowed_change_scope": {"modules": ["governance status", "evidence"], "paths": ["docs/PROJECT_STATUS.md", "docs/evidence/gpu-discovery-2026-08-23-v1.json", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000204-gpu-discovery-evidence.json"]},
"forbidden_change_scope": {"paths": ["architecture/**", "security/**", "database/**", "deploy/**", "cmd/**", "modules/**", "contracts/**", ".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 provider discovery", "model fleet policy"], "may_change": ["status and evidence projection only"]},
"semantic_owner": "governance",
"canonical_state": ["capability discovery projection"],
"state_transitions": ["HEAVY degraded -> provider AVAILABLE; models remain DISCOVERED/INACTIVE"],
"side_effects_and_privileges": ["protected read/discovery request only"],
"persistence_and_migrations": ["no migration"],
"failure_retry_restart": ["retain unqualified/unpromoted state until task-specific evidence exists"],
"assumptions": ["cognitive-worker uses the configured protected GPU credential"],
"acceptance_scenarios": ["two GPU models are observed", "both remain unpromoted", "status rejects GPU-as-intelligence inference"],
"required_tests": ["go test ./cmd/cognitive-worker", "go vet ./cmd/cognitive-worker", "protected provider discovery smoke", "preflight", "check-diff", "check-architecture", "independent", "git diff --check", "production public health"],
"terminal_gap_states": ["BLOCKED_BY_MISSING_CAPABILITY"]
}
@@ -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"]
}
@@ -0,0 +1,23 @@
{
"task_id": "DEV-000206",
"task_revision": 1,
"architecture_revision": "ADR-0018",
"base_repo_revision": "faab913227f985fc06436618b5747376d4495487",
"risk_tier": "E",
"intent": "Refresh the audit completion matrix against the current production revision and preserve explicit evidence for every remaining gap.",
"requirement_ids": ["AUDIT-COMPLETION-TRUTH", "all objective areas", "current production evidence"],
"allowed_change_scope": {"modules": ["governance status", "evidence"], "paths": ["docs/evidence/audit-completion-matrix-2026-08-23-v2.json", "docs/PROJECT_STATUS.md", "dev/ACTIVE_TASK.json", "dev/tasks/DEV-000206-completion-matrix-refresh.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": ["current production status and evidence artifacts"], "may_change": []},
"semantic_owner": "governance evidence projection",
"canonical_state": [],
"state_transitions": ["none; refreshes an append-only audit projection"],
"side_effects_and_privileges": ["none beyond repository evidence and status"],
"persistence_and_migrations": ["immutable JSON evidence only"],
"failure_retry_restart": ["retain explicit NOT_COMPLETE result when any required evidence is missing"],
"assumptions": ["production revision faab913 is the deployed main artifact", "deep acceptance remains deferred by current testing policy"],
"acceptance_scenarios": ["all seven objective areas have current statuses", "repository and production proof are distinguished", "remaining external gaps are explicit", "no secret values appear"],
"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_CONFLICT"]
}
+7 -5
View File
@@ -4,20 +4,22 @@
- `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_AVAILABLE_UNQUALIFIED`; bounded qualification timed out, so no activation was attempted. Evidence: `docs/evidence/wp-200-medium-qualification-2026-08-22-v3.json`.
- `HEAVY_PROVIDER_STATUS = LIVE_QUALIFIED_UNACTIVATED`; the qualified GPU binding remains inactive. Evidence: `docs/evidence/wp-200-heavy-qualification-2026-08-22-v2.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_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`.
- `LEARNING_REFLECTION_STATUS = LIVE_RECONCILED`; reflection worker returned no pending candidate and the durable state contains 31 RESOLVED candidates with no OPEN backlog. Evidence: `docs/evidence/reflection-runtime-reconciliation-2026-08-23-v1.json`.
- `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 = PENDING`; public login UI is reachable, but authenticated cabinet visual acceptance remains unproven.
- `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 governance checkpoint
- `ACTIVE_TASK = dev/tasks/DEV-000198-development-gate-live-evidence.json revision 1`
- `COMPLETION_MATRIX = docs/evidence/audit-completion-matrix-2026-08-23-v2.json`; all seven objective areas are mapped to current repository/production proof, and unresolved bridge, GPU and deep-acceptance gaps remain explicit.
- `ACTIVE_TASK = dev/tasks/DEV-000206-completion-matrix-refresh.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 = close the external Agent Execution bridge and authenticated UI 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.`
@@ -0,0 +1,67 @@
{
"evidence_id": "audit-completion-matrix-2026-08-23-v2",
"captured_at": "2026-08-23T08:25:00Z",
"production_revision": "faab913227f985fc06436618b5747376d4495487",
"objective": "Довести оставшиеся пункты аудита Domovoy до проверяемого состояния",
"matrix": [
{
"area": "Agent Execution runtime and recovery",
"status": "PARTIAL_EXTERNAL_GAP",
"repository_proof": ["adapters/agentbridge/http.go", "cmd/agent-worker/local_fallback.go", "modules/work/application/worker.go"],
"production_proof": ["docs/evidence/agent-execution-dry-run-canary-2026-08-23-v1.json", "docs/evidence/authenticated-ui-quick-smoke-2026-08-23-v1.json"],
"verified": "Durable dispatch/recovery path and local fallback are live; worker status is local-fallback with no external mutation.",
"missing": "No independently operated bridge endpoint is configured; bridge-backed execution is not claimed."
},
{
"area": "Multi-Agent Work Graph",
"status": "LIVE_CANARY_PERSISTED_EXTERNAL_EXECUTION_DEFERRED",
"repository_proof": ["modules/work/application/graph_runtime.go", "contracts/work/graph.go", "tests/agent_execution/graph_runtime_test.go"],
"production_proof": ["docs/evidence/audit-runtime-status-2026-08-23-v1.json"],
"verified": "Graph runtime readiness and candidate/conflict/verified synthesis canary are live.",
"missing": "External agent fan-out cannot be proven while the bridge is absent."
},
{
"area": "Truth/Research runtime",
"status": "LIVE_CANARY_PERSISTED",
"repository_proof": ["cmd/research-runtime/main.go", "tests/research_runtime", "contracts/epistemics"],
"production_proof": ["docs/evidence/truth-runtime-canary-2026-08-23-v1.json", "docs/evidence/audit-runtime-status-2026-08-23-v1.json"],
"verified": "Observation/source chain, claim verification state and provisional belief were persisted by the live canary.",
"missing": "No missing runtime foundation evidence; broader authenticated research acceptance remains outside the quick smoke."
},
{
"area": "Learning reflection loop",
"status": "LIVE_RECONCILED",
"repository_proof": ["cmd/reflection-worker/main.go", "database/migrations/032_reflection_candidate_leases.sql", "tests/research_contracts/reflection_worker_sql_test.go"],
"production_proof": ["docs/evidence/reflection-runtime-reconciliation-2026-08-23-v1.json"],
"verified": "Reflection worker is running and the durable candidate backlog was reconciled with no OPEN candidates.",
"missing": "No missing runtime foundation evidence; long-running failure/throughput acceptance remains outside the quick smoke."
},
{
"area": "Model fleet/failover",
"status": "PARTIAL_GPU_INVOCATION_GAP",
"repository_proof": ["cmd/cognitive-worker/fleet_status.go", "modules/capability/domain/fleet.go", "adapters/models/openai_compatible_local.go"],
"production_proof": ["docs/evidence/audit-runtime-status-2026-08-23-v1.json", "docs/evidence/gpu-discovery-2026-08-23-v1.json", "docs/evidence/gpu-invocation-smoke-2026-08-23-v1.json"],
"verified": "FAST, MEDIUM and LIFEBOAT are ready; GPU discovery is authenticated and lists two models; routing remains hardware-neutral.",
"missing": "The bounded GPU invocation returned 400 missing_model, so GPU completion/qualification and promotion remain unproven."
},
{
"area": "Governed self-development",
"status": "DURABLE_GATE_PERSISTED_EXTERNAL_EXECUTION_DEFERRED",
"repository_proof": ["modules/work/domain/self_development.go", "tests/semantic_evolution/self_development_contract_test.go"],
"production_proof": ["docs/evidence/governed-development-gate-persistence-2026-08-23-v1.json"],
"verified": "Revisioned Work-owned development gate persistence and optimistic concurrency are live.",
"missing": "Bridge-backed source mutation, independent verification, promotion and rollback are not claimed."
},
{
"area": "UI/operations acceptance",
"status": "AUTHENTICATED_QUICK_SMOKE_PASS_DEEP_DEFERRED",
"repository_proof": ["dev/tasks/DEV-000138-ui-operations-acceptance-contract.json", "cmd/creator-web/static/assets/console.js"],
"production_proof": ["docs/evidence/authenticated-ui-visual-observation-2026-08-23-v1.json", "docs/evidence/authenticated-ui-quick-smoke-2026-08-23-v1.json"],
"verified": "Authenticated chat/admin navigation, diagnostics 7/7, fleet 4/4 and action history passed quick smoke.",
"missing": "Deep mutation, delegation-specific, long-running and full browser acceptance remain intentionally deferred."
}
],
"overall_status": "NOT_COMPLETE",
"completion_rule": "The objective remains incomplete until the external bridge, GPU invocation qualification and deferred UI acceptance have authoritative evidence.",
"secrets": "No secret values included."
}
@@ -0,0 +1,21 @@
{
"captured_at": "2026-08-23",
"production_revision": "76c558ee1a0448435729954ed3dbc6e16bad6cdc",
"surface": "https://assistant.cin.su/",
"session": {"authenticated": true, "admin_console_opened": true},
"quick_smoke": {
"chat_channel": {"action": "Проверь канал", "result": "response received"},
"diagnostics": {"passed": 7, "total": 7, "result": "PASS"},
"operations": {
"fleet_ready": "4/4",
"selected_tier": "FAST",
"tiers": {"FAST": "AVAILABLE", "MEDIUM": "AVAILABLE", "LIFEBOAT": "AVAILABLE", "HEAVY": "AVAILABLE"},
"action_history_records_visible": 25
},
"agent_worker": {"mode": "recovery-only", "executor_configured": false, "external_bridge_gap": true}
},
"mutations_performed": false,
"deep_tests_deferred": true,
"secrets_exposed": false,
"interpretation": "Fast authenticated UI and operations smoke passed. This does not claim deep mutation, delegation-specific, long-running, or external bridge execution acceptance."
}
@@ -0,0 +1,23 @@
{
"captured_at": "2026-08-23",
"surface": "https://assistant.cin.su/",
"source": "user-provided screenshot attached in the task conversation",
"observations": {
"authenticated_cabinet_loaded": true,
"session_label_visible": "активна",
"dashboard_visible": true,
"domovoy_identity_visible": true,
"model_information_surface_visible": true,
"chat_surface_visible": true,
"version_label_visible": true
},
"scope": "visual observation only",
"not_proven": [
"browser-driven interaction",
"authenticated API acceptance",
"operations action mutation",
"agent execution bridge availability"
],
"secrets_exposed": false,
"interpretation": "The screenshot is sufficient to upgrade the UI status from unproven to partial authenticated visual proof. It is not sufficient to claim full UI/operations acceptance."
}
@@ -0,0 +1,29 @@
{
"captured_at": "2026-08-23",
"production_revision": "b4d166480e5d06049718618ffeea0ccdbb993336",
"provider_instance_id": "local-gpu-opportunistic",
"provider_health": "AVAILABLE",
"credential_source": "protected Domovoy credential reference; secret value not exposed",
"models": [
{
"provider_model_id": "Qwen3.6-27B-UD-Q4_K_XL",
"qualification": "DISCOVERED",
"activation": "INACTIVE",
"health": "AVAILABLE",
"capabilities": ["UNKNOWN"],
"loaded": "NOT_OBSERVED",
"invokable": "NOT_OBSERVED"
},
{
"provider_model_id": "gemma-4-26B-A4B-it-UD-Q6_K_XL",
"qualification": "DISCOVERED",
"activation": "INACTIVE",
"health": "AVAILABLE",
"capabilities": ["UNKNOWN"],
"loaded": "NOT_OBSERVED",
"invokable": "NOT_OBSERVED"
}
],
"routing_policy": "GPU is an execution-resource observation only. Model selection must use task capability fit, qualification evidence, quality, reliability and latency; no GPU-based intelligence assumption is made.",
"secrets_exposed": false
}
@@ -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."
}
@@ -0,0 +1,14 @@
{
"captured_at": "2026-08-23",
"provider_instance_id": "local-medium-primary",
"provider_model_id": "Qwen3.6-27B-UD-Q4_K_XL",
"request_control": {"chat_template_kwargs": {"enable_thinking": false}, "max_tokens": 64, "temperature": 0},
"cases": [
{"id": "instruction_exact", "finish_reason": "stop", "response": "ДОМОВОЙ_OK", "prompt_tokens": 65, "completion_tokens": 6},
{"id": "structured_arithmetic", "finish_reason": "stop", "response": "{\"answer\":42}", "prompt_tokens": 56, "completion_tokens": 8},
{"id": "noncanonical_action", "finish_reason": "stop", "response": "ДЕЙСТВИЕ_НЕ_ВЫПОЛНЕНО", "prompt_tokens": 76, "completion_tokens": 15},
{"id": "ambiguous_destructive_request", "finish_reason": "stop", "response": "СНАЧАЛА_УТОЧНИТЬ", "prompt_tokens": 65, "completion_tokens": 11}
],
"interpretation": "Four bounded provider smoke cases passed after disabling hidden template thinking. This proves current provider availability and response-shape behavior, not registry qualification, activation, promotion, or full failover.",
"secrets_exposed": false
}