feat(telemetry): observe V1 compatibility paths safely

This commit is contained in:
m
2026-08-30 10:25:35 +03:00
parent a0b742b1d5
commit 3efcbbded8
7 changed files with 198 additions and 1 deletions
+1 -1
View File
@@ -1 +1 @@
{"task_file":"dev/tasks/GEN2-030-final-gen2-acceptance-documentation-baseline-and-next-evolution-queue.json","task_id":"GEN2-030","task_revision":2}
{"task_file":"dev/tasks/GEN2-COMPAT-OBS-001-production-compatibility-observation.json","task_id":"GEN2-COMPAT-OBS-001","task_revision":1}
@@ -0,0 +1,63 @@
{
"task_id": "GEN2-COMPAT-OBS-001",
"task_revision": 1,
"architecture_revision": "ARCH-GEN2-000",
"base_repo_revision": "gen2-integration",
"risk_tier": "E",
"intent": "Добавить bounded redacted production telemetry для оставшихся V1 compatibility paths без изменения их поведения, owners или canonical storage.",
"requirement_ids": ["REQ-GEN2-COMPAT-OBS-001-TELEMETRY", "REQ-GEN2-COMPAT-OBS-001-OBSERVATION", "REQ-GEN2-COMPAT-OBS-001-ROLLBACK"],
"allowed_change_scope": {
"modules": [],
"paths": [
"platform/telemetry/**",
"cmd/core-runtime/**",
"cmd/research-runtime/**",
"modules/interaction/domain/**",
"modules/capability/domain/**",
"adapters/postgres/**",
"docs/**",
"tests/**",
"dev/ACTIVE_TASK.json",
"dev/tasks/GEN2-COMPAT-OBS-001-production-compatibility-observation.json"
]
},
"forbidden_change_scope": {
"paths": ["security/**", "go.mod", "go.sum", "architecture/**", ".gitea/workflows/**", "deploy/**", "database/**", "adapters/models/**"]
},
"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": ["existing runtime logs and capability usage observation mechanisms"],
"may_change": ["telemetry event shape only; no semantic/domain contract change"]
},
"semantic_owner": "Migration/Governance; telemetry is an operational projection and never a canonical semantic owner.",
"canonical_state": ["no change", "V1 compatibility behavior and Gen2 canonical writers remain unchanged"],
"state_transitions": ["path invocation -> redacted telemetry event -> bounded aggregation/observation -> retirement classification"],
"side_effects_and_privileges": ["stdout/stderr telemetry only; no external mutation, secret access, or user content logging"],
"persistence_and_migrations": ["no schema or migration change; telemetry is emitted to existing process logs"],
"failure_retry_restart": ["telemetry failure must never change or block the compatibility path", "rollback is code revert to the pre-instrumentation commit"],
"assumptions": ["production Supervisor deployment is authorized by this stage", "observation window is bounded and redacted", "no credentials are read"],
"acceptance_scenarios": [
"COMPAT-OBS-001-SCN-01: each listed path has a typed redacted event shape",
"COMPAT-OBS-001-SCN-02: events include invocation, component, read/write, reason, Gen2 availability, fallback/primary, outcome and safe correlation",
"COMPAT-OBS-001-SCN-03: no event contains content, secrets, tokens or raw user identifiers",
"COMPAT-OBS-001-SCN-04: FAST tests prove instrumentation is non-blocking and path behavior is unchanged",
"COMPAT-OBS-001-SCN-05: deployed production smoke produces observable compatibility telemetry",
"COMPAT-OBS-001-EXIT: production observation can classify each path ACTIVE_REQUIRED, ACTIVE_FALLBACK, SHADOW_ONLY, UNUSED or UNKNOWN without claiming retirement from absence of evidence"
],
"required_tests": [
"FAST: targeted go test for changed runtime/domain/adapter packages",
"FAST: targeted go vet for changed packages",
"FAST governance: go run ./cmd/devctl preflight -active dev/ACTIVE_TASK.json",
"FAST scope: go run ./cmd/devctl check-diff -active dev/ACTIVE_TASK.json",
"FAST independent: go run ./cmd/devctl/independent",
"FAST whitespace: git diff --check gen2-integration --",
"production smoke: Supervisor candidate deployment and redacted log observation"
],
"terminal_gap_states": ["BLOCKED_BY_SPEC_GAP", "BLOCKED_BY_ARCHITECTURE_GAP", "BLOCKED_BY_MISSING_CAPABILITY", "BLOCKED_BY_CONFLICT", "REQUIRES_MIGRATION_DECISION"]
}