# Runtime Architecture Drift Report

Status: ADVISORY
Generated: 2026-05-19T23:46:26.143Z
Findings: 72
High-confidence: 0
Advisory: 72

## Categories

- duplicate_state_machine: 1
- obsolete_reconnect_recovery_path: 1
- obsolete_watcher_primary: 3
- socket_payload_as_truth: 0
- direct_dom_data_injection: 8
- backend_transport_domain_projection_mixing: 23
- old_shell_owning_behavior: 24
- obsolete_state_or_schema: 12

## Findings

- duplicate-state-machine-001 [advisory] duplicate_state_machine apps/frontend/src/app/core/connection/connection-recovery-state-model.spec.ts, apps/frontend/src/app/core/connection/connection-recovery-state-model.ts
  - Status: advisory
  - Evidence: 2 state-model-like files found
  - Recommendation: Confirm these are tests/canonical model companions rather than parallel state-machine authorities.
  - Carry Forward: cfd-0030
- component-recovery-001 [advisory] obsolete_reconnect_recovery_path apps/frontend/src/app/layout/components/app-shell.component.ts:28
  - Status: carried_forward
  - Evidence: recovery
  - Recommendation: Keep reconnect/recovery classification inside the canonical connection state model or facade, not page-local component logic.
  - Carry Forward: cfd-0030
- watcher-primary-001 [advisory] obsolete_watcher_primary ai/runtime/src/modules/testing/runtime-action-panel-browser-smoke.ts:1815
  - Status: carried_forward
  - Evidence: manual reload
  - Recommendation: Runtime State Journal and GraphQL refetch should remain canonical; watcher/manual reload evidence is not sufficient proof.
  - Carry Forward: cfd-0014
- watcher-primary-002 [advisory] obsolete_watcher_primary ai/runtime/src/modules/testing/testing-channel-readiness.ts:904
  - Status: carried_forward
  - Evidence: manual reload
  - Recommendation: Runtime State Journal and GraphQL refetch should remain canonical; watcher/manual reload evidence is not sufficient proof.
  - Carry Forward: cfd-0014
- watcher-primary-003 [advisory] obsolete_watcher_primary ai/runtime/src/modules/testing/testing-channel-readiness.ts:904
  - Status: carried_forward
  - Evidence: watcher-primary
  - Recommendation: Runtime State Journal and GraphQL refetch should remain canonical; watcher/manual reload evidence is not sufficient proof.
  - Carry Forward: cfd-0014
- direct-dom-001 [advisory] direct_dom_data_injection apps/frontend/src/app/features/remote-dev-console/components/remote-dev-console-panel.component.ts:106
  - Status: carried_forward
  - Evidence: nativeElement
  - Recommendation: Prefer Angular templates, bindings, or view-model projection over direct DOM mutation.
  - Carry Forward: cfd-0027
- direct-dom-002 [advisory] direct_dom_data_injection apps/frontend/src/app/features/remote-dev-console/components/remote-dev-console-panel.component.ts:134
  - Status: carried_forward
  - Evidence: nativeElement
  - Recommendation: Prefer Angular templates, bindings, or view-model projection over direct DOM mutation.
  - Carry Forward: cfd-0027
- direct-dom-003 [advisory] direct_dom_data_injection apps/frontend/src/app/features/remote-dev-console/components/remote-dev-console-panel.component.ts:146
  - Status: carried_forward
  - Evidence: nativeElement
  - Recommendation: Prefer Angular templates, bindings, or view-model projection over direct DOM mutation.
  - Carry Forward: cfd-0027
- direct-dom-004 [advisory] direct_dom_data_injection apps/frontend/src/app/features/remote-dev-console/components/remote-dev-console-panel.component.ts:163
  - Status: carried_forward
  - Evidence: nativeElement
  - Recommendation: Prefer Angular templates, bindings, or view-model projection over direct DOM mutation.
  - Carry Forward: cfd-0027
- direct-dom-005 [advisory] direct_dom_data_injection apps/frontend/src/app/features/remote-dev-console/components/remote-dev-console-panel.component.ts:179
  - Status: carried_forward
  - Evidence: nativeElement
  - Recommendation: Prefer Angular templates, bindings, or view-model projection over direct DOM mutation.
  - Carry Forward: cfd-0027
- direct-dom-006 [advisory] direct_dom_data_injection apps/frontend/src/app/layout/components/app-shell.component.ts:176
  - Status: carried_forward
  - Evidence: nativeElement
  - Recommendation: Prefer Angular templates, bindings, or view-model projection over direct DOM mutation.
  - Carry Forward: cfd-0027
- direct-dom-007 [advisory] direct_dom_data_injection apps/frontend/src/app/layout/components/app-shell.component.ts:177
  - Status: carried_forward
  - Evidence: nativeElement
  - Recommendation: Prefer Angular templates, bindings, or view-model projection over direct DOM mutation.
  - Carry Forward: cfd-0027
