{
  "schemaVersion": 1,
  "baseline": {
    "id": "cloga.dsh-github-copilot",
    "kind": "standalone-dsh-plugin",
    "source": "https://github.com/cloga/dsh-github-copilot",
    "sourceCommitPolicy": "exact-external-pin"
  },
  "package": {
    "name": "dsh-github-copilot",
    "version": "0.4.1"
  },
  "evidence": {
    "kind": "source-and-synthetic-test-inventory",
    "peerRangeMeaning": "package-admission-not-runtime-validation",
    "doesNotProve": ["live-discovery", "live-model-transport", "all-admitted-core-versions", "published-release", "local-upgrade"]
  },
  "supportedBaselines": {
    "platforms": ["windows", "linux"],
    "node": ">=22.19.0",
    "dsh": {
      "release": "0.2.0-rc.2",
      "tag": "dsh-v0.2.0-rc.2",
      "commit": "639ed015397290b3745d163aafe02ffee4aa3f84",
      "developmentRelease": "0.2.0-rc.2",
      "admittedReleases": ["0.2.0-rc.2"],
      "peerRange": "0.2.0-rc.2",
      "baselines": [
        {
          "release": "0.1.1-rc.2",
          "tag": "dsh-v0.1.1-rc.2",
          "commit": "a772dbbde82780bff2b9394427e9f0a24cafa1d5",
          "basedOnCommit": "b150a551b8d465e31e418e1b2eaf5e79bbb7d28e",
          "source": "https://github.com/cloga/deepseek-harness",
          "branch": "cloga-pi-ai-model-api",
          "modelsUi": "settings-section-fallback",
          "perModelApi": "model-entry",
          "strictModeCompat": "route-switch",
          "evidenceScope": "historical-regression-only",
          "managedProviderValidation": "not-verified"
        },
        {
          "release": "0.1.2-rc.1",
          "tag": "dsh-v0.1.2-rc.1",
          "commit": "a66e4702047846cdaa10c66c9d3df3951f5ea70d",
          "modelsUi": "provider-card",
          "providerHeaders": "fetch-validated-discovery",
          "strictModeCompat": "route-switch",
          "evidenceScope": "published-api-target",
          "managedProviderValidation": "synthetic-published-adapter",
          "managedProviderTests": ["tests/preview-provider.spec.ts", "tests/preview-route.spec.ts", "tests/pi-provider-bridge.spec.ts"]
        },
        {
          "release": "0.1.3-alpha.1",
          "tag": "dsh-v0.1.3-alpha.1",
          "commit": "d347e703908d0406b7a7ef80e3a0e594d86b2215",
          "modelsUi": "provider-card",
          "providerHeaders": "fetch-validated-discovery",
          "strictModeCompat": "route-switch",
          "fileContentHelper": "contentHasFile",
          "evidenceScope": "unchanged-tagged-source-target",
          "standaloneNpmArtifacts": "not-published",
          "managedProviderValidation": "not-verified"
        },
        {
          "release": "0.1.5-alpha.1",
          "tag": "dsh-v0.1.5-alpha.1",
          "commit": "5dda764ed3aa172535a7967b06ff95d9cbfe536a",
          "source": "https://github.com/deepseek-ai/deepseek-harness",
          "modelsUi": "provider-card",
          "providerHeaders": "fetch-validated-discovery",
          "strictModeCompat": "route-switch",
          "fileContentHelper": "contentHasFile",
          "evidenceScope": "unchanged-tagged-source-target",
          "standaloneNpmArtifacts": "not-tested",
          "managedProviderValidation": "synthetic-tagged-source-runtime",
          "runtimeTests": ["tests/preview-route.spec.ts", "tests/published-core.spec.ts", "tests/single-route.spec.ts", "tests/fixtures/session-context-core.fixture.ts", "tests/fixtures/remote-core.fixture.ts"]
        },
        {
          "release": "0.1.5-alpha.2",
          "tag": "dsh-v0.1.5-alpha.2",
          "commit": "b2e3b2a0125854567a4a5fcba75782e42fe84901",
          "source": "https://github.com/deepseek-ai/deepseek-harness",
          "modelsUi": "provider-card",
          "providerHeaders": "fetch-validated-discovery",
          "strictModeCompat": "route-switch",
          "fileContentHelper": "contentHasFile",
          "evidenceScope": "unchanged-tagged-source-target",
          "standaloneNpmArtifacts": "not-tested",
          "managedProviderValidation": "synthetic-tagged-source-runtime",
          "autoModelRouting": "plugin-owned-virtual-selection-with-real-request-header",
          "autoModelCompaction": "same-real-model-core-overflow-recovery",
          "autoModelPresentation": "public-turn-tail-durable-decision",
          "resolvedProfileDiagnostics": "plugin-owned-empty-modelErrors",
          "runtimeTests": ["tests/preview-route.spec.ts", "tests/published-core.spec.ts", "tests/single-route.spec.ts", "tests/fixtures/session-context-core.fixture.ts", "tests/fixtures/remote-core.fixture.ts"]
        },
        {
          "release": "0.1.5-rc.1",
          "tag": "dsh-v0.1.5-rc.1",
          "commit": "183f08e9c6dde7e36cd2318eaee70b0da08fb35e",
          "source": "https://github.com/deepseek-ai/deepseek-harness",
          "modelsUi": "provider-card",
          "providerHeaders": "fetch-validated-discovery",
          "strictModeCompat": "route-switch",
          "fileContentHelper": "contentHasFile",
          "evidenceScope": "unchanged-tagged-source-target",
          "standaloneNpmArtifacts": "not-tested",
          "managedProviderValidation": "synthetic-tagged-source-runtime",
          "resolvedProfileDiagnostics": "plugin-owned-empty-modelErrors",
          "runtimeTests": ["tests/preview-route.spec.ts", "tests/published-core.spec.ts", "tests/single-route.spec.ts", "tests/fixtures/session-context-core.fixture.ts", "tests/fixtures/remote-core.fixture.ts"]
        },
        {
          "release": "0.1.5-rc.2",
          "tag": "dsh-v0.1.5-rc.2",
          "commit": "fb2c4b9e698e30edb738bca4cf0618587db7d203",
          "source": "https://github.com/deepseek-ai/deepseek-harness",
          "modelsUi": "provider-card",
          "providerHeaders": "fetch-validated-discovery",
          "strictModeCompat": "route-switch",
          "fileContentHelper": "contentHasFile",
          "evidenceScope": "unchanged-tagged-source-target",
          "standaloneNpmArtifacts": "not-tested",
          "managedProviderValidation": "synthetic-tagged-source-runtime",
          "resolvedProfileDiagnostics": "plugin-owned-empty-modelErrors",
          "runtimeTests": ["tests/preview-route.spec.ts", "tests/published-core.spec.ts", "tests/single-route.spec.ts", "tests/fixtures/session-context-core.fixture.ts", "tests/fixtures/remote-core.fixture.ts"]
        },
        {
          "release": "0.1.6-alpha.1",
          "tag": "dsh-v0.1.6-alpha.1",
          "commit": "0a15e36e7f82b6ed45af6fa9759f29b40dcd965d",
          "source": "https://github.com/deepseek-ai/deepseek-harness",
          "modelsUi": "provider-card",
          "providerHeaders": "fetch-validated-discovery",
          "strictModeCompat": "route-switch",
          "hostGrants": "no-public-api-no-plugin-coupling",
          "fileContentHelper": "contentHasFile",
          "agentCreation": "awaited-serial-agent-created",
          "sessionHistory": "request-header-and-projections-no-new-sync-history",
          "mcpSdk": "client-v2-tools-and-resource-pagination",
          "ptcRuntime": "dsh-ptc-runtime-and-workflow-ptc",
          "sandboxShell": "async-cancellable-preparation",
          "configHotReload": "serialized-coalesced-last-good-recovery",
          "optionalPlugins": "startup-policy-owned-by-consumer",
          "attachmentCache": "request-variants-under-dsh-cache-normalized-path-stable",
          "imageOffload": "durable-projection-then-retry",
          "teamTools": "spawn-teammate-and-provider-owned-task-pagination",
          "evidenceScope": "unchanged-tagged-source-target",
          "standaloneNpmArtifacts": "not-tested",
          "managedProviderValidation": "synthetic-tagged-source-runtime",
          "resolvedProfileDiagnostics": "plugin-owned-empty-modelErrors",
          "runtimeTests": ["tests/preview-route.spec.ts", "tests/published-core.spec.ts", "tests/single-route.spec.ts", "tests/search-routing.spec.ts", "tests/routed-web.spec.ts", "tests/deepseek-search-fallback.spec.ts", "tests/tool-schema-compat.spec.ts", "tests/fixtures/session-context-core.fixture.ts", "tests/fixtures/remote-core.fixture.ts"]
        },
        {
          "release": "0.1.6-alpha.2",
          "tag": "dsh-v0.1.6-alpha.2",
          "commit": "ddefc45fbc7f8e46dd73185e68295696d1297887",
          "source": "https://github.com/deepseek-ai/deepseek-harness",
          "modelsUi": "provider-card",
          "providerHeaders": "fetch-validated-discovery",
          "strictModeCompat": "route-switch",
          "fileContentHelper": "contentHasFile",
          "agentCreation": "awaited-serial-agent-created",
          "sessionHistory": "request-header-and-projections-no-new-sync-history",
          "strictRemoteCodecs": "create-factories-with-legacy-schema-bridge",
          "roleChildDescriptorVersion": 3,
          "roleChildCacheVersion": 2,
          "roleChildHistory": "unknown-legacy-history-fail-closed",
          "runtimeDependencies": "public-resolution-and-unload",
          "clientSessionContext": "multiple-session-owner-isolation",
          "evidenceScope": "unchanged-tagged-source-target",
          "standaloneNpmArtifacts": "not-tested",
          "managedProviderValidation": "synthetic-tagged-source-runtime",
          "resolvedProfileDiagnostics": "plugin-owned-empty-modelErrors",
          "runtimeTests": ["tests/preview-route.spec.ts", "tests/published-core.spec.ts", "tests/single-route.spec.ts", "tests/search-routing.spec.ts", "tests/routed-web.spec.ts", "tests/deepseek-search-fallback.spec.ts", "tests/tool-schema-compat.spec.ts", "tests/fixtures/alpha2-contracts-core.fixture.ts", "tests/fixtures/compaction-pressure-core.fixture.ts", "tests/remote-codec.spec.ts", "tests/dual-model-projection.spec.ts", "tests/fixtures/session-context-core.fixture.ts", "tests/fixtures/remote-core.fixture.ts"]
        },
        {
          "release": "0.2.0-rc.1",
          "tag": "dsh-v0.2.0-rc.1",
          "commit": "4878cdabd87d4041bdaff61d04c966883b9fd07a",
          "source": "https://github.com/deepseek-ai/deepseek-harness",
          "desktopRelease": "0.2.0-rc.1",
          "modelsUi": "provider-card",
          "providerHeaders": "fetch-validated-discovery",
          "strictModeCompat": "route-switch",
          "fileContentHelper": "contentHasFile",
          "agentCreation": "awaited-serial-agent-created",
          "sessionHistory": "request-header-and-projections-no-new-sync-history",
          "sessionFormatVersion": 4,
          "strictRemoteCodecs": "create-factories-with-legacy-schema-bridge",
          "roleChildDescriptorVersion": 3,
          "roleChildCacheVersion": 2,
          "roleChildHistory": "unknown-legacy-history-fail-closed",
          "runtimeDependencies": "public-resolution-and-unload",
          "clientSessionContext": "multiple-session-owner-isolation",
          "evidenceScope": "unchanged-tagged-source-target",
          "standaloneNpmArtifacts": "tested",
          "desktopPackageSet": "not-materialized",
          "managedProviderValidation": "synthetic-tagged-source-runtime",
          "resolvedProfileDiagnostics": "plugin-owned-empty-modelErrors",
          "runtimeTests": ["tests/preview-route.spec.ts", "tests/published-core.spec.ts", "tests/single-route.spec.ts", "tests/search-routing.spec.ts", "tests/routed-web.spec.ts", "tests/deepseek-search-fallback.spec.ts", "tests/tool-schema-compat.spec.ts", "tests/fixtures/alpha2-contracts-core.fixture.ts", "tests/fixtures/compaction-pressure-core.fixture.ts", "tests/remote-codec.spec.ts", "tests/dual-model-projection.spec.ts", "tests/fixtures/session-context-core.fixture.ts", "tests/fixtures/remote-core.fixture.ts"]
        },
        {
          "release": "0.2.0-rc.2",
          "tag": "dsh-v0.2.0-rc.2",
          "commit": "639ed015397290b3745d163aafe02ffee4aa3f84",
          "source": "https://github.com/deepseek-ai/deepseek-harness",
          "desktopRelease": "0.2.0-rc.2",
          "modelsUi": "provider-card",
          "providerHeaders": "fetch-validated-discovery",
          "strictModeCompat": "route-switch",
          "fileContentHelper": "contentHasFile",
          "agentCreation": "awaited-serial-agent-created",
          "sessionHistory": "request-header-and-projections-no-new-sync-history",
          "sessionFormatVersion": 4,
          "strictRemoteCodecs": "create-factories-with-legacy-schema-bridge",
          "roleChildDescriptorVersion": 3,
          "roleChildCacheVersion": 2,
          "roleChildHistory": "unknown-legacy-history-fail-closed",
          "runtimeDependencies": "public-resolution-and-unload",
          "clientSessionContext": "multiple-session-owner-isolation",
          "evidenceScope": "unchanged-tagged-source-target",
          "standaloneNpmArtifacts": "tested",
          "desktopPackageSet": "installed-descriptor-audited",
          "managedProviderValidation": "synthetic-tagged-source-runtime",
          "resolvedProfileDiagnostics": "plugin-owned-empty-modelErrors",
          "runtimeTests": ["tests/preview-route.spec.ts", "tests/published-core.spec.ts", "tests/single-route.spec.ts", "tests/search-routing.spec.ts", "tests/routed-web.spec.ts", "tests/deepseek-search-fallback.spec.ts", "tests/tool-schema-compat.spec.ts", "tests/fixtures/alpha2-contracts-core.fixture.ts", "tests/fixtures/compaction-pressure-core.fixture.ts", "tests/remote-codec.spec.ts", "tests/dual-model-projection.spec.ts", "tests/fixtures/scoped-compaction-core.fixture.ts", "tests/fixtures/model-exclusions-core.fixture.ts", "tests/fixtures/session-context-core.fixture.ts", "tests/fixtures/remote-core.fixture.ts"]
        }
      ],
      "packages": [
        "@deepseek-ai/dsh-agent",
        "@deepseek-ai/dsh-agent-default-model",
        "@deepseek-ai/dsh-api-remotes",
        "@deepseek-ai/dsh-authorization",
        "@deepseek-ai/dsh-client-ui-renderer",
        "@deepseek-ai/dsh-client-ui-settings-models",
        "@deepseek-ai/dsh-client-ui-slots",
        "@deepseek-ai/dsh-commands",
        "@deepseek-ai/dsh-compaction",
        "@deepseek-ai/dsh-compaction-basic",
        "@deepseek-ai/dsh-credentials",
        "@deepseek-ai/dsh-launch-environment",
        "@deepseek-ai/dsh-llm",
        "@deepseek-ai/dsh-llm-pi-ai",
        "@deepseek-ai/dsh-scope",
        "@deepseek-ai/dsh-session",
        "@deepseek-ai/dsh-settings",
        "@deepseek-ai/dsh-typert-protocol",
        "@deepseek-ai/dsh-web",
        "@deepseek-ai/dsh-web-search-deepseek"
      ]
    },
    "piAi": "0.87.1",
    "runtimeDependencies": {
      "@earendil-works/pi-ai": "0.87.1",
      "zod": "4.6.5"
    },
    "sharedPeerDependencies": {
      "@deepseek-ai/dsh-authorization": "0.2.0-rc.2",
      "@deepseek-ai/schemastery": "^3.18.4"
    },
    "clientExternals": {
      "react": {
        "range": "^18.2.0",
        "owner": "dsh-client-module-static-singleton",
        "nodeGraph": false
      }
    },
    "desktopSharedPackageContracts": [
      {
        "id": "desktop-0.1.5-rc.2-installed-runtime",
        "sourceSha256": "210cacaf3842643ef6c124fd23cb3b67caf7008e97868c733550b56ba7a1e836",
        "packageCount": 241,
        "scope": "historical-ownership-only-not-current-compatibility"
      },
      {
        "id": "desktop-0.1.6-alpha.1-generated-package-set",
        "sourceSha256": "51b25ad67e6b0198edca0ec9baf8ebd06d26217dd33d1a2a4cce7e881382e6ea",
        "packageCount": 246,
        "scope": "historical-ownership-only-not-current-compatibility",
        "descriptorStatus": "not-materialized"
      },
      {
        "id": "desktop-0.2.0-rc.2-signed-runtime",
        "sourceSha256": "29561160fb7825c3968708f5700564f4381a976985fc270ee5dcc42e5a0a3a54",
        "packageCount": 287,
        "scope": "installed-signed-desktop-peer-ownership-only-not-loaded-plugin"
      }
    ]
  },
  "capabilities": [
    {
      "id": "copilot-local-diagnostics",
      "required": true,
      "evidenceScope": "synthetic-collector-ui-native-gateway-storage-and-settings-not-live-reliability",
      "activation": "default-off-explicit-profile-local-enable",
      "sourceMarkers": [
        {"file": "src/diagnostics-types.ts", "marker": "DIAGNOSTICS_MAX_BYTES = 2 * 1024 * 1024"},
        {"file": "src/diagnostics-collector.ts", "marker": "noteClientGaps"},
        {"file": "src/diagnostics-host.ts", "marker": "diagnosticsDomainForProfile"},
        {"file": "src/diagnostics-client.ts", "marker": "createClientDiagnosticsScope"},
        {"file": "src/remote.ts", "marker": "...diagnosticsRemote.descriptors"},
        {"file": "src/config.ts", "marker": "diagnosticsEnabled:"},
        {"file": "AGENTS.md", "marker": "Default-off local account/Checking/compaction diagnostics"}
      ],
      "tests": [
        {"file": "tests/diagnostics-collector.spec.ts", "name": "is disabled until enabled, records success denominators and settles once"},
        {"file": "tests/diagnostics-client.spec.ts", "name": "rejects stale status responses and settles an unmounted Checking operation once"},
        {"file": "tests/diagnostics-card.spec.ts", "name": "requires a confirmed durable enable and a separate destructive clear confirmation"},
        {"file": "tests/fixtures/diagnostics-storage-core.fixture.ts", "name": "isolates profiles on the home-wide backend and preserves memory on a real publish failure"},
        {"file": "tests/fixtures/diagnostics-gateway-core.fixture.ts", "name": "binds diagnostics through actual strict Client and Host gateways with durable enable and clear fences"}
      ]
    },
    {
      "id": "copilot-session-accounts",
      "required": true,
      "evidenceScope": "synthetic-turn-routing-native-gateways-settings-persistence-and-ui-not-live-account-access",
      "activation": "managed-only-explicit-session-choice-or-global-default",
      "sourceMarkers": [
        {"file": "src/session-accounts-host.ts", "marker": "class SessionAccountsHost"},
        {"file": "src/session-accounts-controller.ts", "marker": "extends TypertRemoteService"},
        {"file": "src/session-accounts-remote.ts", "marker": "githubCopilotSessionAccount"},
        {"file": "src/config.ts", "marker": "sessionAccounts:"},
        {"file": "src/remote.ts", "marker": "...sessionAccountsRemote.descriptors"},
        {"file": "AGENTS.md", "marker": "Historical Account is an additive assistant-actions disclosure"}
      ],
      "tests": [
        {"file": "tests/session-accounts.spec.ts", "name": "freezes each turn across preference changes, steps and retries"},
        {"file": "tests/session-accounts-host.spec.ts", "name": "holds account mutation fencing through abort until the actual turn boundary"},
        {"file": "tests/session-accounts-host.spec.ts", "name": "ignores identity completion after the turn ends"},
        {"file": "tests/copilot-usage-card.spec.ts", "name": "switches only subsequent Session turns inside Credits and can restore inheritance"},
        {"file": "tests/fixtures/remote-core.fixture.ts", "name": "binds Session account choices and historical reads through native Client and %s Host gateways"},
        {"file": "tests/fixtures/copilot-accounts-persistence-core.fixture.ts", "name": "persists independent native credentials and SettingsForms CAS across profile restart without cross-account OAuth writes"}
      ]
    },
    {
      "id": "independent-copilot-accounts",
      "required": true,
      "evidenceScope": "synthetic-public-services-native-adapter-and-ui-not-live-oauth-or-provider-access",
      "activation": "managed-only-explicit-account-selector",
      "sourceMarkers": [
        {"file": "src/copilot-accounts-host.ts", "marker": "async ensureIdentityFor(accountId: string)"},
        {"file": "AGENTS.md", "marker": "Approved multi-account ownership extension (#297)"},
        {"file": "src/remote.ts", "marker": "...copilotAccountsRemote.descriptors"},
        {"file": "src/copilot-accounts-card.ts", "marker": "removeAccount(accountId: string, expectedRevision: number)"},
        {"file": "src/copilot-account-presentation.ts", "marker": "account data and credentials never travel between surfaces"},
        {"file": "docs/copilot-accounts.md", "marker": "A mutable active-account lookup inside each store method is forbidden"}
      ],
      "tests": [
        {"file": "tests/copilot-identity-refresh.spec.ts", "name": "renews expired identity once for account %s without changing metadata-only reads"},
        {"file": "tests/copilot-account-identity-cache.spec.ts", "name": "hydrates saved inactive names without activating them, then reuses them"},
        {"file": "tests/account-dropdown.spec.ts", "name": "backs translucent native menu tokens with opaque Canvas and uses a dark elevation shadow"},
        {"file": "tests/copilot-account-identity-cache.spec.ts", "name": "retains inactive verified names after freshness expiry without reads or network in status"},
        {"file": "tests/copilot-usage-card.spec.ts", "name": "settles quota before a slow identity renewal and uses nonforcing ensure on visible refresh cadence"},
        {"file": "tests/copilot-usage-card.spec.ts", "name": "freezes the effective account when following is unchecked and restores following through the same CAS"},
        {"file": "tests/copilot-usage-card.spec.ts", "name": "retains confirmed following when consent is cancelled and disables it during confirmation"},
        {"file": "tests/copilot-usage-card.spec.ts", "name": "disables following when the Session selection cannot be read instead of treating it as a fixed account"},
        {"file": "tests/fixtures/copilot-accounts-host-core.fixture.ts", "name": "never writes a captured A refresh into B after an external selection change"},
        {"file": "tests/fixtures/copilot-accounts-host-core.fixture.ts", "name": "runs fresh switch identity and model preflight concurrently but commits only after both settle"},
        {"file": "tests/fixtures/copilot-accounts-host-core.fixture.ts", "name": "permits record-bound requests during selector switching without admitting global requests or credential mutations"},
        {"file": "tests/fixtures/copilot-accounts-host-core.fixture.ts", "name": "cancels and drains sibling switch preflight before releasing its mutation fence"},
        {"file": "tests/fixtures/copilot-accounts-host-core.fixture.ts", "name": "rejects a changed credential identity during overlapping switch checks without saving"},
        {"file": "tests/copilot-accounts-card.spec.ts", "name": "renders metadata and permits a confirmed switch while unrelated identity names remain pending"},
        {"file": "tests/copilot-accounts-card.spec.ts", "name": "uses the latest parent callback without resetting a pending switch or repeating initial reads"},
        {"file": "tests/fixtures/copilot-accounts-host-core.fixture.ts", "name": "preserves uncertain commit ahead of missing-slot recovery"},
        {"file": "tests/fixtures/copilot-accounts-host-core.fixture.ts", "name": "rechecks externally started canonical authorization before selector CAS"},
        {"file": "tests/fixtures/copilot-accounts-host-core.fixture.ts", "name": "retains canonical admission through polling and cancellation settlement"},
        {"file": "tests/fixtures/copilot-accounts-persistence-core.fixture.ts", "name": "persists independent native credentials and SettingsForms CAS across profile restart without cross-account OAuth writes"},
        {"file": "tests/copilot-accounts-card.spec.ts", "name": "requires a separate confirmation and uses the captured selector revision"},
        {"file": "tests/copilot-accounts-card.spec.ts", "name": "reauthorizes the existing slot without requesting a new account or switching"},
        {"file": "tests/copilot-usage-card.spec.ts", "name": "shows current identity only in details without a Chat switching control"},
        {"file": "tests/copilot-usage-card.spec.ts", "name": "refuses to combine account B identity with account A quota"},
        {"file": "tests/copilot-usage-card.spec.ts", "name": "immediately revokes mounted presentation on a Models mutation and rejects late previous-account results"},
        {"file": "tests/fixtures/remote-core.fixture.ts", "name": "mounts authorization, account, role and search-catalog Remotes on the exact target Client gateway"}
      ]
    },
    {
      "id": "missing-turn-usage-explanation",
      "required": true,
      "sourceMarkers": [
        {"file": "src/turn-usage-evidence.ts", "marker": "github-copilot-turn-usage-evidence"},
        {"file": "src/turn-usage-evidence.ts", "marker": "tail.tokenUsage !== undefined"},
        {"file": "src/turn-usage-notice.ts", "marker": "Turn Usage incomplete"},
        {"file": "src/turn-usage-evidence.ts", "marker": "stateVersion: 2"},
        {"file": "src/request-body-timeout-marker.ts", "marker": "COPILOT_REQUEST_BODY_TIMEOUT"},
        {"file": "src/auto-model-presentation.ts", "marker": "turnUsageEvidenceDefinition"},
        {"file": "scripts/verify-tagged-core.mjs", "marker": "tests/fixtures/turn-usage-core.fixture.ts"}
      ],
      "tests": [
        {"file": "tests/turn-usage-evidence.spec.ts", "name": "explains a recovered local block alongside reported successful steps without summing tokens"},
        {"file": "tests/turn-usage-evidence.spec.ts", "name": "does not label generic overflow, provider errors or ambiguous streams as pre-dispatch"},
        {"file": "tests/turn-usage-evidence.spec.ts", "name": "retains same-attempt timeout coordinates and proven same-step retry completion without filling usage"},
        {"file": "tests/turn-usage-evidence.spec.ts", "name": "keeps incomplete, reordered, interrupted and cross-step retry evidence uncertain"},
        {"file": "tests/turn-usage-notice.spec.ts", "name": "keeps the fixed-height footer compact and opens a bounded nonmodal explanation"},
        {"file": "tests/turn-usage-integration.spec.ts", "name": "explains native missing usage even when the independent selection Remote fails"},
        {"file": "tests/fixtures/turn-usage-core.fixture.ts", "name": "reproduces the finish-only local block and explains it without changing native accounting"},
        {"file": "tests/fixtures/turn-usage-core.fixture.ts", "name": "associates a recorded 408 with its missing sample and exact retry without restoring the native total"},
        {"file": "tests/fixtures/reasoning-presentation-core.fixture.ts", "name": "explains missing turn Usage through native assembly and scoped actions (%s)"}
      ]
    },
    {
      "id": "historical-context-evidence",
      "required": true,
      "evidenceScope": "synthetic-stream-replay-and-additive-ui-not-current-occupancy-or-live-desktop",
      "sourceMarkers": [
        {"file": "src/context-usage.ts", "marker": "isZeroContextUsage"},
        {"file": "src/index.ts", "marker": "installContextEvidence(ctx)"},
        {"file": "src/client.ts", "marker": "registerContextEvidenceUi"},
        {"file": "src/context-evidence.ts", "marker": "githubCopilotContextEvidence"},
        {"file": "src/context-evidence-ui.ts", "marker": "ContextIncidentPresentation"},
        {"file": "src/replay-recovery-ui.ts", "marker": "conversation.input.dock"},
        {"file": "src/composer-notice-style.ts", "marker": "var(--dsh-content-font-size-secondary, 13px)"},
        {"file": "docs/copilot-usage.md", "marker": "historical input sample, not current occupancy"}
      ],
      "tests": [
        {"file": "tests/context-usage.spec.ts", "name": "classifies zero only for separate historical evidence without changing the sample"},
        {"file": "tests/context-evidence.spec.ts", "name": "replays failed zero samples without discarding the last valid input sample"},
        {"file": "tests/context-evidence.spec.ts", "name": "separates committed compaction, subsequent request success and applicable input sampling"},
        {"file": "tests/context-evidence.spec.ts", "name": "tracks unchanged-header native steps and reads only the settled message source leaves"},
        {"file": "tests/context-evidence.spec.ts", "name": "keeps ordinary repeated steps and unsampled success quiet after compaction"},
        {"file": "tests/context-evidence-ui.spec.ts", "name": "labels counts as historical rather than current occupancy in %s"},
        {"file": "tests/context-evidence-ui.spec.ts", "name": "reacts to only the current open Session and pending selection, preserving the native meter"},
        {"file": "tests/context-evidence-ui.spec.ts", "name": "keeps unknown projection evidence diagnostic-only"},
        {"file": "tests/replay-recovery-ui.spec.ts", "name": "uses native auxiliary typography for the entire notice and inherited controls in an independent dock row"},
        {"file": "tests/fixtures/session-context-core.fixture.ts", "name": "cold-folds native model selections independently without replacing the controller projection"},
        {"file": "tests/preview-route.spec.ts", "name": "forwards native SDK failed zero usage without changing the shared accounting stream"},
        {"file": "tests/preview-route.spec.ts", "name": "preserves native cancellation usage on %s (%s input tokens)"},
        {"file": "tests/preview-route.spec.ts", "name": "preserves native nonzero Anthropic usage before restoring an owned byte-idle failure"},
        {"file": "tests/fixtures/turn-usage-core.fixture.ts", "name": "retains native whole-turn accounting for a sampled %s attempt after successful steps"}
      ]
    },
    {
      "id": "account-quota-composer-usage",
      "required": true,
      "evidenceScope": "synthetic-quota-and-public-remote-ui-contracts-not-live-account-access",
      "sourceMarkers": [
        {"file": "src/index.ts", "marker": "ctx.plugin(GitHubCopilotUsageController)"},
        {"file": "src/client.ts", "marker": "registerCopilotUsageUi"},
        {"file": "src/copilot-usage-ui.ts", "marker": "runtime.useSession(session =>"},
        {"file": "src/remote.ts", "marker": "...copilotUsageRemote.descriptors"},
        {"file": "docs/copilot-usage.md", "marker": "Percentage-only data must not create falsely precise absolute amounts"}
      ],
      "tests": [
        {"file": "tests/copilot-usage-normalize.spec.ts", "name": "never invents precise amounts from a rounded percentage"},
        {"file": "tests/copilot-usage-normalize.spec.ts", "name": "falls back from an absent snapshot reset and invalid UTC metadata to a valid account date"},
        {"file": "tests/copilot-usage-normalize.spec.ts", "name": "does not let invalid optional account metadata suppress a valid snapshot reset"},
        {"file": "tests/copilot-usage-card.spec.ts", "name": "uses native secondary type tokens and a bounded single-line trigger"},
        {"file": "tests/copilot-usage-card.spec.ts", "name": "shows supplied account amounts without an unsupported Session credits section"},
        {"file": "tests/copilot-usage-ui.spec.ts", "name": "uses real Cordis Remote tracing and reversible public SlotRegistry registration"},
        {"file": "tests/copilot-usage-ui.spec.ts", "name": "renders the usage trigger through a required Session selector for %s"},
        {"file": "tests/fixtures/copilot-usage-selector-core.fixture.ts", "name": "renders and reacts to the owning Session on %s"},
        {"file": "tests/scripts/copilot-usage-gateway.test.mjs", "name": "quota Remote reaches the actual Host gateway without startup or signed-out network requests"},
        {"file": "tests/client-bundle.spec.ts", "name": "mounts strict Host result codecs through the published rc.1 client carrier"},
        {"file": "tests/fixtures/remote-core.fixture.ts", "name": "mounts authorization, account, role and search-catalog Remotes on the exact target Client gateway"}
      ]
    },
    {
      "id": "desktop-shared-package-ownership",
      "required": true,
      "evidenceScope": "historical-shared-package-ownership-audit-plus-synthetic-current-contract; no-current-desktop-package-set-proof",
      "sourceMarkers": [
        {"file": "scripts/verify-desktop-package-graph.mjs", "marker": "verifyDesktopPackageGraph"},
        {"file": "scripts/verify-tarball.mjs", "marker": "desktopSharedGraphs"},
        {"file": "tests/fixtures/desktop-shared-package-contracts.json", "marker": "desktop-0.1.6-alpha.1-generated-package-set"},
        {"file": "tsdown.config.ts", "marker": "const externals = new Set(['react'])"},
        {"file": "package.json", "marker": "\"external\": ["}
      ],
      "tests": [
        {"file": "tests/scripts/desktop-package-graph.test.mjs", "name": "retains historical graphs and audits signed rc.2 Desktop peer ownership"},
        {"file": "tests/scripts/desktop-package-graph.test.mjs", "name": "shared graph gate rejects bundled, optional, incompatible, or unaudited host ownership"},
        {"file": "tests/scripts/desktop-package-graph.test.mjs", "name": "client externals stay outside the strict Node peer graph"}
      ]
    },
    {
      "id": "readonly-search-composition-preflight",
      "required": true,
      "evidenceScope": "pre-install-structural-only-not-automatic-cli-enforcement",
      "sourceMarkers": [
        {"file": "scripts/check-search-composition.mjs", "marker": "checkSearchComposition"},
        {"file": "scripts/check-search-composition.mjs", "marker": "PREEXISTING_WEB_ISOLATION"},
        {"file": "README.md", "marker": "does not automatically run this preflight"}
      ],
      "tests": [
        {"file": "tests/scripts/search-composition.test.mjs", "name": "admits a stock top-level official service without mutating or exposing its config"},
        {"file": "tests/scripts/search-composition.test.mjs", "name": "includes home and launcher layers instead of ignoring a late web override"},
        {"file": "tests/scripts/search-composition.test.mjs", "name": "preflight refuses nonempty profile root without initialization, normalization or secret output"},
        {"file": "tests/scripts/search-composition.test.mjs", "name": "real public parsers validate candidate layers and preserve every input file"},
        {"file": "tests/scripts/search-composition.test.mjs", "name": "rejects a web bundle ordered after the Copilot guard"}
      ]
    },
    {
      "id": "session-model-search-routing",
      "required": true,
      "evidenceScope": "development-real-consumer-loader-gateway-and-ui-synthetic",
      "sourceMarkers": [
        {"file": "src/search-routing-host.ts", "marker": "extends TypertRemoteService"},
        {"file": "src/search-routing-remote.ts", "marker": "githubCopilotSearchRouting.providers"},
        {"file": "src/search-routing-policy.ts", "marker": "normalizeWebSearchRouting"},
        {"file": "src/search-tool-routing.ts", "marker": "routeSearchTools"},
        {"file": "src/routed-web.ts", "marker": "extends WebRuntime"},
        {"file": "src/index.ts", "marker": "ctx.provide('githubCopilotSearchRouter'"},
        {"file": "src/web-search-routing-config.ts", "marker": "WEB_SEARCH_ROUTING_SETTINGS_NAMESPACE"},
        {"file": "src/web-search-routing-card.ts", "marker": "data-dsh-web-search-routing"},
        {"file": "src/web-search-routing-card.ts", "marker": "data-dsh-copilot-search-options"},
        {"file": "cordis.patch.yml", "marker": "web: github-copilot-original-web"}
      ],
      "tests": [
        {"file": "tests/search-provider-catalog.spec.ts", "name": "lists only actual facade registrations without availability checks, auth or search"},
        {"file": "tests/scripts/search-provider-gateway.test.mjs", "name": "search catalog Remote reaches actual facade registrations and unloads cleanly"},
        {"file": "tests/web-search-routing-card.spec.ts", "name": "loads one actual provider catalog into both selectors without Copilot-specific Auto labels"},
        {"file": "tests/client-search-inject.spec.ts", "name": "saves only edited hosted-search leaves in the existing namespace without broadening the route allowlist"},
        {"file": "tests/routed-web.spec.ts", "name": "keeps the configured provider for DeepSeek and all other model routes"},
        {"file": "tests/routed-web.spec.ts", "name": "dispatches a router-selected provider by exact registered id"},
        {"file": "tests/routed-web.spec.ts", "name": "retains pre-execute denial and the surrounding execution middleware"},
        {"file": "tests/inline/apply.spec.ts", "name": "uses an independently configured account model for a non-Copilot chat session"},
        {"file": "tests/inline/apply.spec.ts", "name": "discovers an independent search model absent from the static catalog and keeps proof enabled"},
        {"file": "tests/inline/apply.spec.ts", "name": "rejects independent search when managed proof expires during %s"},
        {"file": "tests/inline/apply.spec.ts", "name": "uses the configured account model in fixed mode even for a different Copilot chat model"},
        {"file": "tests/client-bundle.spec.ts", "name": "registers web-search routing in the built bundle detail page, leaving Models for account controls"},
        {"file": "tests/routed-web-loader.spec.ts", "name": "loads the built facade and delegate entries without changing official tools"}
      ]
    },
    {
      "id": "provider-only-search-settings",
      "required": true,
      "evidenceScope": "pinned-settings-and-client-contracts-plus-synthetic-routing-no-live-save-claim",
      "sourceMarkers": [
        {"file": "src/client.ts", "marker": "const settings = ctx.remote.settings"},
        {"file": "src/client.ts", "marker": "const routing = ctx.remote.githubCopilotSearchRouting"},
        {"file": "src/web-search-routing-card.ts", "marker": "Fallback provider"},
        {"file": "src/web-search-routing-card.ts", "marker": "data-dsh-copilot-search-reset"},
        {"file": "src/index.ts", "marker": "function configuredCandidates(cfg: InlineConfig)"}
      ],
      "tests": [
        {"file": "tests/web-search-routing-card.spec.ts", "name": "saves Copilot as %s with one routing write and no model prerequisite"},
        {"file": "tests/web-search-routing-card.spec.ts", "name": "does not rewrite a legacy model override when saving provider routing"},
        {"file": "tests/web-search-routing-card.spec.ts", "name": "never loads account model suggestions to display or save providers"},
        {"file": "tests/web-search-routing-card.spec.ts", "name": "resets a legacy override only through an explicit separate action"},
        {"file": "tests/web-search-routing-card.spec.ts", "name": "explains a real Remote settings-conflict without exposing its raw details"},
        {"file": "tests/client-search-inject.spec.ts", "name": "keeps real mounted drafts and pending saves through parent rerenders (bundle=%s)"},
        {"file": "tests/scripts/search-settings-contract.test.mjs", "name": "published SettingsForms exposes descriptor/mutation APIs without installSection, and module lacks installSettingsSection"},
        {"file": "tests/scripts/search-settings-contract.test.mjs", "name": "real pinned Client namespace lookups require stable capture across render calls"},
        {"file": "tests/scripts/search-settings-contract.test.mjs", "name": "search routing saves both leaves in github-copilot namespace using nested paths"},
        {"file": "tests/scripts/search-settings-contract.test.mjs", "name": "stale routing revisions fail CAS and preserve the last successful settings"},
        {"file": "tests/scripts/search-settings-contract.test.mjs", "name": "hidden legacy searchModel and searchRouting share namespace revision and coordinate CAS"},
        {"file": "tests/scripts/search-settings-contract.test.mjs", "name": "pinned generated Client mutate codecs accept routing ops and a flat namespace revision"},
        {"file": "tests/scripts/search-settings-contract.test.mjs", "name": "native routing edits preserve ordinary config, reject invalid paths and persist across restart"},
        {"file": "tests/inline/apply.spec.ts", "name": "automatically resolves account-owned Responses candidates for %s without a search model"},
        {"file": "tests/inline/apply.spec.ts", "name": "bounds automatic proof to three eligible candidates in deterministic id order"},
        {"file": "tests/inline/apply.spec.ts", "name": "does not discover or probe allowlist-excluded automatic search"}
      ]
    },
    {
      "id": "explicit-deepseek-search-fallback",
      "required": true,
      "evidenceScope": "development-synthetic-no-live-search-claim",
      "sourceMarkers": [
        {"file": "src/config.ts", "marker": "searchFallback: z.union(['none', 'deepseek']).default('deepseek')"},
        {"file": "src/deepseek-search-fallback.ts", "marker": "new native.DeepSeekSearchProvider"},
        {"file": "src/search-routing.ts", "marker": "These are not Copilot search results."}
      ],
      "tests": [
        {"file": "tests/search-routing.spec.ts", "name": "does not spend fallback credits unless explicitly enabled"},
        {"file": "tests/search-routing.spec.ts", "name": "does not fallback when the primary reports cancellation"},
        {"file": "tests/routed-web.spec.ts", "name": "preserves fallback provenance in canonical value, rendered content and web-card metadata"},
        {"file": "tests/deepseek-search-fallback.spec.ts", "name": "checks the actual managed proof after native fallback auth: %s"},
        {"file": "tests/deepseek-search-fallback.spec.ts", "name": "checks continuity after native literal-key auth (permitted=%s)"}
      ]
    },
    {
      "id": "managed-request-budget-and-compaction-policy",
      "required": true,
      "activation": "account-bound-estimated-admission-and-optional-stock-recovery",
      "sourceMarkers": [
        {"file": "src/request-budget.ts", "marker": "calculateRequestBudget"},
        {"file": "src/compaction-pressure.ts", "marker": "installCopilotCompactionPressure"},
        {"file": "src/pre-step-pressure.ts", "marker": "installCopilotPreStepPressure"},
        {"file": "src/pre-step-pressure.ts", "marker": "selection.pending !== null"},
        {"file": "src/agent-compaction.ts", "marker": "presets.serviceFor(agent, 'compaction')"},
        {"file": "src/preview-route.ts", "marker": "COPILOT_CONTEXT_BUDGET_EXCEEDED"},
        {"file": "src/preview-provider.ts", "marker": "inspectRequest"}
      ],
      "tests": [
        {"file": "tests/preview-route.spec.ts", "name": "rejects independent input overflow before model wire, prepared=%s"},
        {"file": "tests/compaction-pressure.spec.ts", "name": "does not substitute a global engine when the bound preset has none"},
        {"file": "tests/pre-step-pressure.spec.ts", "name": "skips pending selection instead of compressing against the previous route"},
        {"file": "tests/fixtures/compaction-pressure-core.fixture.ts", "name": "prevents continuing-step pressure attempts while retaining complete native turn usage, preStep=%s"},
        {"file": "tests/auto-model-host.spec.ts", "name": "uses owning preset recovery availability (%s) for Auto diagnostics"},
        {"file": "tests/fixtures/scoped-compaction-core.fixture.ts", "name": "global pressure finds isolated preset recovery: %j"},
        {"file": "tests/preview-route.spec.ts", "name": "reserves the requested output separately from the independent prompt ceiling"},
        {"file": "tests/preview-route.spec.ts", "name": "uses supported low effort for compaction only without rewriting its output cap"},
        {"file": "tests/preview-route.spec.ts", "name": "refuses an already oversized manual summary without sending or truncating its history"},
        {"file": "tests/preview-route.spec.ts", "name": "keeps output truncation distinct from context overflow and successful summary output"},
        {"file": "tests/preview-route.spec.ts", "name": "isolates concurrent chat success from a rejected compaction admission"}
      ]
    },
    {
      "id": "opt-in-oversized-manual-compaction",
      "required": true,
      "evidenceScope": "synthetic-public-subclass-and-exact-tagged-source-no-live-inference",
      "sourceMarkers": [
        {"file": "src/manual-compaction-recovery.ts", "marker": "extends BasicCompactionEngine"},
        {"file": "src/manual-compaction-recovery.ts", "marker": "automaticRecovery: z.boolean().default(true)"},
        {"file": "src/manual-compaction-recovery.ts", "marker": "maxCalls: failedAttempt ? 15 : 16"},
        {"file": "src/manual-compaction-recovery.ts", "marker": "reduceCompactionInputLimit(input, inputLimit)"},
        {"file": "src/compaction-input-estimate.ts", "marker": "export function estimateCompactionInputBytes"},
        {"file": "src/manual-compaction-recovery.ts", "marker": "COPILOT_MANUAL_RECOVERY_"},
        {"file": "src/background-compaction.ts", "marker": "copilot-compact"},
        {"file": "src/compaction-replay.ts", "marker": "request.purpose !== 'compaction'"},
        {"file": "src/compaction-continuation.ts", "marker": "COPILOT_CONTINUATION_COMPACTION_BOUNDARY_UNAVAILABLE"},
        {"file": "src/compaction-continuation-ui.ts", "marker": "Compacting with visible history"},
        {"file": "src/compaction-continuation-ui.ts", "marker": "const successLifetimeMs = 8000"},
        {"file": "src/context-evidence-ui.ts", "marker": "presentation.dispose()"},
        {"file": "src/background-compaction.ts", "marker": "visible-history"},
        {"file": "src/background-compaction.ts", "marker": "this.jobs.wait(jobId"},
        {"file": "src/preview-route.ts", "marker": "recoveryLimits(modelId)"},
        {"file": "docs/manual-compaction-recovery.md", "marker": "separately selected"}
      ],
      "tests": [
        {"file": "tests/compaction-continuation-ui.spec.ts", "name": "expires eight seconds after first confirmed completion, not rerender, reread or remount"},
        {"file": "tests/compaction-continuation-ui.spec.ts", "name": "keeps unavailable distinct and dismissible without hiding a later failure"},
        {"file": "tests/manual-compaction-recovery.spec.ts", "name": "reduces an oversized balanced history with bounded complete calls and an unmarked aggregate audit"},
        {"file": "tests/compaction-input-estimate.spec.ts", "name": "avoids metadata-driven sixteen-call exhaustion without changing dispatched messages"},
        {"file": "tests/manual-compaction-recovery.spec.ts", "name": "rejects an indivisible span before dispatch and leaves recovery to native failure handling"},
        {"file": "tests/manual-compaction-recovery.spec.ts", "name": "rejects unmatched tool calls before dispatch instead of splitting a call and result"},
        {"file": "tests/background-compaction.spec.ts", "name": "acknowledges before completion and outlives a five-minute caller deadline"},
        {"file": "tests/compaction-replay.spec.ts", "name": "authorizes only the exact manual summary operation and preserves visible tool content"},
        {"file": "tests/session-continuation-host.spec.ts", "name": "applies persisted continuation before a native summary and reports only native replacement success"},
        {"file": "tests/fixtures/compaction-pressure-core.fixture.ts", "name": "persistent policy restores automatic replay-blocked compaction without a command, recovery engine=%s"},
        {"file": "tests/background-compaction.spec.ts", "name": "reports only allowlisted causes through native error wrappers"},
        {"file": "tests/fixtures/compaction-pressure-core.fixture.ts", "name": "recovers only an explicitly authorized manual job through one native transaction"},
        {"file": "tests/fixtures/compaction-pressure-core.fixture.ts", "name": "commits beyond the carrier deadline without a model wakeup and keeps status owner-scoped"},
        {"file": "tests/fixtures/compaction-pressure-core.fixture.ts", "name": "recovers oversized manual history with one native transaction and honest multi-call audit"},
        {"file": "tests/fixtures/compaction-pressure-core.fixture.ts", "name": "defaults automatic oversized recovery on without a manual command, enabled=%s"},
        {"file": "tests/fixtures/compaction-pressure-core.fixture.ts", "name": "escalates only a typed summary capacity failure once: %s"},
        {"file": "tests/preview-route.spec.ts", "name": "binds explicit summary capacity proof to its Agent rather than the current default"}
      ]
    },
    {
      "id": "account-driven-provider-metadata",
      "required": true,
      "activation": "validated-account-endpoints-and-capabilities",
      "sourceMarkers": [
        {"file": "src/account-model-catalog.ts", "marker": "normalizeAccountModelCatalog"},
        {"file": "src/account-model-catalog.ts", "marker": "supported_endpoints"},
        {"file": "src/account-model-catalog.ts", "marker": "maxInputTokens"},
        {"file": "src/account-model-catalog.ts", "marker": "DUPLICATE_CONFLICT"},
        {"file": "src/preview-provider.ts", "marker": "accountModelFromDescriptor"}
      ],
      "tests": [
        {"file": "tests/account-model-catalog.spec.ts", "name": "routes an unseen identifier using %s rather than its model name"},
        {"file": "tests/account-model-catalog.spec.ts", "name": "uses advertised Responses when an older local catalog says GPT-6 is Completions"},
        {"file": "tests/account-model-catalog.spec.ts", "name": "accepts new Gemini and Sol Fast IDs without adding model-specific rules"},
        {"file": "tests/account-model-catalog.spec.ts", "name": "prefers native API only when the server advertises the matching endpoint"},
        {"file": "tests/account-model-catalog.spec.ts", "name": "uses a caller-proven account ID only for an absent policy and records the evidence source"},
        {"file": "tests/account-model-catalog.spec.ts", "name": "preserves context, input and output limits as different facts"},
        {"file": "tests/account-model-catalog.spec.ts", "name": "deduplicates equal IDs but rejects all versions of a conflicting duplicate"},
        {"file": "tests/account-model-catalog.spec.ts", "name": "keeps only safe endpoint evidence and never extracts supplied URLs, headers, or secrets"},
        {"file": "tests/account-model-catalog.spec.ts", "name": "normalizes only owned data and freezes all nested public output"},
        {"file": "tests/account-model-catalog.spec.ts", "name": "keeps image support when valid document media types accompany image types"},
        {"file": "tests/account-model-catalog.spec.ts", "name": "keeps a text model available without claiming images when only document media types are explicit"}
      ]
    },
    {
      "id": "account-scoped-discovery-snapshot",
      "required": true,
      "activation": "bounded-account-freshness-with-display-only-stale-metadata",
      "sourceMarkers": [
        {"file": "src/account-model-source.ts", "marker": "createAccountModelSource"},
        {"file": "src/account-model-source.ts", "marker": "redirect: 'error'"},
        {"file": "src/account-model-source.ts", "marker": "assertAuthCurrent"},
        {"file": "src/account-model-source.ts", "marker": "ACCOUNT_MODEL_CATALOG_LIMITS.maxBytes"}
      ],
      "tests": [
        {"file": "tests/account-model-source.spec.ts", "name": "is lazy, uses exact trusted root GET with non-forwarding redirects, and freezes only public snapshot data"},
        {"file": "tests/account-model-source.spec.ts", "name": "coalesces force and ordinary callers while one request is in flight"},
        {"file": "tests/account-model-source.spec.ts", "name": "does not let a cancelled waiter abort another waiter"},
        {"file": "tests/account-model-source.spec.ts", "name": "cancels orphaned work when all waiters abort and does not publish a late result"},
        {"file": "tests/account-model-source.spec.ts", "name": "does not fall back to an old cached account after a forced refresh failure"},
        {"file": "tests/account-model-source.spec.ts", "name": "invalidate is network-free and an invalidated HTTP result cannot overwrite a newer load"},
        {"file": "tests/account-model-source.spec.ts", "name": "bounds timeout during %s even if the dependency ignores cancellation"},
        {"file": "tests/account-model-source.spec.ts", "name": "enforces cumulative UTF-8 byte limits rather than trusting content length"},
        {"file": "tests/account-model-source.spec.ts", "name": "rejects malformed UTF-8 and clears the reader without preserving response contents"},
        {"file": "tests/account-model-source.spec.ts", "name": "refuses sensitive header override %s"},
        {"file": "tests/account-model-source.spec.ts", "name": "defaults to a day-long metadata cache and a five-minute passive failure cooldown"},
        {"file": "tests/account-model-source.spec.ts", "name": "force bypasses the cooldown, concurrent callers coalesce, and invalidation resets it"},
        {"file": "tests/account-model-source.spec.ts", "name": "retains same-generation display metadata across TTL expiry, loading, and fetch failure without fresh reuse"}
      ]
    },
    {
      "id": "public-adapter-account-model-route",
      "required": true,
      "activation": "published-adapter-and-native-sdk",
      "sourceMarkers": [
        {"file": "src/preview-route.ts", "marker": "extends PiAiAdapter"},
        {"file": "src/preview-route.ts", "marker": "modelErrors: new Map<string, string>()"},
        {"file": "src/preview-route.ts", "marker": "ctx.llm.registerAdapter"},
        {"file": "src/preview-route.ts", "marker": "createAccountModelSource"},
        {"file": "src/model-exclusions.ts", "marker": "class ModelExclusionTurns"},
        {"file": "src/remote.ts", "marker": "githubCopilot.setModelExcluded"},
        {"file": "src/preview-provider.ts", "marker": "native.streamSimple"},
        {"file": "src/auto-assessment-evidence.ts", "marker": "SemanticAssessmentEvidenceSchema"},
        {"file": "src/auto-task-assessment.ts", "marker": "performance.now() >= deadline"},
        {"file": "src/request-body-timeout-marker.ts", "marker": "COPILOT_REQUEST_BODY_TIMEOUT"},
        {"file": "src/request-body-evidence.ts", "marker": "REQUEST_BODY_EVIDENCE_LIMITS"},
        {"file": "src/responses-request-compression.ts", "marker": "MAXIMUM_WORK_BYTES"},
        {"file": "src/responses-request-compression.ts", "marker": "satisfiesCompressionSavings"},
        {"file": "src/request-upload-evidence.ts", "marker": "createRequestUploadObserver"},
        {"file": "src/copilot-stream-liveness.ts", "marker": "COPILOT_STREAM_IDLE_TIMEOUT"},
        {"file": "src/preview-route.ts", "marker": "Math.min(idle * 2, 2_147_483_647)"},
        {"file": "src/response-error-body.ts", "marker": "readResponseErrorJson"},
        {"file": "src/pi-provider-bridge.ts", "marker": "PiStreamPublicCompatibility"}
      ],
      "tests": [
        {"file": "tests/responses-request-compression.spec.ts", "name": "losslessly gzips eligible JSON and sets exact HTTP encoding and length without mutating headers"},
        {"file": "tests/responses-request-compression.spec.ts", "name": "skips bodies above the compression work limit"},
        {"file": "tests/responses-request-compression.spec.ts", "name": "requires both the absolute and proportional savings thresholds"},
        {"file": "tests/config.spec.ts", "name": "keeps managed Responses request compression default-off and boolean-only"},
        {"file": "tests/preview-provider.spec.ts", "name": "preserves published-adapter JSON and usage across identity and gzip encoding"},
        {"file": "tests/preview-provider.spec.ts", "name": "keeps caller-owned Fetch unchanged and does not resend a gzip 415 response"},
        {"file": "tests/preview-provider.spec.ts", "name": "rechecks the request/account fence with both opt-ins and never dispatches revoked work"},
        {"file": "tests/preview-provider.spec.ts", "name": "keeps native %s transport when the option is enabled"},
        {"file": "tests/preview-provider.spec.ts", "name": "sends gzip with correct framing through Node Fetch"},
        {"file": "tests/preview-provider.spec.ts", "name": "keeps original JSON for replay-scope checks after gzip without retiring the account"},
        {"file": "tests/preview-provider.spec.ts", "name": "recompresses identical native JSON after HTTP 408 retries without an identity resend"},
        {"file": "tests/preview-route.spec.ts", "name": "reads compression policy when a prepared Responses call reaches lazy HTTP dispatch"},
        {"file": "tests/preview-route.spec.ts", "name": "does not let compressed wire bytes bypass native hard context admission"},
        {"file": "tests/request-body-timeout.spec.ts", "name": "distinguishes original JSON composition from compressed HTTP body bytes"},
        {"file": "tests/request-body-timeout.spec.ts", "name": "reports a skipped opt-in compression reason without changing identity diagnostics"},
        {"file": "tests/auto-task-assessment.spec.ts", "name": "rejects late results even before the scheduled timeout callback runs"},
        {"file": "tests/auto-task-assessment.spec.ts", "name": "aborts preparation at the monotonic deadline before an adapter can start"},
        {"file": "tests/preview-route.spec.ts", "name": "does not dispatch an auxiliary request when native preparation outlasts a delayed deadline timer"},
        {"file": "tests/preview-provider.spec.ts", "name": "checks the auxiliary deadline immediately before native %s Fetch and releases the lease"},
        {"file": "tests/auto-task-classifier.spec.ts", "name": "prefers advertised reasoning-off candidates without inferring latency or model-name capabilities"},
        {"file": "tests/auto-selection-explanation.spec.ts", "name": "distinguishes continuity and category pool from semantic model merit (%s)"},
        {"file": "tests/preview-provider.spec.ts", "name": "routes an unseen ID through published Core and native %s with Bearer auth"},
        {"file": "tests/preview-provider.spec.ts", "name": "takes protocol and independent input limits from descriptor evidence rather than the local GPT-6 catalog"},
        {"file": "tests/preview-provider.spec.ts", "name": "does not infer controls from a name or unfamiliar advertised effort labels"},
        {"file": "tests/preview-route.spec.ts", "name": "resolves and prepares a validated account model with the actual Core profile diagnostics contract"},
        {"file": "tests/inline/apply.spec.ts", "name": "delegates Anthropic in-band system authority before probing at position %s"},
        {"file": "tests/preview-route.spec.ts", "name": "discovers mixed and unseen account models without model-name routing rules"},
        {"file": "tests/preview-route.spec.ts", "name": "uses unmodified stock LlmRuntime preparation and leaves canonical model registration alone"},
        {"file": "tests/fixtures/model-exclusions-core.fixture.ts", "name": "keeps native tool steps in an admitted turn after exclusion and enforces exclusion on the next turn (%s)"},
        {"file": "tests/authorization-controller.spec.ts", "name": "answers a narrow single-model save without reading credentials or enumerating sessions"},
        {"file": "tests/model-preferences-card.spec.ts", "name": "keeps a real mounted row saving across equivalent parent snapshots and applies the strict result without rereading"},
        {"file": "tests/model-preferences-card.spec.ts", "name": "sends one CAS intent at a time and never sends a queued intent after an unconfirmed response"},
        {"file": "tests/model-preferences-card.spec.ts", "name": "cancels unsent row intents explicitly on a changed preference scope and ignores the late save"},
        {"file": "tests/preview-route.spec.ts", "name": "replays opaque reasoning and tool-call identities through the native adapter on a second turn"},
        {"file": "tests/preview-route.spec.ts", "name": "enriches only a verified 408 while preserving native failure classification and retry ownership"},
        {"file": "tests/preview-provider.spec.ts", "name": "observes verified %s timeout without changing bytes, Response, native retries or credential ownership"},
        {"file": "tests/request-body-timeout.spec.ts", "name": "bounds stalled response observation and gives cancellation priority"},
        {"file": "tests/request-upload-evidence.spec.ts", "name": "observes real Node Fetch without changing body, signal, Response, or installing a dispatcher"},
        {"file": "tests/request-upload-evidence.spec.ts", "name": "keeps simultaneous scopes independent and ignores foreign broadcasts"},
        {"file": "tests/preview-provider.spec.ts", "name": "records real local Fetch stages on a verified native timeout and disposes the observer on settlement"},
        {"file": "tests/auto-task-assessment.spec.ts", "name": "captures bounded phase evidence for a timed-out partial result without treating it as a validated task"},
        {"file": "tests/auto-task-evidence.spec.ts", "name": "captures monotonic auxiliary phases without text, accounting or late mutation"},
        {"file": "tests/request-body-evidence.spec.ts", "name": "measures a nine MiB native-style inline image without exposing or decoding it"},
        {"file": "tests/preview-provider.spec.ts", "name": "captures final %s callback bytes and dispatch-local header time before clone observation"},
        {"file": "tests/copilot-stream-liveness.spec.ts", "name": "does not count consumer think time as provider idle"},
        {"file": "tests/copilot-stream-adapter.spec.ts", "name": "reproduces native semantic timeout despite ongoing SSE bytes"},
        {"file": "tests/copilot-stream-adapter.spec.ts", "name": "allows real late output after the original semantic-idle boundary"},
        {"file": "tests/copilot-stream-adapter.spec.ts", "name": "retains a native hard semantic deadline for an endless heartbeat stream"},
        {"file": "tests/preview-route.spec.ts", "name": "restores byte-idle failures as TIMEOUT without adding a native wire attempt"},
        {"file": "tests/preview-route.spec.ts", "name": "excludes actual Core consumer think time despite eager SDK event forwarding"},
        {"file": "tests/pi-provider-bridge.spec.ts", "name": "preserves the stream object rather than copying or replacing its private queue"},
        {"file": "tests/pi-provider-bridge.spec.ts", "name": "passes the checked simple input through and rejects unsupported advanced entry without I/O"}
      ]
    },
    {
      "id": "managed-model-generation-and-lifetime",
      "required": true,
      "sourceMarkers": [
        {"file": "src/preview-route.ts", "marker": "COPILOT_PREVIEW_METADATA_STALE"},
        {"file": "src/preview-route.ts", "marker": "copilotEntitlementKey"},
        {"file": "src/preview-route.ts", "marker": "credentials/record-updated"},
        {"file": "src/preview-route.ts", "marker": "renewBeforeLease"},
        {"file": "src/account-model-auth.ts", "marker": "minOAuthValidityMs: ACCOUNT_MODEL_AUTH_MIN_VALIDITY_MS"}
      ],
      "tests": [
        {"file": "tests/preview-route.spec.ts", "name": "renews warm metadata before native OAuth refresh invalidates a new %s lease"},
        {"file": "tests/preview-route.spec.ts", "name": "applies the warm renewal boundary with %i milliseconds remaining"},
        {"file": "tests/preview-route.spec.ts", "name": "joins a warm renewal flight across catalog and model callers"},
        {"file": "tests/preview-route.spec.ts", "name": "joins an existing metadata HTTP flight when token validity crosses the renewal threshold"},
        {"file": "tests/preview-route.spec.ts", "name": "bounds a warm renewal %s without model wire or cooldown bypass"},
        {"file": "tests/preview-route.spec.ts", "name": "persists warm-refresh entitlement removal without dispatching the formerly allowed model"},
        {"file": "tests/preview-route.spec.ts", "name": "does not rebind or replay an old prepared lease after it crosses the native refresh window"},
        {"file": "tests/preview-route.spec.ts", "name": "requires rediscovery when an already prepared token rotates without a credential notification"},
        {"file": "tests/preview-route.spec.ts", "name": "rejects silent same-token entitlement removal before dispatch and requires rediscovery"},
        {"file": "tests/preview-route.spec.ts", "name": "does not serve expired catalog facts or prepared model snapshots"},
        {"file": "tests/preview-route.spec.ts", "name": "invalidates prepared model metadata on an explicit force-discovery without changing the selected ID"},
        {"file": "tests/preview-route.spec.ts", "name": "cancels an in-flight SDK request on disposal without deleting the shared grant"},
        {"file": "tests/preview-route.spec.ts", "name": "allows Core retry middleware to re-dispatch the same prepared adapter snapshot"},
        {"file": "tests/preview-route.spec.ts", "name": "does not let a retry cross to another account after its first attempt"},
        {"file": "tests/preview-route.spec.ts", "name": "refuses a duplicate route through the public registry without taking over the existing adapter"},
        {"file": "tests/preview-route.spec.ts", "name": "withdraws only its own route and refuses an already-prepared call after disposal"}
      ]
    },
    {
      "id": "managed-responses-replay-scope-isolation",
      "required": true,
      "scope": "managed-github-copilot-preview-responses-only",
      "liveEndpointAcceptance": "not-verified",
      "classificationOnlyFollowup": true,
      "recognizedUncoded401Messages": [
        "input item ID does not belong to this connection",
        "input item does not belong to this connection"
      ],
      "sourceMarkers": [
        {"file": "src/responses-replay-compat.ts", "marker": "normalizeCopilotResponsesPayload"},
        {"file": "src/responses-replay-compat.ts", "marker": "ResponsesRetryReplay"},
        {"file": "src/responses-replay-compat.ts", "marker": "isCopilotInputItemScopeError"},
        {"file": "src/responses-replay-compat.ts", "marker": "input item does not belong to this connection"},
        {"file": "src/preview-provider.ts", "marker": "onPayload"},
        {"file": "src/preview-route.ts", "marker": "onReplayFailure(error)"}
      ],
      "tests": [
        {"file": "tests/preview-provider.spec.ts", "name": "normalizes only wire item IDs after native serialization while preserving durable replay and tool pairing"},
        {"file": "tests/preview-provider.spec.ts", "name": "sends identical normalized bytes after two HTTP 408s (empty reasoning: %s)"},
        {"file": "tests/preview-provider.spec.ts", "name": "omits an empty SDK reasoning signature while preserving opaque reasoning and tool pairing"},
        {"file": "tests/responses-replay-compat.spec.ts", "name": "omits only explicitly empty completed reasoning shells without changing history or tool pairing"},
        {"file": "tests/responses-replay-compat.spec.ts", "name": "does not mistake partial, opaque, nonempty or unknown reasoning data for an empty shell"},
        {"file": "tests/responses-replay-compat.spec.ts", "name": "reuses omitted empty shells only from the exact HTTP-408 snapshot"},
        {"file": "tests/responses-replay-compat.spec.ts", "name": "refuses a new step, session, signal, cold resume, stale entry and concurrent requests"},
        {"file": "tests/preview-route.spec.ts", "name": "clears only the matching Session retry cache on %s across fresh Core preparations"},
        {"file": "tests/preview-route.spec.ts", "name": "classifies \"$message\" in a $envelope Responses 401 locally and reuses the same credential without discovery or refresh"},
        {"file": "tests/preview-route.spec.ts", "name": "does not abort a parallel native request when another dispatch receives a replay-scope 401: %s"},
        {"file": "tests/preview-route.spec.ts", "name": "does not retain a replay-scope failure across independent dispatches of one native prepared lease: %s"}
      ]
    },
    {
      "id": "managed-session-visible-history-continuation",
      "required": true,
      "scope": "managed-responses-exact-session-turn-and-signal",
      "liveEndpointAcceptance": "not-claimed",
      "sourceMarkers": [
        {"file": "src/session-continuation.ts", "marker": "class SessionContinuationTurn"},
        {"file": "src/session-continuation.ts", "marker": "COPILOT_CONTINUATION_REASONING_WORK_LIMIT"},
        {"file": "src/session-continuation-host.ts", "marker": "path: ['continuationDefaultHistory']"},
        {"file": "src/session-continuation-host.ts", "marker": "COPILOT_CONTINUATION_TURN_BOUNDARY_UNAVAILABLE"},
        {"file": "src/session-continuation-remote.ts", "marker": "authorizeNext"},
        {"file": "src/copilot-usage-ui.ts", "marker": "useSessionContinuationSwitch"},
        {"file": "src/account-dropdown.ts", "marker": "data-copilot-dropdown-option"},
        {"file": "docs/mockups/copilot-account-dropdown.html", "marker": "Approved Dropdown Mock"},
        {"file": "docs/account-management-experience.md", "marker": "All accounts, quota"}
      ],
      "tests": [
        {"file": "tests/account-dropdown.spec.ts", "name": "supports arrows, Home, End and Escape without closing the containing Chat panel"},
        {"file": "tests/session-continuation.spec.ts", "name": "continues A-B-B-A by omitting pre-turn reasoning while retaining new tool-loop reasoning"},
        {"file": "tests/session-continuation.spec.ts", "name": "does not traverse or serialize ordinary contents when a request exceeds 16 MiB"},
        {"file": "tests/session-continuation.spec.ts", "name": "omits large historical ciphertext without a whole-request byte cap"},
        {"file": "tests/session-continuation.spec.ts", "name": "yields during ciphertext hashing and rejects revocation without establishing a baseline"},
        {"file": "tests/fixtures/compaction-pressure-core.fixture.ts", "name": "compacts and rebuilds an Auto request with large historical continuation reasoning, continuing=%s"},
        {"file": "tests/replay-recovery-ui.spec.ts", "name": "enables only persistent Session continuation after loss disclosure, without legacy authorization or sending"},
        {"file": "tests/replay-recovery-ui.spec.ts", "name": "does not reauthorize an already enabled policy or change it when failure evidence expires"},
        {"file": "tests/session-continuation.spec.ts", "name": "does not replay baseline ciphertext after its ID or embedded summary changes"},
        {"file": "tests/session-continuation-host.spec.ts", "name": "captures birth-time defaults and consumes one-turn consent"},
        {"file": "tests/session-continuation-ui.spec.ts", "name": "requires off-switch choice: %s"},
        {"file": "tests/preview-route.spec.ts", "name": "filters persistent Session consent through the published adapter on successive turns without history writes"},
        {"file": "tests/fixtures/remote-core.fixture.ts", "name": "binds persistent Session continuation through actual Client and %s Host gateways"}
      ]
    },
    {
      "id": "managed-explicit-replay-recovery",
      "required": true,
      "scope": "managed-responses-initiating-session-only-explicit-loss-confirmation",
      "liveEndpointAcceptance": "diagnostic-ablation-only-not-installed-feature-acceptance",
      "sourceMarkers": [
        {"file": "src/replay-recovery.ts", "marker": "class ReplayRecoveryStore"},
        {"file": "src/replay-recovery-host.ts", "marker": "extends TypertRemoteService"},
        {"file": "src/replay-recovery-host.ts", "marker": "COPILOT_REPLAY_RECOVERY_TURN_ACTIVE"},
        {"file": "src/replay-recovery-remote.ts", "marker": "githubCopilotReplayRecovery.setEnabled"},
        {"file": "src/replay-recovery-remote.ts", "marker": "githubCopilotReplayRecovery.authorize"},
        {"file": "src/replay-recovery-ui.ts", "marker": "recovery: true"},
        {"file": "src/session-continuation-ui.ts", "marker": "Enable visible-history continuation"}
      ],
      "tests": [
        {"file": "tests/replay-recovery.spec.ts", "name": "keeps default replay and requires a revision-bound confirmation"},
        {"file": "tests/replay-recovery.spec.ts", "name": "preserves source, fresh reasoning, tools, other models and other owners"},
        {"file": "tests/replay-recovery-host.spec.ts", "name": "requires the native initiating session and signal, rejects active-turn writes and revokes late requests"},
        {"file": "tests/replay-recovery.spec.ts", "name": "admits only the next matching native turn, including its steps and retries"},
        {"file": "tests/replay-recovery-ui.spec.ts", "name": "enables only persistent Session continuation after loss disclosure, without legacy authorization or sending"},
        {"file": "tests/replay-recovery-ui.spec.ts", "name": "is absent normally, reads on settled turns without polling and resets dismissal only for new evidence"},
        {"file": "tests/preview-route.spec.ts", "name": "offers exact failed replay only to its initiating session and recovers after explicit confirmation"},
        {"file": "tests/fixtures/remote-core.fixture.ts", "name": "binds explicit replay recovery through native Client and %s Host gateways"}
      ]
    },
    {
      "id": "managed-http-auth-rejection-recovery",
      "required": true,
      "sourceMarkers": [
        {"file": "src/preview-provider.ts", "marker": "response.status === 401"},
        {"file": "src/preview-route.ts", "marker": "COPILOT_PREVIEW_AUTH_RECOVERY_COOLDOWN"},
        {"file": "src/account-model-auth.ts", "marker": "renewRejectedCredential"},
        {"file": "src/account-model-auth.ts", "marker": "COPILOT_ACCOUNT_TOKEN_REJECTED"}
      ],
      "tests": [
        {"file": "tests/preview-route.spec.ts", "name": "uses fresh OAuth after sign-out and %s sign-in with the same conversation history"},
        {"file": "tests/preview-route.spec.ts", "name": "handles actual HTTP %i without replay and renews only a rejected token on the next request"},
        {"file": "tests/preview-route.spec.ts", "name": "shares rejected-token renewal across concurrent new callers without replaying failed wires"},
        {"file": "tests/preview-route.spec.ts", "name": "bounds repeated 401 recovery after a %s native renewal"},
        {"file": "tests/preview-route.spec.ts", "name": "ignores a late HTTP 401 after the current %s changes"},
        {"file": "tests/preview-route.spec.ts", "name": "ignores an old HTTP 401 after source publication but before the owner adopts the new snapshot"},
        {"file": "tests/account-model-auth.spec.ts", "name": "does not persist a projected expiration when rejected-token renewal fails"},
        {"file": "tests/account-model-auth.spec.ts", "name": "does not expire or refresh a newer same-account token observed under the record lock"}
      ]
    },
    {
      "id": "account-discovery-native-oauth",
      "required": true,
      "sourceMarkers": [
        {"file": "src/account-model-auth.ts", "marker": "models.getAuth(GITHUB_COPILOT_PROVIDER_ID"},
        {"file": "src/account-model-auth.ts", "marker": "auth: { oauth: guardedOAuth }"},
        {"file": "src/account-model-auth.ts", "marker": "trustedGitHubCopilotBaseUrl"}
      ],
      "tests": [
        {"file": "tests/account-model-auth.spec.ts", "name": "resolves provider OAuth without a model catalog entry or environment fallback"},
        {"file": "tests/account-model-auth.spec.ts", "name": "refreshes through native Models and persists only the canonical credential"},
        {"file": "tests/account-model-auth.spec.ts", "name": "rejects account replacement during refresh without overwriting the replacement"},
        {"file": "tests/account-model-auth.spec.ts", "name": "validates credential-specific Enterprise endpoints and rejects token-controlled foreign origins"},
        {"file": "tests/account-model-auth.spec.ts", "name": "sanitizes credential backend failures and keeps account identity independent of token rotation"}
      ]
    },
    {
      "id": "managed-auto-review-temperature-override",
      "required": true,
      "sourceMarkers": [
        {"file": "src/config.ts", "marker": "responsesOmitTemperature: z.boolean().default(false)"},
        {"file": "src/preview-provider.ts", "marker": "guard.responsesOmitTemperature === true"},
        {"file": "src/index.ts", "marker": "ctx.effect(() => installAutoReviewSampling(ctx))"},
        {"file": "src/auto-review-sampling.ts", "marker": "module.apply === fiber.runtime.callback"},
        {"file": "vitest.auto-review-published.config.ts", "marker": "passWithNoTests: false"},
        {"file": "scripts/verify-tagged-core.mjs", "marker": "tests/fixtures/auto-review-copilot-core.fixture.ts"}
      ],
      "tests": [
        {"file": "tests/config.spec.ts", "name": "keeps managed Responses temperature omission default-off and boolean-only"},
        {"file": "tests/preview-provider.spec.ts", "name": "applies explicit Responses omission=%s independently of thinking metadata %j"},
        {"file": "tests/preview-provider.spec.ts", "name": "preserves default Responses temperature regardless of thinking metadata %j"},
        {"file": "tests/preview-route.spec.ts", "name": "reads temperature omission from dynamic config at lazy native stream dispatch"},
        {"file": "tests/fixtures/auto-review-copilot-core.fixture.ts", "name": "omits temperature with explicit opt-in without weakening the %s verdict boundary"},
        {"file": "tests/fixtures/auto-review-copilot-core.fixture.ts", "name": "activates reviewer-only sampling through the actual plugin Host entry"},
        {"file": "tests/fixtures/auto-review-copilot-core.fixture.ts", "name": "uses the native initiator and frozen Session account without a reviewer sessionId"},
        {"file": "tests/loader-composition.spec.ts", "name": "starts and disposes without an optional native reviewer package or package resolver"}
      ]
    },
    {
      "id": "responses-public-reasoning-and-safe-replay-delegation",
      "required": true,
      "sourceMarkers": [
        {"file": "src/wire.ts", "marker": "response.reasoning_summary_text.delta"},
        {"file": "src/responses-reasoning.ts", "marker": "request.reasoningEffort ?? profile?.reasoning"},
        {"file": "src/serialize.ts", "marker": "reasoning: { effort: reasoning.effort, summary: reasoning.summary }"},
        {"file": "src/serialize.ts", "marker": "message.source.replayState"},
        {"file": "src/index.ts", "marker": "hasResponsesReplayContext(request.messages)"}
      ],
      "tests": [
        {"file": "tests/inline/apply.spec.ts", "name": "transmits the selected effort and preserves the returned public summary"},
        {"file": "tests/inline/apply.spec.ts", "name": "keeps preview conversations on their registered native adapter before any probe"},
        {"file": "tests/inline/apply.spec.ts", "name": "delegates opaque assistant replay state without serializing its fields"},
        {"file": "tests/inline/serialize.spec.ts", "name": "refuses the actual Core source.replayState location without opening its payload"},
        {"file": "tests/responses-reasoning.spec.ts", "name": "honors request effort before the profile default and asks for a public summary"},
        {"file": "tests/responses-reasoning.spec.ts", "name": "does not force a reasoning mode without a selection"},
        {"file": "tests/responses-reasoning.spec.ts", "name": "preserves the Core off omission rather than claiming to disable server reasoning"},
        {"file": "tests/preview-provider.spec.ts", "name": "does not synthesize none or disabled thinking by default for %s"},
        {"file": "tests/preview-route.spec.ts", "name": "preserves the native enabled reasoning setting %s and summary request"}
      ]
    },
    {
      "id": "replay-safe-copilot-reasoning-presentation",
      "required": true,
      "activation": "optional-guarded-client-seam",
      "sourceMarkers": [
        {"file": "src/client.ts", "marker": "ctx.inject(['uiConversation', 'slots']"},
        {"file": "src/reasoning-presentation.ts", "marker": "projectReasoningPresentation"},
        {"file": "src/reasoning-presentation.ts", "marker": "github-copilot-assistant-origin"}
      ],
      "tests": [
        {"file": "tests/reasoning-presentation.spec.ts", "name": "removes fifteen empty rows without reading or changing encrypted durable replay material"},
        {"file": "tests/reasoning-presentation.spec.ts", "name": "reconstructs cold/prepended history without step/start and never borrows a current route"},
        {"file": "tests/reasoning-presentation.spec.ts", "name": "retires on any third-party override conflict and resumes only when safe"},
        {"file": "tests/client.spec.ts", "name": "does not delay authorization while the optional reasoning presentation waits for Core services"},
        {"file": "tests/fixtures/reasoning-presentation-core.fixture.ts", "name": "renders answers and public summaries without the fifteen empty native Think rows"}
      ]
    },
    {
      "id": "client-module-loader-handoff",
      "required": true,
      "sourceMarkers": [
        {"file": "tsdown.config.ts", "marker": "window.__ModuleLoader__.load"},
        {"file": "tsdown.config.ts", "marker": "return module.exports"}
      ],
      "tests": [
        {"file": "tests/client-bundle.spec.ts", "name": "hands off the built client with the exact plugin id and injected require"},
        {"file": "tests/client-bundle.spec.ts", "name": "materializes the built client apply and inject exports"}
      ]
    },
    {
      "id": "strict-remote-result-codecs",
      "required": true,
      "sourceMarkers": [
        {"file": "src/remote.ts", "marker": "dsh-github-copilot#GitHubCopilotAuthorizationView"},
        {"file": "src/remote.ts", "marker": "strictRemoteCodec"},
        {"file": "src/remote-codec.ts", "marker": "mode: 'strict' as const, typeSymbol, schema, create: (): Schema => schema"},
        {"file": "src/remote.ts", "marker": "accountModels: z.object"}
      ],
      "tests": [
        {"file": "tests/client-bundle.spec.ts", "name": "mounts strict Host result codecs through the published rc.1 client carrier"},
        {"file": "tests/account-model-remote.spec.ts", "name": "registers %s with the same strict safe authorization view codec"},
        {"file": "tests/account-model-remote.spec.ts", "name": "rejects private or unrequested discovery field %s"},
        {"file": "tests/account-model-remote.spec.ts", "name": "rejects secret-bearing model entries and oversized model lists"},
        {"file": "tests/migration-status.spec.ts", "name": "keeps noargs Remote migration evidence separate and ordinary status unchanged"},
        {"file": "tests/migration-status.spec.ts", "name": "uses the real public Session projection registry for pending versus old request headers"},
        {"file": "tests/migration-status.spec.ts", "name": "reads only named public leaves, not private titles history credentials or settings"}
      ]
    },
    {
      "id": "authorization-service-bootstrap",
      "required": true,
      "sourceMarkers": [
        {"file": "src/index.ts", "marker": "ctx.get('authorization', false)"},
        {"file": "src/index.ts", "marker": "ctx.plugin(AuthorizationService)"},
        {"file": "src/index.ts", "marker": "ctx.inject(integrationInject"}
      ],
      "tests": [
        {"file": "tests/loader-composition.spec.ts", "name": "bootstraps authorization in the rc.2 web profile before activating the integration"},
        {"file": "tests/loader-composition.spec.ts", "name": "reuses the rc.1 authorization service without duplicate registration"}
      ]
    },
    {
      "id": "models-provider-card-authorization",
      "required": true,
      "sourceMarkers": [
        {"file": "src/client.ts", "marker": "settings.models.provider-card"},
        {"file": "src/client.ts", "marker": "copyAuthorizationCode"},
        {"file": "src/client.ts", "marker": "data-dsh-github-copilot-device-code"},
        {"file": "src/external-link.ts", "marker": "externalLinkTarget"},
        {"file": "src/client.ts", "marker": "data-dsh-github-copilot-verification-url"},
        {"file": "src/authorization-controller.ts", "marker": "GitHubCopilotAuthorizationController"},
        {"file": "src/authorization-controller.ts", "marker": "INTERACTION_NOTICE_OBSERVED"}
      ],
      "tests": [
        {"file": "tests/client.spec.ts", "name": "exposes a device code only while authorization is in flight"},
        {"file": "tests/client.spec.ts", "name": "renders the device code prominently with an explicit copy action"},
        {"file": "tests/client.spec.ts", "name": "selects the supported desktop navigation handoff without opening during render: %j"},
        {"file": "tests/client-bundle.spec.ts", "name": "renders the built verification handoff and clears expired URLs (desktop: %s)"},
        {"file": "tests/compact-account.spec.ts", "name": "omits compatibility guidance even with Manage open: $phase"},
        {"file": "tests/compact-account.spec.ts", "name": "retains explicit legacy repair without the removed compatibility disclosure"},
        {"file": "tests/client.spec.ts", "name": "announces successful and failed copy outcomes accessibly"},
        {"file": "tests/client.spec.ts", "name": "copies the exact one-time code through the supplied clipboard writer"},
        {"file": "tests/client.spec.ts", "name": "mounts its Remote contribution and registers the rc.1 provider-card seat"},
        {"file": "tests/authorization-controller.spec.ts", "name": "signs in through the built-in flow without recreating a canonical profile"},
        {"file": "tests/authorization-controller.spec.ts", "name": "clears the one-time device code immediately when sign-in is cancelled"},
        {"file": "tests/authorization-controller.spec.ts", "name": "reports only the safe begin-stage diagnostic and never logs rejected values"},
        {"file": "tests/authorization-controller.spec.ts", "name": "reports the latest observed milestone for a %s rejection"},
        {"file": "tests/authorization-controller.spec.ts", "name": "does not misreport a synthetic credential-commit rejection as an observed commit"},
        {"file": "tests/authorization-controller.spec.ts", "name": "clears the ephemeral authorization milestone after cancellation and success"}
      ]
    },
    {
      "id": "canonical-owner-preservation",
      "required": true,
      "sourceMarkers": [
        {"file": "src/authorization-controller.ts", "marker": "Existing Core/user profiles keep"},
        {"file": "src/authorization-controller.ts", "marker": "path: ['providers', GITHUB_COPILOT_PROVIDER_ID, 'compat', 'supportsStrictMode']"}
      ],
      "tests": [
        {"file": "tests/authorization-controller.spec.ts", "name": "preserves canonical models and all unrelated profile fields instead of projecting the companion catalog"},
        {"file": "tests/authorization-controller.spec.ts", "name": "keeps a missing canonical profile intentionally absent for new account models"},
        {"file": "tests/authorization-controller.spec.ts", "name": "does not reorder or replace canonical models when account IDs are duplicated or reordered"},
        {"file": "tests/authorization-controller.spec.ts", "name": "does not add or remove canonical models based on a conflicting local GPT-6 entry"},
        {"file": "tests/authorization-controller.spec.ts", "name": "does not judge a user route protocol using another catalog copy"},
        {"file": "tests/authorization-controller.spec.ts", "name": "signs out by deleting only the llm-pi-ai Copilot record and keeps the route profile"}
      ]
    },
    {
      "id": "copilot-optional-tool-arguments",
      "required": true,
      "sourceMarkers": [
        {"file": "src/tool-schema-compat.ts", "marker": "assembly.variables.provider !== GITHUB_COPILOT_PROVIDER_ID"},
        {"file": "src/tool-schema-compat.ts", "marker": "ESCALATION_FIELDS"},
        {"file": "src/tool-schema-compat.ts", "marker": "GOAL_UPDATE_TOOL_NAME"},
        {"file": "scripts/verify-upstream-baseline.mjs", "marker": "baseline.strictModeCompat === 'route-switch'"}
      ],
      "tests": [
        {"file": "tests/tool-schema-compat.spec.ts", "name": "removes escalation properties and required entries only for Copilot"},
        {"file": "tests/tool-schema-compat.spec.ts", "name": "turns update_goal into action-specific schemas only for Copilot"},
        {"file": "tests/tool-schema-compat.spec.ts", "name": "preserves every schema for non-Copilot providers"},
        {"file": "tests/tool-schema-compat.spec.ts", "name": "filters a real Cordis waterfall after model selection supplies the provider"},
        {"file": "tests/authorization-controller.spec.ts", "name": "preserves configured Anthropic and OpenAI models while repairing only strict mode"},
        {"file": "tests/fixtures/controlled-core-per-model-api.fixture.ts", "name": "applies route strict-mode compatibility only to supported model protocols"}
      ]
    },
    {
      "id": "selected-account-route-protocol-facts",
      "required": true,
      "sourceMarkers": [
        {"file": "src/current-provider.ts", "marker": "routeFacts"},
        {"file": "src/preview-route.ts", "marker": "source.readSnapshot()"},
        {"file": "src/preview-provider.ts", "marker": "api: descriptor.api"}
      ],
      "tests": [
        {"file": "tests/current-provider.spec.ts", "name": "uses the owning account snapshot for an arbitrary new model on %s"},
        {"file": "tests/current-provider.spec.ts", "name": "does not fall back to the local GPT-6 catalog when account evidence expires"},
        {"file": "tests/current-provider.spec.ts", "name": "copies only protocol and endpoint leaves without exposing private snapshot fields"},
        {"file": "tests/current-provider.spec.ts", "name": "does not claim an unmounted route belongs to the plugin"}
      ]
    },
    {
      "id": "existing-grant-legacy-profile-repair",
      "required": true,
      "sourceMarkers": [
        {"file": "src/index.ts", "marker": "ensureGitHubCopilotProviderProfile(ctx)"},
        {"file": "src/authorization-controller.ts", "marker": "validateGrant(record)"},
        {"file": "src/authorization-controller.ts", "marker": "providerSupportsStrictMode"}
      ],
      "tests": [
        {"file": "tests/loader-composition.spec.ts", "name": "repairs an existing valid Copilot grant during Host startup"},
        {"file": "tests/authorization-controller.spec.ts", "name": "repairs a pre-existing grant with an empty Copilot route"},
        {"file": "tests/authorization-controller.spec.ts", "name": "is idempotent when the existing resolved Copilot route matches the account catalog"},
        {"file": "tests/authorization-controller.spec.ts", "name": "does not install global protocols or headers for new account models"}
      ]
    },
    {
      "id": "read-only-status-and-explicit-discovery",
      "required": true,
      "sourceMarkers": [
        {"file": "src/authorization-controller.ts", "marker": "accountModelsView"},
        {"file": "src/authorization-controller.ts", "marker": "async discoverModels()"},
        {"file": "src/remote.ts", "marker": "'status', 'reconcile', 'discoverModels', 'ensureModels', 'start', 'cancel', 'signOut'"}
      ],
      "tests": [
        {"file": "tests/authorization-controller.spec.ts", "name": "reads status repeatedly without repairing, authorizing or making network calls"},
        {"file": "tests/authorization-controller.spec.ts", "name": "exposes only owned model presentation leaves and never discovers during status"},
        {"file": "tests/authorization-controller.spec.ts", "name": "discovers account models only on an explicit action without changing selection or settings"},
        {"file": "tests/authorization-controller.spec.ts", "name": "keeps discovery unavailable or failed separate from sign-in and sanitizes failures"},
        {"file": "tests/client.spec.ts", "name": "discovers account models only on a click and deduplicates clicks while busy"},
        {"file": "tests/client.spec.ts", "name": "does not poll or automatically rediscover a loading server snapshot"},
        {"file": "tests/client.spec.ts", "name": "does not let a previous Remote overwrite a newly mounted discovery result"}
      ]
    },
    {
      "id": "credential-bound-lazy-search-proof",
      "required": true,
      "sourceMarkers": [
        {"file": "src/index.ts", "marker": "credentials/record-updated"},
        {"file": "src/index.ts", "marker": "invalidatePlans"},
        {"file": "src/probe.ts", "marker": "signal?: AbortSignal"}
      ],
      "tests": [
        {"file": "tests/inline/apply.spec.ts", "name": "retries a cached missing-grant failure on a same-route credential event"},
        {"file": "tests/inline/apply.spec.ts", "name": "evicts a successful proof for revocation/account changes and coalesces event bursts"},
        {"file": "tests/inline/apply.spec.ts", "name": "ignores unrelated record updates and retains the verified proof"},
        {"file": "tests/inline/apply.spec.ts", "name": "rejects account replacement during search auth after a successful proof"},
        {"file": "tests/inline/apply.spec.ts", "name": "makes no network calls at attach, availability checks, settings or credential events"},
        {"file": "tests/inline/apply.spec.ts", "name": "removes its Fiber listener and makes retained entry points inert on disposal"}
      ]
    },
    {
      "id": "legacy-route-conflict-protection",
      "required": true,
      "activation": "legacy-restoration-only",
      "sourceMarkers": [
        {"file": "src/route-ownership.ts", "marker": "postimage"},
        {"file": "src/route-ownership.ts", "marker": "TEMPORARY_ROUTE_LEGACY_CONFLICT"},
        {"file": "src/route-ownership.ts", "marker": "sourceEpoch"},
        {"file": "src/route-ownership.ts", "marker": "redactSecrets: true"}
      ],
      "tests": [
        {"file": "tests/route-ownership.spec.ts", "name": "compares raw model ownership despite schema-materialized defaults"},
        {"file": "tests/route-ownership.spec.ts", "name": "refuses unsafe preimage extras without copying sensitive data"},
        {"file": "tests/route-ownership.spec.ts", "name": "uses namespace revisions to reject races after ownership backup commits"},
        {"file": "tests/route-ownership.spec.ts", "name": "does not guess ownership for legacy or malformed backups"},
        {"file": "tests/route-ownership.spec.ts", "name": "fails closed on prepared activation retry without registration lifetime evidence"},
        {"file": "tests/route-ownership.spec.ts", "name": "read-only planning reports ready only after reconciliation"}
      ]
    },
    {
      "id": "legacy-global-override-restoration",
      "required": true,
      "activation": "legacy-restoration-only",
      "newGlobalProtocolOverrides": false,
      "sourceMarkers": [
        {"file": "src/authorization-controller.ts", "marker": "target: { ...backup.preimage }"},
        {"file": "src/authorization-controller.ts", "marker": "op: 'unset'"},
        {"file": "src/config.ts", "marker": "temporaryRouteBackup: z.string().hidden()"},
        {"file": "src/route-ownership.ts", "marker": "wholeProfileOwned"}
      ],
      "tests": [
        {"file": "tests/authorization-controller.spec.ts", "name": "restores the owned canonical override without creating another ownership cycle"},
        {"file": "tests/authorization-controller.spec.ts", "name": "refuses a legacy prepared activation without replaying its route write"},
        {"file": "tests/authorization-controller.spec.ts", "name": "retries backup cleanup after route restoration commits first"},
        {"file": "tests/authorization-controller.spec.ts", "name": "rejects malformed temporary route backup leaves before replay"},
        {"file": "tests/route-ownership.spec.ts", "name": "restores a historical bounded journal without copying unrelated sensitive leaves"},
        {"file": "tests/route-ownership.spec.ts", "name": "retains a user-edited formerly owned header during restoration"}
      ]
    },
    {
      "id": "shared-copilot-credential-refresh",
      "required": true,
      "sourceMarkers": [
        {"file": "src/copilot-auth.ts", "marker": "models.getAuth('github-copilot')"},
        {"file": "src/copilot-auth.ts", "marker": "GITHUB_COPILOT_CREDENTIAL_KEY"},
        {"file": "src/index.ts", "marker": "createGitHubCopilotTokenResolver(ctx, async () =>"}
      ],
      "tests": [
        {"file": "tests/copilot-auth.spec.ts", "name": "refreshes the llm-pi-ai grant in-place and returns the Copilot API token"},
        {"file": "tests/copilot-auth.spec.ts", "name": "does not overwrite request-owned headers with local model metadata"},
        {"file": "tests/copilot-auth.spec.ts", "name": "rejects logical provider mismatches before touching shared credential storage"},
        {"file": "tests/copilot-auth.spec.ts", "name": "preserves the canonical grant when a serialized modification declines to change it"},
        {"file": "tests/copilot-auth.spec.ts", "name": "rechecks model availability after refreshing the credential"},
        {"file": "tests/preview-route.spec.ts", "name": "serializes canonical and preview refresh through the same credential key"},
        {"file": "tests/preview-route.spec.ts", "name": "persists token-refresh revocation after preparation but never authorizes it from the earlier live catalog"}
      ]
    },
    {
      "id": "strict-json-oauth-grant-normalization",
      "required": true,
      "sourceMarkers": [
        {"file": "src/copilot-grant.ts", "marker": "normalizeGitHubCopilotOAuthCredential"},
        {"file": "src/copilot-grant.ts", "marker": "Number.isFinite(expires)"}
      ],
      "tests": [
        {"file": "tests/copilot-auth.spec.ts", "name": "normalizes cross-module OAuth grants for a strict JSON credential store"},
        {"file": "tests/copilot-auth.spec.ts", "name": "rejects malformed required OAuth fields without exposing their values"},
        {"file": "tests/copilot-auth.spec.ts", "name": "rejects nonfinite OAuth expiry timestamps"},
        {"file": "tests/copilot-auth.spec.ts", "name": "rejects invalid OAuth model id collections"},
        {"file": "tests/copilot-auth.spec.ts", "name": "requires a non-empty enterprise URL when the OAuth field is present"}
      ]
    },
    {
      "id": "direct-provider-hosted-search",
      "required": true,
      "sourceMarkers": [
        {"file": "src/plan.ts", "marker": "route.provider !== 'github-copilot'"},
        {"file": "src/index.ts", "marker": "route.model !== request.model"},
        {"file": "src/index.ts", "marker": "resolveRequestAuth"},
        {"file": "src/copilot-request.ts", "marker": "Openai-Intent"},
        {"file": "src/probe.ts", "marker": "RESPONSES_PROBE_ROUNDS = 2"}
      ],
      "tests": [
        {"file": "tests/inline/apply.spec.ts", "name": "captures an explicit request model instead of substituting a changed Session selection"},
        {"file": "tests/inline/apply.spec.ts", "name": "routes concurrent hosted tools from real model-selection request headers rather than activation seeds"},
        {"file": "tests/inline/apply.spec.ts", "name": "disposes only A during final %s HTTP %s while B completes without cross-cancellation"},
        {"file": "tests/inline/apply.spec.ts", "name": "ensures cold metadata only on actual search and captures selection before discovery awaits"},
        {"file": "tests/preview-route.spec.ts", "name": "resolves Host-only search auth from the live generic snapshot without exposing it in status"},
        {"file": "tests/copilot-request.spec.ts", "name": "combines installed catalog headers with provider-required request metadata"},
        {"file": "tests/copilot-request.spec.ts", "name": "applies a credential-specific Copilot endpoint before request construction"},
        {"file": "tests/copilot-request.spec.ts", "name": "preserves the Anthropic v1 path on a credential-specific endpoint"},
        {"file": "tests/copilot-request.spec.ts", "name": "adds dynamic headers for business and enterprise Copilot endpoints"},
        {"file": "tests/probe.spec.ts", "name": "confirms support via the standard spelling and reports it"},
        {"file": "tests/probe.spec.ts", "name": "bounds all-transient replies to two complete spelling rounds"},
        {"file": "tests/probe.spec.ts", "name": "shares one whole-probe deadline and signal across retries"},
        {"file": "tests/inline/wire.spec.ts", "name": "skips web_search_call events and streams the answer normally"},
        {"file": "tests/inline/wire.spec.ts", "name": "skips a pass-through function_call named web_search without slotting it"}
      ]
    },
    {
      "id": "hosted-search-file-context-fail-closed",
      "required": true,
      "sourceMarkers": [{"file": "src/index.ts", "marker": "contentHasFileCompat(message.content)"}],
      "tests": [
        {"file": "tests/inline/apply.spec.ts", "name": "preserves a top-level user file when bypassing the custom wire"},
        {"file": "tests/inline/apply.spec.ts", "name": "preserves a file nested in tool-result content when bypassing the custom wire"},
        {"file": "tests/preview-route.spec.ts", "name": "uses native attachment projection and execution-world mapping when available: %s"},
        {"file": "tests/preview-route.spec.ts", "name": "keeps the mapped read-only path when Core offloads an image to fit its request budget"}
      ]
    },
    {
      "id": "traditional-search-bridge",
      "required": true,
      "sourceMarkers": [
        {"file": "src/traditional-search.ts", "marker": "github-copilot-hosted"},
        {"file": "README.md", "marker": "github-copilot.searchFallback"},
        {"file": "README.md", "marker": "Fetch is unchanged."},
        {"file": "README.zh.md", "marker": "github-copilot.searchFallback"},
        {"file": "README.zh.md", "marker": "网页抓取不变"}
      ],
      "tests": [
        {"file": "tests/traditional-search.spec.ts", "name": "normalizes generated content and deduplicated sources"},
        {"file": "tests/traditional-search.spec.ts", "name": "honors caller abort before credential or network access"},
        {"file": "tests/traditional-search.spec.ts", "name": "maps HTTP errors without leaking credentials or provider bodies"}
      ]
    },
    {
      "id": "dsh-supported-baselines-fail-loud-guard",
      "required": true,
      "sourceMarkers": [
        {"file": "src/compatibility.ts", "marker": "peerRange: '0.2.0-rc.2'"}
      ],
      "tests": [
        {"file": "tests/compatibility.spec.ts", "name": "admits only the exact current official release"},
        {"file": "tests/compatibility.spec.ts", "name": "declares the current and retained exact contract targets without claiming live Desktop validation"},
        {"file": "tests/compatibility.spec.ts", "name": "accepts the supported DSH service contract"},
        {"file": "tests/compatibility.spec.ts", "name": "fails before startup when a required API is absent"}
      ]
    },
    {
      "id": "dsh-models-settings-and-managed-discovery-ui",
      "required": true,
      "activation": "provider-row-first-shared-account-with-exclusive-fallback",
      "sourceMarkers": [
        {"file": "src/client.ts", "marker": "GitHubCopilotSettingsSection"},
        {"file": "src/client.ts", "marker": "settings.models.footer"},
        {"file": "src/client.ts", "marker": "plugins.bundle.config"},
        {"file": "src/client.ts", "marker": "settingsSectionActive && !footerActive"}
      ],
      "tests": [
        {"file": "tests/client.spec.ts", "name": "registers a GitHub Copilot settings section on the rc.2 Models surface"},
        {"file": "tests/client-search-inject.spec.ts", "name": "renders the actual search callback in $seat"},
        {"file": "tests/client-bundle.spec.ts", "name": "registers web-search routing in the built bundle detail page, leaving Models for account controls"},
        {"file": "tests/client.spec.ts", "name": "registers coordinated provider and fallback seats without starting either controller during registration"},
        {"file": "tests/client.spec.ts", "name": "leaves authorization active when the optional footer contract is incompatible or registration fails"},
        {"file": "tests/client.spec.ts", "name": "mounts one compact account lifecycle instead of separate authorization and discovery owners"},
        {"file": "tests/client.spec.ts", "name": "makes explicit account discovery available in the old-Core settings fallback"},
        {"file": "tests/client.spec.ts", "name": "explains the initial model list without inferring a completed discovery from sign-in"},
        {"file": "tests/client.spec.ts", "name": "restores exactly one account fallback when a footer declaration is withdrawn"},
        {"file": "tests/client.spec.ts", "name": "transfers a pending sign-in to an arriving row and back without stale actions or a second poll owner"},
        {"file": "tests/client.spec.ts", "name": "keeps one owner across duplicate row instances and footer/settings competition"},
        {"file": "tests/client-no-model-roles.spec.ts", "name": "does not export the obsolete role card while preserving search and usage components"},
        {"file": "tests/client-no-model-roles.spec.ts", "name": "never registers role entrypoints (footer=$footer, legacyRemote=$legacyRemote)"},
        {"file": "tests/client-no-model-roles.spec.ts", "name": "does not resurrect a role entry when a retained legacy Remote arrives later"}
      ]
    },
    {
      "id": "managed-copilot-high-cost-allocation",
      "required": true,
      "sourceMarkers": [
        {"file": "src/auto-allocation.ts", "marker": "high-cost-v1"},
        {"file": "src/config.ts", "marker": "highCostModelIds"},
        {"file": "src/model-preferences-card.ts", "marker": "High cost"},
        {"file": "src/turn-selection-host.ts", "marker": "allocationSummary"},
        {"file": "src/auto-allocation-evidence.ts", "marker": "completeHistory: z.literal(false)"},
        {"file": "scripts/agent.mjs", "marker": "iterationReview"},
        {"file": "docs/auto-high-cost.md", "marker": "separate acceptance"}
      ],
      "tests": [
        {"file": "tests/auto-allocation.spec.ts", "name": "gives every candidate opportunity without an absolute previous-model shortcut"},
        {"file": "tests/auto-allocation-evidence.spec.ts", "name": "counts each turn once, bounds retention and never recovers missing evidence after removal"},
        {"file": "tests/auto-model-routing.spec.ts", "name": "keeps costly Fast models eligible and evidence opt-out independent of the selected route"},
        {"file": "tests/authorization-controller.spec.ts", "name": "saves orthogonal high-cost preferences narrowly without credential or Session reads"},
        {"file": "tests/client.spec.ts", "name": "saves a high-cost row through its narrow Remote without discovery and retains exclusion state"},
        {"file": "tests/fixtures/copilot-accounts-persistence-core.fixture.ts", "name": "persists independent native credentials and SettingsForms CAS across profile restart without cross-account OAuth writes"}
      ]
    },
    {
      "id": "managed-copilot-auto-intent-continuity",
      "required": true,
      "sourceMarkers": [
        {"file": "src/auto-model-intent.ts", "marker": "githubCopilotAutoModelIntent"},
        {"file": "src/auto-model-intent.ts", "marker": "state.inherited"},
        {"file": "src/auto-model-host.ts", "marker": "COPILOT_AUTO_INTENT_UNAVAILABLE"},
        {"file": "src/auto-model-host.ts", "marker": "removeIntentProjection"},
        {"file": "docs/automatic-model-routing.md", "marker": "Cold refolding restores intent"}
      ],
      "tests": [
        {"file": "tests/auto-model-intent.spec.ts", "name": "retains explicit intent across virtual and concrete execution headers and cold replay"},
        {"file": "tests/auto-model-intent.spec.ts", "name": "does not infer intent from execution or copied fork/child prefixes"},
        {"file": "tests/auto-model-host.spec.ts", "name": "diagnoses unavailable continuity evidence ($error) without blocking a new explicit fixed choice"},
        {"file": "tests/fixtures/session-context-core.fixture.ts", "name": "retains explicit Auto after native virtual-header consumption without relabeling prior turns"}
      ]
    },
    {
      "id": "managed-copilot-auto-model-routing",
      "required": true,
      "sourceMarkers": [
        {"file": "src/account-model-catalog.ts", "marker": "model_picker_category"},
        {"file": "src/auto-task-assessment.ts", "marker": "COPILOT_AUTO_ASSESSMENT_CONTEXT_OMITTED"},
        {"file": "src/auto-task-classifier.ts", "marker": "classifyTaskWithAdapter"},
        {"file": "src/auto-model-routing.ts", "marker": "targetCategory"},
        {"file": "src/config.ts", "marker": "autoSemanticAssessment"},
        {"file": "src/auto-selection-explanation.ts", "marker": "No candidate fits"},
        {"file": "src/preview-route.ts", "marker": "GITHUB_COPILOT_AUTO_MODEL_ID"},
        {"file": "src/auto-model-host.ts", "marker": "keep attribution out of the log"},
        {"file": "src/parent-model-follow.ts", "marker": "resolveParentModel"},
        {"file": "src/config.ts", "marker": "parentModelFollow"},
        {"file": "src/config.ts", "marker": "followParentModel"},
        {"file": "src/parent-model-follow-card.ts", "marker": "Follow parent model"},
        {"file": "src/auto-model-host.ts", "marker": "COPILOT_AUTO_TOKEN_METER_UNAVAILABLE"},
        {"file": "src/auto-model-presentation.ts", "marker": "conversation.chat.assistant-actions"},
        {"file": "src/auto-model-presentation.ts", "marker": "installAutoModelProjections"},
        {"file": "src/auto-model-presentation.ts", "marker": "turnModelProvenanceDefinition"},
        {"file": "src/turn-model-provenance.ts", "marker": "assistant/message"},
        {"file": "src/turn-request-models.ts", "marker": "stateVersion: 1"},
        {"file": "src/turn-request-models.ts", "marker": "active.step === null"},
        {"file": "src/turn-selection-card.ts", "marker": "Turn model and selection evidence"},
        {"file": "src/turn-selection-card.ts", "marker": "Recorded models"},
        {"file": "src/turn-selection-remote.ts", "marker": "RequestedModelsSchema"},
        {"file": "src/turn-selection-card.ts", "marker": "Selection unknown"},
        {"file": "src/turn-selection-remote.ts", "marker": "lookup: 'agent'"},
        {"file": "src/turn-selection-host.ts", "marker": "extends TypertRemoteService"},
        {"file": "src/turn-selection-card.ts", "marker": "Selection unavailable"},
        {"file": "docs/automatic-model-routing.md", "marker": "plugin-only"}
      ],
      "tests": [
        {"file": "tests/auto-model-host.spec.ts", "name": "follows fixed and Auto parents using %s without writing child selections"},
        {"file": "tests/scripts/parent-model-follow.test.mjs", "name": "explicit same-model and different-model child selections both win"},
        {"file": "tests/auto-model-routing.spec.ts", "name": "retains legacy length evidence but does not use it as task or supplier category evidence"},
        {"file": "tests/auto-model-routing.spec.ts", "name": "uses the task/category policy with one hard-eligible pool for all preferences"},
        {"file": "tests/auto-model-routing.spec.ts", "name": "uses finite continuity but never lets it override task category or input fit"},
        {"file": "tests/auto-model-routing.spec.ts", "name": "discloses category fallbacks and never guesses missing category from ID or capacity"},
        {"file": "tests/auto-task-assessment.spec.ts", "name": "bounds context, never reads attachment/reasoning bodies, and does not downshift omitted context"},
        {"file": "tests/auto-task-assessment.spec.ts", "name": "inherits difficult-task evidence only through explicit bounded continuations"},
        {"file": "tests/auto-task-assessment.spec.ts", "name": "recognizes only isolated explicit fenced mechanical transformations as routine"},
        {"file": "tests/auto-task-assessment.spec.ts", "name": "preserves valid bounded rows and prioritizes the current user and nearest task over verbose output"},
        {"file": "tests/auto-selection-explanation.spec.ts", "name": "distinguishes local rule coverage from absent conversation context in both languages"},
        {"file": "tests/auto-task-assessment.spec.ts", "name": "preserves caller cancellation instead of using a success-shaped fallback"},
        {"file": "tests/config.spec.ts", "name": "defaults semantic Auto assessment on while preserving explicit opt-out"},
        {"file": "tests/preview-route.spec.ts", "name": "assesses Auto with setting %s and freezes the captured reason across retries"},
        {"file": "tests/turn-selection-card.spec.ts", "name": "explains a captured task/category decision with progressive details (%s)"},
        {"file": "tests/auto-model-routing.spec.ts", "name": "does not discard a complete Core assistant message when it contains reasoning"},
        {"file": "tests/auto-model-routing.spec.ts", "name": "retains the native current-surface and tool-envelope measurement as an input floor"},
        {"file": "tests/fixtures/compaction-pressure-core.fixture.ts", "name": "prices Core assistant text and reasoning with the unchanged native token meter"},
        {"file": "tests/auto-model-routing.spec.ts", "name": "requires account-verified image capability for image turns"},
        {"file": "tests/auto-model-host.spec.ts", "name": "resolves after downstream model selection and freezes one decision per turn"},
        {"file": "tests/auto-model-host.spec.ts", "name": "replaces Core virtual-Auto switch guidance with the resolved real route"},
        {"file": "tests/auto-model-presentation.spec.ts", "name": "folds a durable decision into turn-scoped credential-free attribution"},
        {"file": "tests/auto-model-presentation.spec.ts", "name": "omits attribution when a compatible history contains no optional decision"},
        {"file": "tests/turn-selection-card.spec.ts", "name": "reads exact completed turn evidence through %s and exposes reasons without repeating the model"},
        {"file": "tests/turn-selection-card.spec.ts", "name": "diagnoses an unavailable node collection without reading another turn"},
        {"file": "tests/turn-selection-card.spec.ts", "name": "uses native completion independently of optional projections: $expected"},
        {"file": "tests/client.spec.ts", "name": "registers and disposes Auto actions while the optional conversation fiber remains pending"},
        {"file": "tests/fixtures/reasoning-presentation-core.fixture.ts", "name": "renders retained Auto evidence without optional projections through native %s and slots"},
        {"file": "tests/turn-model-provenance.spec.ts", "name": "retains known models around zero-usage failed attempts without reading payloads"},
        {"file": "tests/turn-request-models.spec.ts", "name": "captures only headers inside a recorded step, never inherits adjacent or current selections"},
        {"file": "tests/turn-request-models-runtime.spec.ts", "name": "cold-folds same-turn requested models through the native public registry without changing events"},
        {"file": "tests/turn-selection-card.spec.ts", "name": "keeps model evidence first inside the existing dialog with multiple routes and overflow (%s)"},
        {"file": "tests/preview-route.spec.ts", "name": "publishes Auto as a virtual picker entry but refuses unresolved adapter dispatch"},
        {"file": "tests/fixtures/compaction-pressure-core.fixture.ts", "name": "shrinks durable history and rebuilds the switched model request without sending the oversized original"}
      ]
    },
    {
      "id": "single-managed-route-native-oauth",
      "required": true,
      "sourceMarkers": [
        {"file": "src/authorization-controller.ts", "marker": "current !== undefined && providerSupportsStrictMode(current) !== false"},
        {"file": "src/preview-route.ts", "marker": "displayName: 'GitHub Copilot'"},
        {"file": "src/client.ts", "marker": "GitHubCopilotAccountSurface"}
      ],
      "tests": [
        {"file": "tests/single-route.spec.ts", "name": "keeps the native login flow while exposing only the account-driven provider"},
        {"file": "tests/single-route.spec.ts", "name": "discovers new IDs and reasoning metadata without a canonical model profile"},
        {"file": "tests/single-route.spec.ts", "name": "honors explicit legacy-profile removal from settings without deleting OAuth"},
        {"file": "tests/authorization-controller.spec.ts", "name": "does not recreate an absent canonical profile during status or startup and auth reconciliation helpers"},
        {"file": "tests/authorization-controller.spec.ts", "name": "keeps absent-profile legacy journal conflicts visible instead of bypassing ownership review"}
      ]
    },
    {
      "id": "compact-account-row-and-auth-disclosure",
      "required": true,
      "sourceMarkers": [
        {"file": "src/client.ts", "marker": "GitHubCopilotCompactAccount"},
        {"file": "src/client.ts", "marker": "data-dsh-github-copilot-auto-authorization"},
        {"file": "src/compact-account.ts", "marker": "createCompactAccount"}
      ],
      "tests": [
        {"file": "tests/compact-account.spec.ts", "name": "renders a neutral checking state then only a compact signed-in row"},
        {"file": "tests/compact-account.spec.ts", "name": "shows signed-out CTA and automatically reveals authorization without opening Manage"},
        {"file": "tests/compact-account.spec.ts", "name": "retains manual management and live actions when toggled during authorization"},
        {"file": "tests/compact-account.spec.ts", "name": "keeps refresh and Retry inside Manage while discovery failures stay visible when collapsed"},
        {"file": "tests/compact-account.spec.ts", "name": "cleans timers and ignores late requests after detach or Remote replacement"},
        {"file": "tests/compact-account.spec.ts", "name": "keeps cancellation failures visible without reviving a stale code"},
        {"file": "tests/compact-account.spec.ts", "name": "orders cancellation after pending start so a late Host preflight cannot create an abandoned flow"},
        {"file": "tests/compact-account.spec.ts", "name": "discovers exactly once after immediate confirmed completion and permits later manual refresh"},
        {"file": "tests/compact-account.spec.ts", "name": "waits through repeated authorization polls and discovers only on confirmed completion"},
        {"file": "tests/compact-account.spec.ts", "name": "keeps automatic post-login discovery owned across Manage toggles and shows a retryable error"},
        {"file": "tests/authorization-controller.spec.ts", "name": "keeps completion pending through post-login repair so the Client discovers exactly once afterwards"},
        {"file": "tests/compact-account.spec.ts", "name": "keeps stale count visible during initial metadata refresh without a warning or header refresh button"},
        {"file": "tests/authorization-controller.spec.ts", "name": "ensures account metadata without forcing past the shared cache or cooldown"},
        {"file": "tests/client.spec.ts", "name": "owns a minute-only UI timer through committed mount, timestamp change and unmount"},
        {"file": "tests/compact-account.spec.ts", "name": "keeps the Host cache timestamp outside Manage and live regions through refresh and failure"},
        {"file": "tests/client-bundle.spec.ts", "name": "exports the cache timestamp formatter and isolated clock component in the built Client"}
      ]
    }
  ],
  "requiredExports": {
    ".": [
      "GITHUB_COPILOT_HOSTED_SEARCH_PROVIDER_ID",
      "GITHUB_COPILOT_CREDENTIAL_KEY",
      "GitHubCopilotAuthorizationController",
      "describeGitHubCopilotProviderProfile",
      "ensureGitHubCopilotProviderProfile",
      "LLM_PI_AI_SETTINGS_NAMESPACE",
      "DSH_COMPATIBILITY",
      "assertDshCompatibility"
    ],
    "./client": [],
    "./remote": [],
    "./routed-web": ["default"],
    "./web-delegate": ["name", "inject", "apply"],
    "./manual-compaction-recovery": ["CopilotManualRecoveryCompactionEngine", "summarizeOversizedManualInput"],
    "./deployment-baseline.json": [],
    "./package.json": []
  }
}
