Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions docs/dependency-graph-findings.md
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,13 @@ lines in one flat directory whose _names_ carry a hierarchy the filesystem does
(14 723 lines), 16 `interaction-*`, 13 `record-*`, 5 `snapshot-*`. `daemon/` itself is another 103
flat files.

Since #3391 the zone has an enforced interior: R81 (`scripts/layering/daemon-layers.ts`) owns the
manifest partitioning every production daemon file into five layers — `daemon-core` <
`daemon-resources` < `daemon-execution` < `daemon-sessions` < `daemon-server` — and rejects any
upward static value or type edge between them (dynamic cross-layer edges are reported, not
rejected). The global spine rank stays 4 for all five, so this is the only direction claim inside
the zone; the manifest is the living claim, restated here at risk of drift.

Things that are **not** wrong, checked and ruled out:

- **No copy-paste.** Zero 7-line windows repeat across three or more daemon files.
Expand Down
17 changes: 16 additions & 1 deletion scripts/layering/check.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@
// brand casts inside those two modules, so a udid never runs outside the set that holds it.
// - Over REQUEST-BOUND RUNTIME EXECUTION: facts remain the only admission authority and daemon
// code cannot manufacture or repair a narrowed runtime proof (R66).
// - Over THE DAEMON'S INTERIOR: every production file under src/daemon/ is owned by exactly one
// layer of the manifest in scripts/layering/daemon-layers.ts, and no static edge reads up the
// daemon-local order core < resources < execution < sessions < server (R81). The global spine
// ranks all five layers at daemon-server's rank, so R5/R6/R80 are blind inside the zone.
// - Over CONTRACTS PRODUCTION SOURCE: contracts owns vocabulary only — host, process, and timer
// mechanics belong in capture-kit or an adapter (R18).
// R6, R9, and the R10 R7 counts are ratchets with no written-down reference: each is the same
Expand Down Expand Up @@ -130,6 +134,7 @@ import {
DAEMON_PLATFORM_RUNTIME_EDGES,
} from './daemon-platform-runtime-inventory.ts';
import { checkDaemonClientEntry } from './daemon-client-entry.ts';
import { checkDaemonLayers, readDaemonLayerManifest } from './daemon-layers.ts';
import { checkSessionAuthorityOverlay, handlerOwnedOverlay } from './session-authority-overlay.ts';
import {
listTrackedPlatformZoneFiles,
Expand Down Expand Up @@ -429,7 +434,10 @@ function report(
`${DAEMON_PLATFORM_RUNTIME_EDGES.length} daemon-to-root platform-runtime edges hold ` +
`their #2278 classification (R76); and the handler-owned SessionState/SessionStore ` +
`authority overlay holds at or under the merge-base (R75, ` +
`${handlerOwnedShapeFiles} shape / ${handlerOwnedAuthorityFiles} authority files).\n`,
`${handlerOwnedShapeFiles} shape / ${handlerOwnedAuthorityFiles} authority files); and ` +
`every production daemon file is owned by one layer with no upward static edges across ` +
`core < resources < execution < sessions < server (R81; dynamic cross-layer edges are ` +
`reported above when present).\n`,
);
return 0;
}
Expand Down Expand Up @@ -509,6 +517,7 @@ export const LAYERING_RULE_IDS = [
'daemon-platform-runtime-inventory',
'daemon-client-entry',
'session-authority-overlay',
'daemon-layers',
] as const;

export type LayeringRuleId = (typeof LAYERING_RULE_IDS)[number];
Expand Down Expand Up @@ -576,6 +585,12 @@ export const LAYERING_RULES: Readonly<Record<LayeringRuleId, LayeringRule>> = {
context.ratchets.sessionAuthority,
context.reference.sessionAuthority,
),
'daemon-layers': (context) =>
checkDaemonLayers(
context.sourceFiles.filter((file) => file.startsWith('src/daemon/')),
context.edges,
Comment thread
thymikee marked this conversation as resolved.
readDaemonLayerManifest(repoRoot),
),
};