- direct-dom-008 [advisory] direct_dom_data_injection apps/frontend/src/app/layout/components/app-shell.component.ts:179
  - Status: carried_forward
  - Evidence: nativeElement
  - Recommendation: Prefer Angular templates, bindings, or view-model projection over direct DOM mutation.
  - Carry Forward: cfd-0027
- backend-boundary-001 [advisory] backend_transport_domain_projection_mixing apps/backend/src/admin-runtime-health/services/admin-runtime-health.service.ts:5
  - Status: carried_forward
  - Evidence: readFileSync
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-002 [advisory] backend_transport_domain_projection_mixing apps/backend/src/admin-runtime-health/services/admin-runtime-health.service.ts:8
  - Status: carried_forward
  - Evidence: writeFileSync
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-003 [advisory] backend_transport_domain_projection_mixing apps/backend/src/admin-runtime-health/services/admin-runtime-health.service.ts:838
  - Status: carried_forward
  - Evidence: readFileSync
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-004 [advisory] backend_transport_domain_projection_mixing apps/backend/src/admin-runtime-health/services/admin-runtime-health.service.ts:1171
  - Status: carried_forward
  - Evidence: readFileSync
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-005 [advisory] backend_transport_domain_projection_mixing apps/backend/src/admin-runtime-health/services/admin-runtime-health.service.ts:2156
  - Status: carried_forward
  - Evidence: process.env
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-006 [advisory] backend_transport_domain_projection_mixing apps/backend/src/admin-runtime-health/services/admin-runtime-health.service.ts:2159
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-007 [advisory] backend_transport_domain_projection_mixing apps/backend/src/admin-runtime-health/services/admin-runtime-health.service.ts:2166
  - Status: carried_forward
  - Evidence: process.env
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-008 [advisory] backend_transport_domain_projection_mixing apps/backend/src/admin-runtime-health/services/admin-runtime-health.service.ts:2167
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-009 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-file-invalidation.service.ts:18
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-010 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-file-invalidation.service.ts:30
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-011 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-file-invalidation.service.ts:42
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-012 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-file-invalidation.service.ts:72
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-013 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-file-invalidation.service.ts:82
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-014 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-file-invalidation.service.ts:92
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-015 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-file-invalidation.service.ts:102
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-016 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-file-invalidation.service.ts:108
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-017 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-journal-consumer.service.ts:41
  - Status: carried_forward
  - Evidence: process.env
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-018 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-journal-consumer.service.ts:41
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-019 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-journal-consumer.service.ts:44
  - Status: carried_forward
  - Evidence: process.env
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-020 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-journal-consumer.service.ts:51
  - Status: carried_forward
  - Evidence: process.env
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-021 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-journal-consumer.service.ts:57
  - Status: carried_forward
  - Evidence: process.env
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-022 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-journal-consumer.service.ts:58
  - Status: carried_forward
  - Evidence: tmp/
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- backend-boundary-023 [advisory] backend_transport_domain_projection_mixing apps/backend/src/runtime-health-socket/runtime-health-socket-journal-consumer.service.ts:78
  - Status: carried_forward
  - Evidence: process.env
  - Recommendation: Keep transport, IO, domain state, and GraphQL projection separated behind typed adapters.
  - Carry Forward: cfd-0028
- shell-owner-001 [advisory] old_shell_owning_behavior ai/commands/activate-chunk.sh:67
  - Status: carried_forward
  - Evidence: mv
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-002 [advisory] old_shell_owning_behavior ai/commands/activate-chunk.sh:106
  - Status: carried_forward
  - Evidence: mv
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-003 [advisory] old_shell_owning_behavior ai/commands/approve-requirements.sh:126
  - Status: carried_forward
  - Evidence: mv
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-004 [advisory] old_shell_owning_behavior ai/commands/approve-requirements.sh:127
  - Status: carried_forward
  - Evidence: mv
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-005 [advisory] old_shell_owning_behavior ai/commands/complete-chunk.sh:125
  - Status: carried_forward
  - Evidence: mv
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-006 [advisory] old_shell_owning_behavior ai/commands/complete-chunk.sh:126
  - Status: carried_forward
  - Evidence: mv
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-007 [advisory] old_shell_owning_behavior ai/commands/complete-requirements.sh:83
  - Status: carried_forward
  - Evidence: mv
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-008 [advisory] old_shell_owning_behavior ai/commands/complete-requirements.sh:84
  - Status: carried_forward
  - Evidence: mv
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-009 [advisory] old_shell_owning_behavior ai/commands/platform-escalation-preflight.sh:22
  - Status: carried_forward
  - Evidence: yarn
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-010 [advisory] old_shell_owning_behavior ai/commands/runtime-action-panel-browser-smoke.mjs:141
  - Status: carried_forward
  - Evidence: kill
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-011 [advisory] old_shell_owning_behavior ai/commands/runtime-action-panel-browser-smoke.mjs:144
  - Status: carried_forward
  - Evidence: kill
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-012 [advisory] old_shell_owning_behavior ai/commands/runtime-action-panel-browser-smoke.mjs:149
  - Status: carried_forward
  - Evidence: kill
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-013 [advisory] old_shell_owning_behavior ai/commands/runtime-action-panel-browser-smoke.mjs:152
  - Status: carried_forward
  - Evidence: kill
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-014 [advisory] old_shell_owning_behavior ai/commands/validate.sh:25
  - Status: carried_forward
  - Evidence: yarn
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-015 [advisory] old_shell_owning_behavior ai/commands/validate.sh:26
  - Status: carried_forward
  - Evidence: yarn
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-016 [advisory] old_shell_owning_behavior ai/commands/validate.sh:27
  - Status: carried_forward
  - Evidence: yarn
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-017 [advisory] old_shell_owning_behavior ai/commands/validate.sh:28
  - Status: carried_forward
  - Evidence: yarn
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-018 [advisory] old_shell_owning_behavior ai/commands/validate.sh:29
  - Status: carried_forward
  - Evidence: yarn
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-019 [advisory] old_shell_owning_behavior ai/commands/validate.sh:30
  - Status: carried_forward
  - Evidence: yarn
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-020 [advisory] old_shell_owning_behavior ai/commands/workflow-summary.sh:205
  - Status: carried_forward
  - Evidence: git commit
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-021 [advisory] old_shell_owning_behavior ai/commands/workflow-summary.sh:213
  - Status: carried_forward
  - Evidence: git commit
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-022 [advisory] old_shell_owning_behavior ai/commands/workflow-summary.sh:246
  - Status: carried_forward
  - Evidence: git add
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-023 [advisory] old_shell_owning_behavior ai/commands/workflow-summary.sh:250
  - Status: carried_forward
  - Evidence: git add
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- shell-owner-024 [advisory] old_shell_owning_behavior ai/commands/workflow-summary.sh:391
  - Status: carried_forward
  - Evidence: git add
  - Recommendation: Shell commands should remain compatibility facades or emergency/bootstrap paths, not canonical Runtime behavior owners.
  - Carry Forward: cfd-0005
- obsolete-state-001 [advisory] obsolete_state_or_schema ai/runtime/src/modules/audit/action-timeline.ts:430
  - Status: carried_forward
  - Evidence: legacy
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034
- obsolete-state-002 [advisory] obsolete_state_or_schema ai/runtime/src/modules/audit/action-timeline.ts:431
  - Status: carried_forward
  - Evidence: legacy
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034
- obsolete-state-003 [advisory] obsolete_state_or_schema ai/runtime/src/modules/audit/action-timeline.ts:432
  - Status: carried_forward
  - Evidence: legacy
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034
- obsolete-state-004 [advisory] obsolete_state_or_schema ai/runtime/src/modules/audit/action-timeline.ts:433
  - Status: carried_forward
  - Evidence: legacy
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034
- obsolete-state-005 [advisory] obsolete_state_or_schema ai/runtime/src/modules/audit/audit-state.ts:129
  - Status: carried_forward
  - Evidence: legacy
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034
- obsolete-state-006 [advisory] obsolete_state_or_schema ai/runtime/src/modules/harness/runtime-path-harness.ts:314
  - Status: carried_forward
  - Evidence: legacy
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034
- obsolete-state-007 [advisory] obsolete_state_or_schema ai/runtime/src/modules/harness/runtime-path-harness.ts:324
  - Status: carried_forward
  - Evidence: legacy
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034
- obsolete-state-008 [advisory] obsolete_state_or_schema ai/runtime/src/modules/harness/runtime-path-harness.ts:337
  - Status: carried_forward
  - Evidence: legacy
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034
- obsolete-state-009 [advisory] obsolete_state_or_schema ai/runtime/src/modules/harness/runtime-path-harness.ts:338
  - Status: carried_forward
  - Evidence: legacy
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034
- obsolete-state-010 [advisory] obsolete_state_or_schema ai/runtime/src/modules/notifications/rendering.ts:66
  - Status: carried_forward
  - Evidence: deprecated
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034
- obsolete-state-011 [advisory] obsolete_state_or_schema ai/runtime/src/modules/notifications/rendering.ts:119
  - Status: carried_forward
  - Evidence: deprecated
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034
- obsolete-state-012 [advisory] obsolete_state_or_schema ai/runtime/src/modules/state/state-engine.ts:637
  - Status: carried_forward
  - Evidence: Legacy
  - Recommendation: Confirm compatibility states remain intentional and tracked by carry-forward debt.
  - Carry Forward: cfd-0034

## Policy

- Socket.IO remains invalidation-only.
- Runtime/GraphQL remains canonical UI truth.
- Shell paths remain facade/bootstrap/emergency unless explicitly classified.