export function main(): number {
Expand Down
298 changes: 298 additions & 0 deletions scripts/layering/daemon-layer-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,298 @@
{
"daemon-core": [
"src/daemon/apple-runner-options.ts",
"src/daemon/capture-disclosure.ts",
"src/daemon/config.ts",
"src/daemon/context.ts",
"src/daemon/daemon-command-registry.ts",
"src/daemon/daemon-policy.ts",
"src/daemon/daemon-request.ts",
"src/daemon/deferred-interaction-outcome.ts",
"src/daemon/device/device-ready.ts",
"src/daemon/device/device-selector-intent.ts",
"src/daemon/direct-ios-selector.ts",
"src/daemon/dispatch-context.ts",
"src/daemon/execution-plan.ts",
"src/daemon/fill-backend-result.ts",
"src/daemon/generic-leaf-execution.ts",
"src/daemon/gesture-runtime.ts",
"src/daemon/interaction-surface-signature.ts",
"src/daemon/interaction/internal/interaction-touch-direct-ios-eligibility.ts",
"src/daemon/interaction/internal/types.ts",
"src/daemon/interactor-resolution.ts",
"src/daemon/ios-app-session-hint.ts",
"src/daemon/lease-context.ts",
"src/daemon/managed-session-artifact-path.ts",
"src/daemon/platform-owner-lifecycle.ts",
"src/daemon/platform-resource-cleanup.ts",
"src/daemon/provider-device-admission.ts",
"src/daemon/recording-gesture-events.ts",
"src/daemon/recording-gestures.ts",
"src/daemon/recording-timing.ts",
"src/daemon/recording-values.ts",
"src/daemon/ref-frame-slot.ts",
"src/daemon/ref-frame.ts",
"src/daemon/request-dispatch-ledger.ts",
"src/daemon/request-runtime-binding.ts",
"src/daemon/runtime-admission.ts",
"src/daemon/runtime-operation-effects.ts",
"src/daemon/runtime-session.ts",
"src/daemon/selector-operation-binding.ts",
"src/daemon/selector-recording.ts",
"src/daemon/session-action-recorder.ts",
"src/daemon/session-artifact-paths.ts",
"src/daemon/session-capture-binding.ts",
"src/daemon/session-idle-tombstone.ts",
"src/daemon/session-recovery-hints.ts",
"src/daemon/session-replay-transaction.ts",
"src/daemon/session-runtime-admission.ts",
"src/daemon/session-script-active-publication.ts",
"src/daemon/session-script-publication-capability.ts",
"src/daemon/session-script-publication-state.ts",
"src/daemon/session-script-writer.ts",
"src/daemon/session-selector.ts",
"src/daemon/session-snapshot-freshness.ts",
"src/daemon/session-state.ts",
"src/daemon/session-store.ts",
"src/daemon/session-tenant-scope.ts",
"src/daemon/snapshot-capture.ts",
"src/daemon/snapshot-interactor-capture.ts",
"src/daemon/snapshot-runtime-binding.ts",
"src/daemon/snapshot-runtime-capture-input.ts",
"src/daemon/snapshot-session.ts",
"src/daemon/tenant-owned-entry.ts",
"src/daemon/touch-runtime.ts"
],
"daemon-resources": [
"src/daemon/app-log-admission-ledger.ts",
"src/daemon/app-log-files.ts",
"src/daemon/app-log-resource-recovery.ts",
"src/daemon/app-log-resource-store.ts",
"src/daemon/app-log-session-resource.ts",
"src/daemon/app-log-start-preflight.ts",
"src/daemon/app-log.ts",
"src/daemon/artifact-tracking.ts",
"src/daemon/device/device-claim-admission.ts",
"src/daemon/device/device-claim-conflict.ts",
"src/daemon/device/device-claim-inspection.ts",
"src/daemon/device/device-claim-paths.ts",
"src/daemon/device/device-claim-reboot.ts",
"src/daemon/device/device-claim-record.ts",
"src/daemon/device/device-claim-rule.ts",
"src/daemon/device/device-claim-settlement.ts",
"src/daemon/device/device-claim-store.ts",
"src/daemon/device/device-claims.ts",
"src/daemon/device/device-mutation-drain.ts",
"src/daemon/human-control-contract.ts",
"src/daemon/lease-in-flight-work.ts",
"src/daemon/lease-registry-scope.ts",
"src/daemon/lease-registry.ts",
"src/daemon/macos-app-lease.ts",
"src/daemon/provider-session-ownership.ts",
"src/daemon/session-device-resolution.ts"
],
"daemon-execution": [
"src/daemon/android-foreground-surface.ts",
"src/daemon/android-snapshot-timeout-evidence.ts",
"src/daemon/android-system-dialog.ts",
"src/daemon/app-event-runtime.ts",
"src/daemon/app-events.ts",
"src/daemon/apps-runtime.ts",
"src/daemon/back-runtime.ts",
"src/daemon/focus-runtime.ts",
"src/daemon/fold-runtime.ts",
"src/daemon/generic-runtime-execution.ts",
"src/daemon/generic-settle.ts",
"src/daemon/handlers/react-native.ts",
"src/daemon/handlers/session-clipboard.ts",
"src/daemon/handlers/session-selector-dispatch.ts",
"src/daemon/handlers/snapshot-alert.ts",
"src/daemon/handlers/snapshot-settings.ts",
"src/daemon/interaction/index.ts",
"src/daemon/interaction/internal/find-match-ranking.ts",
"src/daemon/interaction/internal/find-match-resolution.ts",
"src/daemon/interaction/internal/find-target-capture.ts",
"src/daemon/interaction/internal/find.ts",
"src/daemon/interaction/internal/interaction-android-escape.ts",
"src/daemon/interaction/internal/interaction-common.ts",
"src/daemon/interaction/internal/interaction-flags.ts",
"src/daemon/interaction/internal/interaction-gesture-response.ts",
"src/daemon/interaction/internal/interaction-gesture.ts",
"src/daemon/interaction/internal/interaction-ios-tap-outcome.ts",
"src/daemon/interaction/internal/interaction-recorded-input.ts",
"src/daemon/interaction/internal/interaction-ref-policy.ts",
"src/daemon/interaction/internal/interaction-response-data-transform.ts",
"src/daemon/interaction/internal/interaction-response.ts",
"src/daemon/interaction/internal/interaction-runtime.ts",
"src/daemon/interaction/internal/interaction-session.ts",
"src/daemon/interaction/internal/interaction-snapshot.ts",
"src/daemon/interaction/internal/interaction-targeting.ts",
"src/daemon/interaction/internal/interaction-touch-android-freshness.ts",
"src/daemon/interaction/internal/interaction-touch-android-readiness.ts",
"src/daemon/interaction/internal/interaction-touch-direct-ios.ts",
"src/daemon/interaction/internal/interaction-touch-fill.ts",
"src/daemon/interaction/internal/interaction-touch-payload.ts",
"src/daemon/interaction/internal/interaction-touch-policy.ts",
"src/daemon/interaction/internal/interaction-touch-prepare.ts",
"src/daemon/interaction/internal/interaction-touch-press-admission.ts",
"src/daemon/interaction/internal/interaction-touch-press.ts",
"src/daemon/interaction/internal/interaction-touch-reference-frame.ts",
"src/daemon/interaction/internal/interaction-touch-response.ts",
"src/daemon/interaction/internal/interaction-touch-runtime.ts",
"src/daemon/interaction/internal/interaction-touch-targets.ts",
"src/daemon/interaction/internal/interaction.ts",
"src/daemon/internal-observation.ts",
"src/daemon/keyboard-runtime.ts",
"src/daemon/offscreen-target-probe.ts",
"src/daemon/orientation-runtime.ts",
"src/daemon/ref-positionals.ts",
"src/daemon/ref-snapshot-flag-policy.ts",
"src/daemon/request-dispatch-disclosure.ts",
"src/daemon/request-generic-dispatch.ts",
"src/daemon/runtime-artifacts.ts",
"src/daemon/runtime-policy.ts",
"src/daemon/screenshot-crop-target.ts",
"src/daemon/screenshot-crop.ts",
"src/daemon/screenshot-runtime-binding.ts",
"src/daemon/screenshot-runtime.ts",
"src/daemon/scroll-movement.ts",
"src/daemon/scroll-runtime.ts",
"src/daemon/scroll-until.ts",
"src/daemon/selector-capture-binding.ts",
"src/daemon/selector-capture-runtime.ts",
"src/daemon/selector-match-errors.ts",
"src/daemon/selector-runtime-backend.ts",
"src/daemon/selector-runtime.ts",
"src/daemon/selector-text-runtime.ts",
"src/daemon/session-snapshot.ts",
"src/daemon/snapshot-timeout-evidence.ts",
"src/daemon/sparse-fallback-screenshot.ts",
"src/daemon/system-button-runtime.ts",
"src/daemon/tv-remote-runtime.ts",
"src/daemon/type-target-warning.ts",
"src/daemon/type-text-runtime.ts",
"src/daemon/viewport-runtime.ts",
"src/daemon/wait-current-surface.ts",
"src/daemon/wait-runtime.ts"
],
"daemon-sessions": [
"src/daemon/application-lifecycle-execution.ts",
"src/daemon/device/device-claim-reconciliation.ts",
"src/daemon/device/device-targets.ts",
"src/daemon/dispatch-payload.ts",
"src/daemon/handlers/human-control.ts",
"src/daemon/handlers/lease.ts",
"src/daemon/handlers/record-runtime-request.ts",
"src/daemon/handlers/record-runtime-response.ts",
"src/daemon/handlers/record-runtime.ts",
"src/daemon/handlers/record-trace.ts",
"src/daemon/handlers/session-app-deployment-route.ts",
"src/daemon/handlers/session-app-deployment.ts",
"src/daemon/handlers/session-app-source-deployment.ts",
"src/daemon/handlers/session-batch.ts",
"src/daemon/handlers/session-command-input.ts",
"src/daemon/handlers/session-doctor-app.ts",
"src/daemon/handlers/session-doctor-device.ts",
"src/daemon/handlers/session-doctor-metro.ts",
"src/daemon/handlers/session-doctor-options.ts",
"src/daemon/handlers/session-doctor-output.ts",
"src/daemon/handlers/session-doctor-types.ts",
"src/daemon/handlers/session-doctor.ts",
"src/daemon/handlers/session-prepare.ts",
"src/daemon/handlers/session-replay-command.ts",
"src/daemon/handlers/session-replay-video-owner.ts",
"src/daemon/handlers/session-runtime-command.ts",
"src/daemon/handlers/session-runtime-port-reverse.ts",
"src/daemon/handlers/session-script-publication.ts",
"src/daemon/handlers/session-state.ts",
"src/daemon/handlers/session.ts",
"src/daemon/handlers/snapshot.ts",
"src/daemon/handlers/trace-runtime.ts",
"src/daemon/install-source-resolution.ts",
"src/daemon/lease-lifecycle.ts",
"src/daemon/materialized-path-registry.ts",
"src/daemon/open-device-contention-wait.ts",
"src/daemon/payload-input.ts",
"src/daemon/request-admission.ts",
"src/daemon/request-handler-chain.ts",
"src/daemon/request-recording-health.ts",
"src/daemon/route-owner-files.ts",
"src/daemon/server/daemon-idle-reap.ts",
"src/daemon/session-lifecycle/index.ts",
"src/daemon/session-lifecycle/internal/inventory.ts",
"src/daemon/session-lifecycle/internal/session-close-lifecycle-teardown.ts",
"src/daemon/session-lifecycle/internal/session-close-runtime-admission.ts",
"src/daemon/session-lifecycle/internal/session-close-script.ts",
"src/daemon/session-lifecycle/internal/session-close.ts",
"src/daemon/session-lifecycle/internal/session-open-execution.ts",
"src/daemon/session-lifecycle/internal/session-open-foreground.ts",
"src/daemon/session-lifecycle/internal/session-open-prepare.ts",
"src/daemon/session-lifecycle/internal/session-open-state.ts",
"src/daemon/session-lifecycle/internal/session-open-surface.ts",
"src/daemon/session-lifecycle/internal/session-open-warnings.ts",
"src/daemon/session-lifecycle/internal/session-open.ts",
"src/daemon/session-lifecycle/internal/session-startup-metrics.ts",
"src/daemon/session-observability/index.ts",
"src/daemon/session-observability/internal/session-audio.ts",
"src/daemon/session-observability/internal/session-network.ts",
"src/daemon/session-observability/internal/session-observability.ts",
"src/daemon/session-observability/internal/session-perf-runtime.ts",
"src/daemon/session-replay-coordinator.ts",
"src/daemon/session-routing.ts",
"src/daemon/session-runtime.ts",
"src/daemon/session-teardown-budget.ts",
"src/daemon/session-teardown.ts",
"src/daemon/snapshot-command-runtime.ts",
"src/daemon/snapshot-diff-runtime.ts",
"src/daemon/snapshot-quality-latch.ts",
"src/daemon/snapshot-runtime.ts",
"src/daemon/startup-deadline.ts",
"src/daemon/web-session-names.ts"
],
"daemon-server": [
"src/daemon/application-lifecycle-recovery.ts",
"src/daemon/artifact-archive.ts",
"src/daemon/artifact-download.ts",
"src/daemon/daemon-stop.ts",
"src/daemon/device/device-claim-owner-recovery.ts",
"src/daemon/downloadable-artifact-http.ts",
"src/daemon/host-lease-http.ts",
"src/daemon/http-errors.ts",
"src/daemon/http-request-target.ts",
"src/daemon/human-control-http.ts",
"src/daemon/platform-request-scope.ts",
"src/daemon/provider-lease-expiry.ts",
"src/daemon/replay-device-selection.ts",
"src/daemon/request-binding.ts",
"src/daemon/request-diagnostics-http.ts",
"src/daemon/request-execution-locks.ts",
"src/daemon/request-execution-scope.ts",
"src/daemon/request-finalization.ts",
"src/daemon/request-lease-work.ts",
"src/daemon/request-lock-policy.ts",
"src/daemon/request-platform-provider-context.ts",
"src/daemon/request-router.ts",
"src/daemon/request-save-script-policy.ts",
"src/daemon/response-views.ts",
"src/daemon/resumable-upload-range.ts",
"src/daemon/resumable-upload-transfer.ts",
"src/daemon/resumable-upload.ts",
"src/daemon/server/daemon-lease-finalizer.ts",
"src/daemon/server/daemon-metadata-loss.ts",
"src/daemon/server/daemon-runtime.ts",
"src/daemon/server/daemon-session-idle-expiry.ts",
"src/daemon/server/daemon-shutdown-claims.ts",
"src/daemon/server/http-authorization.ts",
"src/daemon/server/http-instance-precondition.ts",
"src/daemon/server/http-rpc-envelope.ts",
"src/daemon/server/http-rpc-methods.ts",
"src/daemon/server/http-server.ts",
"src/daemon/server/server-lifecycle.ts",
"src/daemon/server/server-shutdown.ts",
"src/daemon/server/tenant-trust.ts",
"src/daemon/server/transport.ts",
"src/daemon/session-idle-expiry.ts",
"src/daemon/upload-http.ts",
"src/daemon/upload.ts"
]
}
Loading
Loading