diff --git a/.oxlintrc.json b/.oxlintrc.json index be37745108..c740edb284 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -18,7 +18,27 @@ }, "overrides": [ { - "files": ["tests/**/*.ts", "src/**/*.test.ts"], + "files": [ + "src/{contracts,domain,server}/**/*.ts", + "src/application/**/*.ts" + ], + "excludeFiles": ["src/application/runtime.ts"], + "rules": { + "no-restricted-imports": [ + "error", + { + "patterns": [ + { + "group": ["**/ghidra/**", "**/hopper/**"], + "message": "Deep-provider imports belong behind adapters or in the application composition root." + } + ] + } + ] + } + }, + { + "files": ["tests/**/*.ts", "src/**/*.test.ts", "src/**/*.fixture.ts"], "rules": { "max-lines": [ "error", @@ -31,7 +51,7 @@ } }, { - "files": ["src/domain/**/*.test.ts"], + "files": ["src/domain/**/*.{fixture,test}.ts"], "rules": { "no-restricted-imports": [ "error", diff --git a/AGENTS.md b/AGENTS.md index 8a10c94e06..0d279c8217 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -38,7 +38,7 @@ See [docs/architecture.mermaid](docs/architecture.mermaid) for a visual architec - `src/application/`: shared CLI/MCP session composition, setup and diagnostics, and enhanced workflows. `AnalysisProviderRegistry` discovers overlapping deep candidates without starting them; `SessionProviderRouter` binds one candidate per target and composes it with disjoint auxiliary providers; `JavaScriptArtifactReconstruction.ts` safely projects local directories/ASARs and inert bundle syntax into the application graph without adding a caller-visible tool yet. - `src/server/`: MCP request translation. `createServer.ts` assembles the MCP server, `registerOfficialTools.ts`/`registerEnhancedTools.ts` register each tool set, `toolResult.ts` maps `Result` values to MCP content. - `docs/product-catalog.json`: generated package, tool-family, provider, setup-client, schema-version, and CLI facts. Regenerate it from source; do not edit it by hand. -- `tests/`: Vitest suite. `tests/fixtures/` holds reusable provider-process fixtures, source-owned synthetic JavaScript graph and Electron/Webpack/Rspack artifact trees, and the fake launcher, Hopper bridge, and CDP seams. +- `tests/`: Vitest suite. Focused immutable domain builders live beside their production owner as `src/domain/*.fixture.ts`; `tests/fixtures/` holds reusable provider-process fixtures, source-owned Electron/Webpack/Rspack artifact trees, and the fake launcher, Hopper bridge, and CDP seams. - `scripts/verify-real-hopper.mjs`: real-Hopper end-to-end verifier. - `scripts/verify-real-ghidra.mjs`: real Linux Ghidra verifier for x86-64 debug/stripped ELF, AArch64 ELF, PE, and Mach-O function semantics plus complete cleanup. - `scripts/verify-real-ghidra-windows.mjs`: real Windows x64 Ghidra P0 verifier for the source-owned native PE fixture, all 19 admitted operations, digest linkage, loopback transport, and cleanup. diff --git a/docs/product-catalog.json b/docs/product-catalog.json index 85496e068e..a8f24e335a 100644 --- a/docs/product-catalog.json +++ b/docs/product-catalog.json @@ -680,10 +680,10 @@ "mcp_resource_templates": 11 }, "digests": { - "tools_sha256": "b0e8b9c894ef347b6680a3a5bfdb4cba5c10e9129eeaa43a5ea22ce4d398d417", + "tools_sha256": "1a4533fef9cbe075fdca76b19a138924bd69d93a6413cdb767b2a9240a46fd04", "prompts_sha256": "3886a3bf55a448def79e3eb429e6a56eb2ba075423c5cb1e5747642b389ef8fe", "resources_sha256": "e0e872276ebf6f88e916ef24930a99eed27ce4c93e494e60820e9bd8cc8497c3", - "combined_sha256": "bab5657d9525ec4f798d0a9ef6001412d9c11f77fb0ddc925c7076fd10921dc9", + "combined_sha256": "8bd40516d78875cb75ba1c4a8786286311036742ad660914d7327c2941b2f73a", "providers_sha256": "7446b51788734ebf6f4f702e3a5a8c9f0b61967490c245f30bd37b2060827e6b" } } diff --git a/docs/test-migration-ledger.md b/docs/test-migration-ledger.md deleted file mode 100644 index 7cc4358414..0000000000 --- a/docs/test-migration-ledger.md +++ /dev/null @@ -1,73 +0,0 @@ -# Test architecture migration ledger - -This ledger records how the flat test suite was classified during the -coordinated architecture cutover. It is an evidence index, not a declaration -that every test became independent merely because its path changed. - -## Classification batches - -The following mappings are grounded in the current moved paths. They describe -ownership only; decomposition and evidence replacement must be recorded in the -per-suite table below. - -| Previous path | Current path | Classification | -| --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------- | -| `tests/applicationWorkflowCli.test.ts` | `tests/acceptance/applications/applicationWorkflowCli.test.ts` | Acceptance application workflow | -| `tests/setupLifecycle.test.ts` | `tests/acceptance/setup/setupLifecycle.test.ts` | Acceptance setup workflow | -| `tests/cdpBrowserProvider.test.ts` | `tests/boundary/browser/cdpBrowserProvider*.test.ts` | Browser boundary | -| `tests/ghidraClient.test.ts` | `tests/boundary/providers/ghidra/ghidraClient.test.ts` | Ghidra provider boundary | -| `tests/processOwnership.test.ts` | `tests/boundary/process/processOwnership*.test.ts` | Process boundary | -| `tests/binarySession.test.ts` | `tests/composition/analysis-sessions/binarySession.*.test.ts` | Analysis-session composition | -| `tests/javascriptSemanticAnalysis.test.ts` | `tests/composition/javascript-applications/javascriptSemanticAnalysis.*.test.ts` | JavaScript-application composition | -| `tests/config.test.ts` | `tests/composition/setup-lifecycle/config.test.ts` | Setup-lifecycle composition | -| `tests/composition/analysis-sessions/runtime.test.ts` | `tests/acceptance/applications/runtime.test.ts` | Compiled MCP acceptance workflow | -| `tests/composition/runtime-observation/webCaptureDiff.test.ts` | `tests/boundary/browser/webCaptureDiff.test.ts` | Browser boundary | -| `tests/conformanceFixtures.test.ts` | `tests/conformance/providers/conformanceFixtures.test.ts` | Provider conformance | -| `tests/codexAgentEval.test.ts` | `tests/evaluation/model-evals/codexAgentEval.test.ts` | Deterministic model-evaluator logic | -| `tests/composition/analysis-sessions/{boundedCartesianProjection,symbolAnalysis,jsonShape}.test.ts` | `src/domain/{boundedCartesianProjection,symbolAnalysis,jsonShape}.test.ts` | Colocated pure-domain behavior | - -The same directory mapping applies to the other files moved in each batch: -`tests/acceptance/{analysis,applications,investigations,setup}`, -`tests/boundary/{browser,cli,filesystem,mcp,process,providers}`, -`tests/composition/{analysis-sessions,evidence-investigations,javascript-applications,process-capture,runtime-observation,setup-lifecycle}`, -`tests/conformance`, and `tests/evaluation`. Git rename detection remains the -canonical source for the complete old-to-new path list. - -## Per-suite evidence record - -Add a row when a legacy suite is materially decomposed, consolidated, replaced, -or removed. “Replacement evidence” must identify executable behavior, a -generated artifact comparison, a protocol probe, or an explicit verifier; a new -path alone is not replacement evidence. - -| Legacy suite or claim | Disposition | Replacement evidence | Validation | Remaining gap | -| ----------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| Flat path classification | Moved | Vitest configuration contract proves every deterministic test belongs to exactly one project | Configuration contract test | Record any exceptions discovered during cutover | -| Direct session construction outside owner tests | Consolidated | `composeBinarySession` and `composeBinarySessionFromProvider` are the shared production/test seams | Repository search plus session-composition and acceptance tests | None | -| Repeated temporary-directory setup | Consolidated | `createTestTempDirectory` delegates every test-owned root to the typed workspace fixture with HOME/XDG projection and awaited cleanup | Repository search plus filesystem, process, runtime suites, and the Vitest topology hygiene contract | None; direct `mkdtemp` remains only in the workspace fixture and package-canary source text | -| Repeated CLI/MCP connection helpers | Consolidated | Typed CLI and MCP fixtures under `tests/support`; CLI output, dispatcher, and server tests use them | Acceptance startup, typed failure, lifecycle, and teardown tests | Provider-specific protocol harnesses remain local | -| Implementation-shaped assertions | Replaced | Recording adapters, executable bridge/protocol probes, generated-artifact comparisons, and supported configuration contracts | Focused boundary/conformance tests and repository search | None identified in the final audit | -| Module mocks and spies | Replaced | Recording adapters and caller-visible outcomes | Repository search plus focused reload, Ghidra, and enhanced-tool tests | None | -| `processCapture.test.ts` | Consolidated | Ten lifecycle, observation, reactive, replay, terminal, validation, and trace suites | 42 focused boundary tests | None | -| `cdpBrowserProvider.test.ts` | Consolidated | Five discovery, document/script, network, lifecycle, and sensitive-data suites | 36 focused browser-boundary tests | None | -| `javascriptSemanticAnalysis.test.ts` | Consolidated | Six structure, call, dataflow, runtime, native-binding, and rejection suites | 29 focused composition tests | None | -| `binarySession.test.ts` | Consolidated | Nine provider binding, lifecycle, cache, Evidence, permissions, and shutdown suites | Focused composition tests and shared composition-seam test | None | -| MCP mega-suites | Consolidated | Tool/resource-family suites plus catalog-wide identity and lifecycle coverage | Focused MCP tests and complete deterministic run | None | -| Provider client mega-suites | Consolidated | Capability-named protocol, timeout, ownership, error, and cleanup suites | 85 focused provider tests | Real systems remain in `verify:*` lanes | -| Pure domain proofs | Moved | Colocated bounded projection, symbol classification, and JSON-shape tests | Domain Vitest project | Continue moving only tests with no external boundary dependency | - -Use these dispositions consistently: - -- **Moved**: the same material claim now has depth-appropriate ownership. -- **Replaced**: stronger executable evidence supersedes the old assertion. -- **Consolidated**: one retained test proves a claim previously duplicated. -- **Intentionally removed**: the claim was not public or independent; the row - must still name the retained evidence or explain why none is warranted. -- **In progress**: classification exists but the replacement audit is not - complete. No final-cutover row may retain this disposition. - -The exact old-to-new inventory is mechanically enforced by the project -classification contract and retained in Git rename metadata. Real-system lanes, -coverage, repeated-run stability, and benchmark timing are release evidence; -they are reported separately because they depend on the execution host and -installed external systems. diff --git a/docs/testing.md b/docs/testing.md index 40fcafddbd..1893eec943 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -25,6 +25,11 @@ registries but do not cross production filesystem, process, socket, or browser b Boundary tests cross one production boundary. Only acceptance tests assemble the complete runtime or invoke the compiled product surface. +Focused immutable builders shared by a domain test family live beside their +production owner as `src/domain/*.fixture.ts`. They are typechecked with the +suite and excluded from package builds; broader runtime and provider fixtures +remain under `tests/fixtures/**`. + `tests/process-global/**` is reserved for cases with a demonstrated dependency on process-global state. Those tests run without file parallelism. Reusable, test-scoped fixtures live under `tests/support/**`; immutable source artifacts @@ -64,6 +69,9 @@ Use `npm run check:pr` before handing off a contribution. Local full-suite Vitest runs are intentionally capped at one worker and one project at a time. Boundary fixtures own real subprocesses, and this local cap keeps aggregate memory predictable; CI retains the existing two-worker budget. +The pure domain/contracts and recording-port service projects share one worker +module context because their tests own no mutable runtime resources; adapter, +composition, and boundary projects retain per-file isolation. `npm test`, `npm run docs:check`, and `npm run docs:generate` share repository-local locks and fail fast when the same class of command is already running. The `npm test` build is inside that lock. `check:pr` runs its test task @@ -101,6 +109,6 @@ for another. The PR acceptance target is a median `npm run check:pr` wall time below three minutes across three warm-build runs on the benchmark host. Keep Vitest caches -cold unless separately identified. The final cutover also requires three -consecutive deterministic passes without retries, `npm run verify:package`, and -the applicable real-system lanes. +cold unless separately identified. A PR that touches packaging or real-system +behavior also requires `npm run verify:package` and the applicable +`verify:*` lanes. diff --git a/docs/verification/managed-conformance-manifest.json b/docs/verification/managed-conformance-manifest.json index 30d8c39069..934b889de9 100644 --- a/docs/verification/managed-conformance-manifest.json +++ b/docs/verification/managed-conformance-manifest.json @@ -1,6 +1,6 @@ { "schema_version": 1, - "manifest_id": "ecm_c44391ed8e365e21871664422aa38fa6c12598006cde731d65a9d9e271b0fa5f", + "manifest_id": "ecm_5add7389cf00e86bfec005df9e0e0cf8d7aceb2f3ec3e5f6b74edb5f880bd9a7", "verifier": { "id": "rea-managed-conformance", "version": "1" @@ -14,7 +14,7 @@ "skill_digests": [ { "skill_id": "reverse-engineer-anything", - "sha256": "97a5bc5d29f162fe171ddbb8f4f5ba9fcba34ad336d4cdcae0c564223aa4cfe8" + "sha256": "2cca31c9550fe32c24adcb8134edb4b077aa772fb0f0f1057c99964cac6d9a8f" } ], "claims": [ diff --git a/scripts/lib/catalog-schemas.mjs b/scripts/lib/catalog-schemas.mjs index 0acf24a3e6..d0b38a73c8 100644 --- a/scripts/lib/catalog-schemas.mjs +++ b/scripts/lib/catalog-schemas.mjs @@ -4,6 +4,8 @@ const valuesAt = (node, path) => { if (typeof node !== "object" || node === null) return []; if ("anyOf" in node && Array.isArray(node.anyOf)) return node.anyOf.flatMap((alternative) => valuesAt(alternative, path)); + if ("oneOf" in node && Array.isArray(node.oneOf)) + return node.oneOf.flatMap((alternative) => valuesAt(alternative, path)); if (path.length === 0) return "const" in node && (typeof node.const === "number" || typeof node.const === "string") diff --git a/skills/reverse-engineer-anything/SKILL.md b/skills/reverse-engineer-anything/SKILL.md index 4a9e912ac9..321bced328 100644 --- a/skills/reverse-engineer-anything/SKILL.md +++ b/skills/reverse-engineer-anything/SKILL.md @@ -4,7 +4,7 @@ description: Reverse engineer native, managed, Electron/JavaScript, packaged, an metadata: version: "23" tool_count: 116 - catalog_digest: "bab5657d9525ec4f798d0a9ef6001412d9c11f77fb0ddc925c7076fd10921dc9" + catalog_digest: "8bd40516d78875cb75ba1c4a8786286311036742ad660914d7327c2941b2f73a" --- # REA diff --git a/tests/composition/analysis-sessions/analysisContextQueries.test.ts b/src/application/AnalysisContextQueries.test.ts similarity index 96% rename from tests/composition/analysis-sessions/analysisContextQueries.test.ts rename to src/application/AnalysisContextQueries.test.ts index acff50c61a..3fcc2397c9 100644 --- a/tests/composition/analysis-sessions/analysisContextQueries.test.ts +++ b/src/application/AnalysisContextQueries.test.ts @@ -3,16 +3,16 @@ import { describe, expect, it } from "vitest"; import { getNavigationContext, inspectAddressContext, -} from "../../../src/application/AnalysisContextQueries.js"; +} from "./AnalysisContextQueries.js"; import { createAnalysisExecution, type AnalysisOperationPort, -} from "../../../src/application/AnalysisProvider.js"; +} from "./AnalysisProvider.js"; import { AnalysisCancelledError, AnalysisProtocolError, -} from "../../../src/domain/errors.js"; -import { err, ok } from "../../../src/domain/result.js"; +} from "../domain/errors.js"; +import { err, ok } from "../domain/result.js"; const provider = { id: "fixture", name: "Fixture", version: "1" }; diff --git a/src/application/AnalysisSnapshotCache.test.ts b/src/application/AnalysisSnapshotCache.test.ts new file mode 100644 index 0000000000..4001a9d5ef --- /dev/null +++ b/src/application/AnalysisSnapshotCache.test.ts @@ -0,0 +1,82 @@ +import { describe, expect, it } from "vitest"; + +import { createAnalysisProfile } from "../domain/analysisProfile.js"; +import { + ANALYSIS_SNAPSHOT_PROFILE, + ANALYSIS_SNAPSHOT_PROVIDER, + ANALYSIS_SNAPSHOT_TARGET, +} from "../domain/analysisSnapshot.fixture.js"; +import { createEvidenceBundle } from "../domain/evidenceBundle.js"; +import { createAnalysisExecution } from "./AnalysisProvider.js"; +import { AnalysisSnapshotCache } from "./AnalysisSnapshotCache.js"; + +describe("analysis snapshot cache partitioning", () => { + it("returns detached data only from the exact provider/profile partition", () => { + const cache = new AnalysisSnapshotCache(); + const execution = createAnalysisExecution( + "main", + ANALYSIS_SNAPSHOT_PROVIDER, + { analysisProfile: ANALYSIS_SNAPSHOT_PROFILE }, + ); + cache.record({ + target: ANALYSIS_SNAPSHOT_TARGET, + profile: ANALYSIS_SNAPSHOT_PROFILE, + operation: "address_name", + parameters: { address: "0x1000", document: "fixture" }, + execution, + }); + const exported = cache.export( + ANALYSIS_SNAPSHOT_TARGET, + ANALYSIS_SNAPSHOT_PROFILE, + createEvidenceBundle([]), + ); + expect(exported.ok).toBe(true); + if (!exported.ok) return; + const entry = exported.value.entries[0]; + if (entry !== undefined) { + Reflect.set(entry.execution, "provider", { + id: "forged", + name: "Forged", + version: "9", + }); + entry.execution.limitations.push("forged"); + } + + expect( + cache.lookup( + ANALYSIS_SNAPSHOT_TARGET, + ANALYSIS_SNAPSHOT_PROFILE, + "address_name", + { address: "0x1000", document: "fixture" }, + ), + ).toMatchObject({ + provider: ANALYSIS_SNAPSHOT_PROVIDER, + analysisProfile: ANALYSIS_SNAPSHOT_PROFILE, + limitations: [expect.stringContaining("local REA analysis snapshot")], + }); + const changedProfile = createAnalysisProfile( + ANALYSIS_SNAPSHOT_PROVIDER, + 1, + { loader: "configured-override" }, + ); + expect( + cache.lookup(ANALYSIS_SNAPSHOT_TARGET, changedProfile, "address_name", { + address: "0x1000", + document: "fixture", + }), + ).toBeUndefined(); + const changedProviderProfile = createAnalysisProfile( + { id: "other", name: "Other", version: "1" }, + 1, + { loader: "mach-o-arm64" }, + ); + expect( + cache.lookup( + ANALYSIS_SNAPSHOT_TARGET, + changedProviderProfile, + "address_name", + { address: "0x1000", document: "fixture" }, + ), + ).toBeUndefined(); + }); +}); diff --git a/tests/composition/analysis-sessions/artifactInventoryPolicy.test.ts b/src/application/ArtifactInventoryPolicy.test.ts similarity index 95% rename from tests/composition/analysis-sessions/artifactInventoryPolicy.test.ts rename to src/application/ArtifactInventoryPolicy.test.ts index f3f1986967..0e5f44b97d 100644 --- a/tests/composition/analysis-sessions/artifactInventoryPolicy.test.ts +++ b/src/application/ArtifactInventoryPolicy.test.ts @@ -3,7 +3,7 @@ import { describe, expect, it } from "vitest"; import { resolveArtifactIntegrityPolicy, resolveNativeMountPolicy, -} from "../../../src/application/ArtifactInventory/policy.js"; +} from "./ArtifactInventory/policy.js"; describe("artifact inventory policy resolution", () => { it("admits native mounting only when caller and operator both allow it", () => { diff --git a/src/application/BinarySession.ts b/src/application/BinarySession.ts index 1f0c937c28..77268b3ba1 100644 --- a/src/application/BinarySession.ts +++ b/src/application/BinarySession.ts @@ -15,12 +15,8 @@ import type { JsonValue } from "../domain/jsonValue.js"; import type { AnalysisClient, AnalysisExecution, - AnalysisClientFactory, ExecutionOptions, - AnalysisProfileResolution, - AnalysisProfileResolutionOptions, AnalysisOperationPort, - AnalysisProvider, ProviderIdentity, } from "./AnalysisProvider.js"; import type { AnalysisOperation } from "./AnalysisProvider.js"; @@ -80,23 +76,9 @@ export class BinarySession >(); readonly #availabilityListeners = new Set<() => void | Promise>(); - constructor( - readonly provider: - | AnalysisProvider - | AnalysisClientFactory - | SessionProviderRouter, - options: { - readonly resolveAnalysisProfile?: ( - target: BinaryTarget, - options?: AnalysisProfileResolutionOptions, - ) => Promise>; - } = {}, - ) { + constructor(providerRouter: SessionProviderRouter) { super(); - this.#providerRouter = - provider instanceof SessionProviderRouter - ? provider - : SessionProviderRouter.legacy(provider, options); + this.#providerRouter = providerRouter; } /** Identify the provider producing evidence for this session. */ diff --git a/src/application/BinarySessionComposition.ts b/src/application/BinarySessionComposition.ts index 327c52f925..55ef75f468 100644 --- a/src/application/BinarySessionComposition.ts +++ b/src/application/BinarySessionComposition.ts @@ -1,33 +1,7 @@ -import type { - AnalysisClientFactory, - AnalysisProfileResolution, - AnalysisProfileResolutionOptions, - AnalysisProvider, -} from "./AnalysisProvider.js"; +import type { AnalysisProvider } from "./AnalysisProvider.js"; import { AnalysisProviderRegistry } from "./AnalysisProviderRegistry.js"; import { BinarySession } from "./BinarySession.js"; import { SessionProviderRouter } from "./SessionProviderRouter.js"; -import type { BinaryTarget } from "../domain/binaryTarget.js"; -import type { AnalysisError } from "../domain/errors.js"; -import type { Result } from "../domain/result.js"; - -type BinarySessionOptions = { - readonly resolveAnalysisProfile?: ( - target: BinaryTarget, - options?: AnalysisProfileResolutionOptions, - ) => Promise>; -}; - -type BinarySessionOptionsOrResolver = - | BinarySessionOptions - | BinarySessionOptions["resolveAnalysisProfile"]; - -const normalizeBinarySessionOptions = ( - optionsOrResolver?: BinarySessionOptionsOrResolver, -): BinarySessionOptions => - typeof optionsOrResolver === "function" - ? { resolveAnalysisProfile: optionsOrResolver } - : (optionsOrResolver ?? {}); /** * Compose one provider-neutral session from deep-provider selection and @@ -42,21 +16,3 @@ export const composeBinarySession = ( ? registry : SessionProviderRouter.selectable(registry, auxiliaryProviders), ); - -/** - * Compose a session through the same internal seam for focused adapter tests. - * The constructor remains private to this composition module, so callers test - * provider behavior without coupling to BinarySession construction. - */ -export const composeBinarySessionFromFactory = ( - provider: AnalysisProvider | AnalysisClientFactory | SessionProviderRouter, - optionsOrResolver?: BinarySessionOptionsOrResolver, -): BinarySession => - new BinarySession(provider, normalizeBinarySessionOptions(optionsOrResolver)); - -/** Compose a focused session from any provider-shaped test seam. */ -export const composeBinarySessionFromProvider = ( - provider: AnalysisProvider | AnalysisClientFactory | SessionProviderRouter, - optionsOrResolver?: BinarySessionOptionsOrResolver, -): BinarySession => - new BinarySession(provider, normalizeBinarySessionOptions(optionsOrResolver)); diff --git a/src/application/BrowserObservationService.test.ts b/src/application/BrowserObservationService.test.ts new file mode 100644 index 0000000000..d182dd8f7c --- /dev/null +++ b/src/application/BrowserObservationService.test.ts @@ -0,0 +1,48 @@ +import { describe, expect, it } from "vitest"; + +import { listBrowserTargetsInputSchema } from "../domain/browserObservation.js"; +import { listBrowserTargets } from "./BrowserObservationService.js"; +import { createPermissionAuthority } from "./PermissionAuthority.js"; + +describe("browser observation authorization", () => { + it("requests loopback authority for an IPv6-only browser origin", async () => { + const endpoint = "http://127.0.0.1:9222"; + const origin = "http://[::1]:3000"; + const ceiling = { + capability: "browser_observe" as const, + roots: [], + executables: [], + environment_names: [], + origins: [endpoint, origin], + network: "loopback" as const, + mount: false, + }; + const authority = await createPermissionAuthority( + [ceiling], + [ + { + ...ceiling, + grant_id: "administrator:browser_observe", + lifetime: "administrator", + operation_identity: null, + expires_at: null, + }, + ], + ); + if (!authority.ok) throw authority.error; + + const result = await listBrowserTargets( + undefined, + authority.value, + listBrowserTargetsInputSchema.parse({ + cdp_endpoint: endpoint, + allowed_origins: [origin], + approved: true, + }), + ); + expect(result).toMatchObject({ + ok: false, + error: { _tag: "AnalysisCapabilityUnavailableError" }, + }); + }); +}); diff --git a/src/application/CapabilityInventory.contract.test.ts b/src/application/CapabilityInventory.contract.test.ts new file mode 100644 index 0000000000..caf5731366 --- /dev/null +++ b/src/application/CapabilityInventory.contract.test.ts @@ -0,0 +1,30 @@ +import { describe, expect, it } from "vitest"; + +import { toolAvailability } from "../contracts/toolOutputSchemaPrimitives.js"; +import { buildCapabilityInventory } from "./CapabilityInventory.js"; + +describe("capability inventory contract", () => { + it("produces valid availability and rejects contradictory states", () => { + const inventory = buildCapabilityInventory( + { open: false, capabilities: [] }, + { + processCaptureEnabled: false, + evidenceFileRoots: 0, + investigationInputRoots: 0, + }, + ); + const unavailable = inventory.find(({ available }) => !available); + expect(unavailable).toBeDefined(); + expect(toolAvailability.safeParse(unavailable).success).toBe(true); + expect( + toolAvailability.safeParse({ ...unavailable, available: true }).success, + ).toBe(false); + expect( + toolAvailability.safeParse({ + ...unavailable, + available: false, + reason: "available", + }).success, + ).toBe(false); + }); +}); diff --git a/tests/composition/analysis-sessions/capabilityInventory.test.ts b/src/application/CapabilityInventory.test.ts similarity index 99% rename from tests/composition/analysis-sessions/capabilityInventory.test.ts rename to src/application/CapabilityInventory.test.ts index 3801cec5d2..5b0708652f 100644 --- a/tests/composition/analysis-sessions/capabilityInventory.test.ts +++ b/src/application/CapabilityInventory.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { buildCapabilityInventory } from "../../../src/application/CapabilityInventory.js"; +import { buildCapabilityInventory } from "./CapabilityInventory.js"; const enabledPolicy: Parameters[1] = { processCaptureEnabled: true, diff --git a/src/application/ClientRegistrationStatus.ts b/src/application/ClientRegistrationStatus.ts index a680173e23..af23439416 100644 --- a/src/application/ClientRegistrationStatus.ts +++ b/src/application/ClientRegistrationStatus.ts @@ -8,14 +8,37 @@ import { PRODUCT_IDENTITY } from "../identity.js"; import { MCP_STARTUP_POLICY } from "../mcpStartupPolicy.js"; import { supportedClients } from "./SupportedClients.js"; -export interface ClientRegistrationStatus { +interface ClientRegistrationStatusBase { readonly client: string; readonly config_path: string; - readonly command: readonly string[]; - readonly state: "aligned" | "stale" | "missing" | "invalid"; - readonly remediation: string | null; } +type RegistrationCommand = readonly [string, ...string[]]; + +export type ClientRegistrationStatus = ClientRegistrationStatusBase & + ( + | { + readonly command: RegistrationCommand; + readonly state: "aligned"; + readonly remediation: null; + } + | { + readonly command: RegistrationCommand; + readonly state: "stale"; + readonly remediation: string; + } + | { + readonly command: readonly []; + readonly state: "missing" | "invalid"; + readonly remediation: string; + } + ); + +export type UnhealthyClientRegistrationStatus = Exclude< + ClientRegistrationStatus, + { readonly state: "aligned" } +>; + const objectSchema = z.record(z.string(), z.unknown()); const registrationSchema = z .object({ @@ -44,13 +67,18 @@ export const readClientRegistrationStatuses = async ( ); const raw = servers[PRODUCT_IDENTITY.mcpServerKey]; if (raw === undefined) { - statuses.push(status(client.name, client.configPath, [], "missing")); + statuses.push( + unavailableStatus(client.name, client.configPath, "missing"), + ); continue; } const registration = registrationSchema.parse(raw); - const command = [registration.command, ...registration.args]; + const command: RegistrationCommand = [ + registration.command, + ...registration.args, + ]; statuses.push( - status( + configuredStatus( client.name, client.configPath, command, @@ -61,10 +89,9 @@ export const readClientRegistrationStatuses = async ( ); } catch (cause: unknown) { statuses.push( - status( + unavailableStatus( client.name, client.configPath, - [], isMissing(cause) ? "missing" : "invalid", ), ); @@ -102,20 +129,29 @@ const registrationAligned = ( ); }; -const status = ( +const remediation = + "Run rea setup to refresh this registration, then restart the client."; + +const configuredStatus = ( client: string, configPath: string, - command: readonly string[], - state: ClientRegistrationStatus["state"], + command: RegistrationCommand, + state: "aligned" | "stale", +): ClientRegistrationStatus => + state === "aligned" + ? { client, config_path: configPath, command, state, remediation: null } + : { client, config_path: configPath, command, state, remediation }; + +const unavailableStatus = ( + client: string, + configPath: string, + state: "missing" | "invalid", ): ClientRegistrationStatus => ({ client, config_path: configPath, - command, + command: [], state, - remediation: - state === "aligned" - ? null - : "Run rea setup to refresh this registration, then restart the client.", + remediation, }); const exists = async (path: string | undefined): Promise => { diff --git a/src/application/Doctor.ts b/src/application/Doctor.ts index c8d46a6581..71878e6b39 100644 --- a/src/application/Doctor.ts +++ b/src/application/Doctor.ts @@ -19,6 +19,7 @@ import { PRODUCT_IDENTITY, SDK_IDENTITY } from "../identity.js"; import { readClientRegistrationStatuses, type ClientRegistrationStatus, + type UnhealthyClientRegistrationStatus, } from "./ClientRegistrationStatus.js"; import { inspectRuntimeExecutables, @@ -214,7 +215,10 @@ const collectDoctorIdentity = async ( checks: [ ...(skillAligned ? [] : [skillIdentityCheck(installedSkillIdentity)]), ...registrations - .filter(({ state }) => state !== "aligned") + .filter( + (registration): registration is UnhealthyClientRegistrationStatus => + registration.state !== "aligned", + ) .map(registrationCheck), ], value: { @@ -283,15 +287,13 @@ const skillIdentityCheck = ( }); const registrationCheck = ( - registration: ClientRegistrationStatus, + registration: UnhealthyClientRegistrationStatus, ): DoctorCheck => ({ name: `registration:${registration.client}`, ok: false, classification: "config_drift", detail: registration.config_path, - remediation: - registration.remediation ?? - "Run rea setup, then restart the affected client.", + remediation: registration.remediation, }); const installationState = ( diff --git a/src/application/DoctorScope.ts b/src/application/DoctorScope.ts index 6a42649857..2af795e8cc 100644 --- a/src/application/DoctorScope.ts +++ b/src/application/DoctorScope.ts @@ -1,4 +1,7 @@ -import type { ClientRegistrationStatus } from "./ClientRegistrationStatus.js"; +import type { + ClientRegistrationStatus, + UnhealthyClientRegistrationStatus, +} from "./ClientRegistrationStatus.js"; import type { DoctorCheck, DoctorProviderInspection, @@ -174,13 +177,14 @@ const selectedRegistrationCheck = ( } : registrationCheck(status); -const registrationCheck = (status: ClientRegistrationStatus): DoctorCheck => ({ +const registrationCheck = ( + status: UnhealthyClientRegistrationStatus, +): DoctorCheck => ({ name: `registration:${status.client}`, ok: false, classification: "config_drift", detail: status.config_path, - remediation: - status.remediation ?? "Run rea setup, then restart the affected client.", + remediation: status.remediation, }); const selectedSkillCheck = ( diff --git a/src/application/ElectronBoundaryAnalysis.ts b/src/application/ElectronBoundaryAnalysis.ts index c99eee6019..531e3f9074 100644 --- a/src/application/ElectronBoundaryAnalysis.ts +++ b/src/application/ElectronBoundaryAnalysis.ts @@ -151,13 +151,15 @@ export const summarizeElectronBoundaries = ( }, sender_validation_observations: validations.length, utility_processes: utilities.length, - resolved_utility_entrypoints: utilities.filter(({ file, finding }) => - resolvesToFile({ - file, - specifier: finding.module_path, - context: finding.module_resolution_context ?? "module-specifier", - files, - }), + resolved_utility_entrypoints: utilities.filter( + ({ file, finding }) => + finding.module_path !== null && + resolvesToFile({ + file, + specifier: finding.module_path, + context: finding.module_resolution_context, + files, + }), ).length, native_addon_bindings: nativeBindings.length, resolved_native_addon_bindings: nativeBindings.filter(({ file, finding }) => @@ -195,14 +197,13 @@ const isMainHandler = ({ finding }: ElectronIpcRecord): boolean => interface ResolveToFileInput { readonly file: JavaScriptArtifactFile; - readonly specifier: string | null; + readonly specifier: string; readonly context: "module-specifier" | "filesystem-expression"; readonly files: ReadonlyMap; readonly kind?: JavaScriptArtifactFile["kind"]; } const resolvesToFile = (input: ResolveToFileInput): boolean => { - if (input.specifier === null) return false; const resolved = resolveArtifactPathByContext({ declaredPath: input.specifier, sourcePath: input.file.path, diff --git a/src/application/ElectronBoundaryGraphIpc.ts b/src/application/ElectronBoundaryGraphIpc.ts index 16e12110ed..e2124e9f4e 100644 --- a/src/application/ElectronBoundaryGraphIpc.ts +++ b/src/application/ElectronBoundaryGraphIpc.ts @@ -162,7 +162,7 @@ const addHandlerNode = (input: IpcHandlerInput): ApplicationNode => { identity: artifactLocalIdentity( file.sha256, "electron-ipc-handler", - `${finding.side}:${finding.operation}:${finding.channel ?? finding.channel_expression ?? "[missing]"}:${electronRangeKey(handlerRange)}`, + `${finding.side}:${finding.operation}:${finding.channel ?? finding.channel_expression}:${electronRangeKey(handlerRange)}`, ), observations: [ { diff --git a/src/application/ElectronBoundaryGraphWindows.ts b/src/application/ElectronBoundaryGraphWindows.ts index e093e48f78..169b87a471 100644 --- a/src/application/ElectronBoundaryGraphWindows.ts +++ b/src/application/ElectronBoundaryGraphWindows.ts @@ -110,12 +110,15 @@ const addWindowPreload = ( input: FindingInput, window: ApplicationNode, ): void => { - const declared = input.value.preload_path; - if (declared === null) return; + if (input.value.preload_path === null) return; + const { + preload_path: declared, + preload_resolution_context: resolutionContext, + } = input.value; const resolution = resolveArtifactPathByContext({ declaredPath: declared, sourcePath: input.file.path, - context: input.value.preload_resolution_context ?? "module-specifier", + context: resolutionContext, files: input.context.filesByPath, }); const role = createElectronRoleNode(input.context, { @@ -210,7 +213,7 @@ const addUtilityProcess = ( identity: artifactLocalIdentity( file.sha256, "electron-utility-process", - `${value.module_path ?? value.module_expression ?? "[missing]"}:${electronRangeKey(value.location)}`, + `${value.module_path ?? value.module_expression}:${electronRangeKey(value.location)}`, ), observations: [ { @@ -248,7 +251,7 @@ const addUtilityProcess = ( const resolution = resolveArtifactPathByContext({ declaredPath: value.module_path, sourcePath: file.path, - context: value.module_resolution_context ?? "module-specifier", + context: value.module_resolution_context, files: context.filesByPath, }); const resolved = resolution.resolved_path; diff --git a/tests/composition/evidence-investigations/residualUnknown.test.ts b/src/application/EvidenceLedger.residualUnknown.test.ts similarity index 97% rename from tests/composition/evidence-investigations/residualUnknown.test.ts rename to src/application/EvidenceLedger.residualUnknown.test.ts index 7aaa2ffbae..3392454b64 100644 --- a/tests/composition/evidence-investigations/residualUnknown.test.ts +++ b/src/application/EvidenceLedger.residualUnknown.test.ts @@ -1,19 +1,19 @@ import { describe, expect, it } from "vitest"; -import { EvidenceLedger } from "../../../src/application/EvidenceLedger.js"; -import { createEvidence } from "../../../src/domain/evidence.js"; +import { EvidenceLedger } from "./EvidenceLedger.js"; +import { createEvidence } from "../domain/evidence.js"; import { createEvidenceBundle, parseEvidenceBundle, serializeEvidenceBundle, -} from "../../../src/domain/evidenceBundle.js"; +} from "../domain/evidenceBundle.js"; import { createResidualUnknown, recordUnknownInputSchema, updateUnknownInputSchema, type RecordUnknownInput, type ResidualUnknown, -} from "../../../src/domain/residualUnknown.js"; +} from "../domain/residualUnknown.js"; const provider = { id: "fixture", name: "Fixture", version: "1" }; const ledger = (): EvidenceLedger => diff --git a/src/application/EvidenceLedger.test.ts b/src/application/EvidenceLedger.test.ts new file mode 100644 index 0000000000..36e5c94e35 --- /dev/null +++ b/src/application/EvidenceLedger.test.ts @@ -0,0 +1,194 @@ +import { describe, expect, it } from "vitest"; + +import type { BinaryTarget } from "../domain/binaryTarget.js"; +import { createEvidence, evidenceSchema } from "../domain/evidence.js"; +import { createEvidenceBundle } from "../domain/evidenceBundle.js"; +import { recordUnknownInputSchema } from "../domain/residualUnknown.js"; +import { EvidenceLedger } from "./EvidenceLedger.js"; + +const TARGET: BinaryTarget = { + path: "/tmp/fixture", + sha256: "a".repeat(64), + kind: "executable", + format: "mach-o", + architecture: "arm64", + availableArchitectures: ["arm64"], +}; +const PROVIDER = { id: "fixture", name: "Fixture provider", version: "1" }; + +describe("evidence ledger recording", () => { + it("deduplicates and atomically imports bounded bundles", () => { + const evidence = createEvidence(TARGET, PROVIDER, { + operation: "health", + parameters: {}, + result: true, + }); + const ledger = new EvidenceLedger({ maxRecords: 1, maxBytes: 1_000_000 }); + expect(ledger.record(evidence)).toEqual({ ok: true, value: "added" }); + expect(ledger.record(evidence)).toEqual({ ok: true, value: "duplicate" }); + const relocated = createEvidence( + { ...TARGET, path: "/relocated/different-name" }, + PROVIDER, + { operation: "health", parameters: {}, result: true }, + ); + expect(relocated.evidence_id).toBe(evidence.evidence_id); + expect(ledger.record(relocated)).toEqual({ + ok: true, + value: "duplicate", + }); + expect(ledger.import(createEvidenceBundle([evidence]))).toEqual({ + ok: true, + value: { recordsAdded: 0, unknownsAdded: 0, changed: false }, + }); + expect(ledger.export().records).toEqual([evidence]); + ledger.clear(); + expect(ledger.export().records).toEqual([]); + }); + + it("treats canonical JSON key order as semantically irrelevant", () => { + const evidence = createEvidence(TARGET, PROVIDER, { + operation: "health", + parameters: { alpha: 1, beta: 2 }, + result: { alpha: 1, beta: 2 }, + }); + const reordered = evidenceSchema.parse({ + ...evidence, + parameters: { beta: 2, alpha: 1 }, + normalized_result: { beta: 2, alpha: 1 }, + }); + const ledger = new EvidenceLedger({ maxRecords: 1, maxBytes: 1_000_000 }); + expect(ledger.record(evidence)).toEqual({ ok: true, value: "added" }); + expect(ledger.record(reordered)).toEqual({ + ok: true, + value: "duplicate", + }); + }); + + it("returns typed record and byte limit failures without eviction", () => { + const first = createEvidence(TARGET, PROVIDER, { + operation: "health", + parameters: {}, + result: true, + }); + const second = createEvidence(TARGET, PROVIDER, { + operation: "health", + parameters: { changed: true }, + result: true, + }); + const recordBound = new EvidenceLedger({ + maxRecords: 1, + maxBytes: 1_000_000, + }); + expect(recordBound.record(first).ok).toBe(true); + expect(recordBound.record(second)).toMatchObject({ + ok: false, + error: { _tag: "EvidenceLimitError", limit: "records", maximum: 1 }, + }); + expect(recordBound.export().records).toEqual([first]); + + const byteBound = new EvidenceLedger({ maxRecords: 10, maxBytes: 1 }); + expect(byteBound.record(first)).toMatchObject({ + ok: false, + error: { _tag: "EvidenceLimitError", limit: "bytes", maximum: 1 }, + }); + expect(byteBound.export().records).toEqual([]); + }); + + it("counts unknown revisions when enforcing direct record limits", () => { + const ledger = new EvidenceLedger({ + maxRecords: 2, + maxBytes: 1_000_000, + }); + const mutation = createEvidence(undefined, PROVIDER, { + predicateType: "rea.residual-unknown-mutation/v1", + operation: "record_unknown", + parameters: {}, + result: { action: "record" }, + }); + const unknown = recordUnknownInputSchema.parse({ + approved: true, + question: "What remains unresolved?", + severity: "high", + domain: "record-limit-test", + supporting_evidence_ids: [], + contradicting_evidence_ids: [], + required_authority: "shipped-artifact", + required_confidence: "observed", + required_environment: null, + recommended_probes: [], + relationships: [], + }); + expect(ledger.recordUnknown(unknown, mutation).ok).toBe(true); + + const direct = createEvidence(TARGET, PROVIDER, { + operation: "health", + parameters: {}, + result: true, + }); + expect(ledger.record(direct)).toMatchObject({ + ok: false, + error: { _tag: "EvidenceLimitError", limit: "records", maximum: 2 }, + }); + expect(ledger.export()).toMatchObject({ + records: [mutation], + unknowns: [expect.objectContaining({ domain: "record-limit-test" })], + }); + }); +}); + +describe("evidence bundle imports", () => { + it("rejects conflicting duplicate IDs without mutating the ledger", () => { + const ledger = new EvidenceLedger({ maxRecords: 2, maxBytes: 1_000_000 }); + const first = createEvidence(TARGET, PROVIDER, { + operation: "health", + parameters: {}, + result: true, + rawResult: { pid: 1 }, + }); + expect(ledger.record(first).ok).toBe(true); + const bundle = createEvidenceBundle([first]); + expect( + ledger.import({ + ...bundle, + records: [{ ...first, normalized_result: false }], + }), + ).toMatchObject({ + ok: false, + error: { _tag: "EvidenceIntegrityError" }, + }); + expect(ledger.export().records).toEqual([first]); + }); + + it("atomically rejects Evidence plus unknown when the batch exceeds limits", () => { + const ledger = new EvidenceLedger({ maxRecords: 2, maxBytes: 1_000_000 }); + const output = createEvidence(undefined, PROVIDER, { + operation: "derived", + parameters: {}, + result: { status: "unknown" }, + }); + const mutation = createEvidence(undefined, PROVIDER, { + predicateType: "rea.residual-unknown-mutation/v1", + operation: "record_unknown", + parameters: {}, + result: { action: "record" }, + }); + const unknown = recordUnknownInputSchema.parse({ + approved: true, + question: "What remains unresolved?", + severity: "high", + domain: "atomic-test", + supporting_evidence_ids: [], + contradicting_evidence_ids: [], + required_authority: "shipped-artifact", + required_confidence: "observed", + required_environment: null, + recommended_probes: [], + relationships: [], + }); + expect(ledger.recordWithUnknown(output, unknown, mutation)).toMatchObject({ + ok: false, + error: { _tag: "EvidenceLimitError" }, + }); + expect(ledger.export()).toMatchObject({ records: [], unknowns: [] }); + }); +}); diff --git a/src/application/JavaScriptArtifactAnalysis.ts b/src/application/JavaScriptArtifactAnalysis.ts index 8037e72e53..30e18ccbeb 100644 --- a/src/application/JavaScriptArtifactAnalysis.ts +++ b/src/application/JavaScriptArtifactAnalysis.ts @@ -277,7 +277,7 @@ const invalidPackage = ( const unavailablePackage = ( file: JavaScriptArtifactFile, limitation: string, -): JavaScriptPackageObservation => ({ +): JavaScriptPackageObservation & { readonly status: "unavailable" } => ({ path: file.path, sha256: file.sha256, status: "unavailable", @@ -394,17 +394,24 @@ const collectSourceMapOriginals = ( } } const omitted = total - sources.length; - return { - path: file.path, - sha256: file.sha256, - status: omitted === 0 ? "included" : "truncated", - sources, - omitted_sources: omitted, - limitation: - omitted === 0 - ? null - : "Original-source inventory reached the approved source-map limit.", - }; + return omitted === 0 + ? { + path: file.path, + sha256: file.sha256, + status: "included", + sources, + omitted_sources: 0, + limitation: null, + } + : { + path: file.path, + sha256: file.sha256, + status: "truncated", + sources, + omitted_sources: omitted, + limitation: + "Original-source inventory reached the approved source-map limit.", + }; }; const unavailableSourceMap = ( diff --git a/src/application/JavaScriptArtifactAnalysisTypes.ts b/src/application/JavaScriptArtifactAnalysisTypes.ts index cf2eb6338e..0dd9c93450 100644 --- a/src/application/JavaScriptArtifactAnalysisTypes.ts +++ b/src/application/JavaScriptArtifactAnalysisTypes.ts @@ -8,18 +8,35 @@ import type { } from "../domain/javascriptSemanticIr.js"; import type { JavaScriptArtifactFile } from "./JavaScriptArtifactFiles.js"; -/** Parsed package metadata used only for static entrypoint discovery. */ -export interface JavaScriptPackageObservation { +interface JavaScriptStructuredObservation { readonly path: string; readonly sha256: string; - readonly status: "included" | "invalid" | "unavailable"; +} + +interface JavaScriptPackageValues { readonly name: string | null; readonly version: string | null; readonly main: string | null; readonly renderer: string | null; - readonly limitation: string | null; } +/** Parsed package metadata used only for static entrypoint discovery. */ +export type JavaScriptPackageObservation = JavaScriptStructuredObservation & + ( + | (JavaScriptPackageValues & { + readonly status: "included"; + readonly limitation: null; + }) + | { + readonly status: "invalid" | "unavailable"; + readonly name: null; + readonly version: null; + readonly main: null; + readonly renderer: null; + readonly limitation: string; + } + ); + /** One HTML script source observed without building or executing a DOM. */ export interface JavaScriptHtmlScriptObservation { readonly html_path: string; @@ -36,24 +53,50 @@ export interface JavaScriptSourceMapOriginal { } /** Bounded local source-map parse result. */ -export interface JavaScriptSourceMapObservation { - readonly path: string; - readonly sha256: string; - readonly status: "included" | "truncated" | "invalid" | "not-approved"; - readonly sources: readonly JavaScriptSourceMapOriginal[]; - readonly omitted_sources: number | null; - readonly limitation: string | null; -} +export type JavaScriptSourceMapObservation = JavaScriptStructuredObservation & + ( + | { + readonly status: "included"; + readonly sources: readonly JavaScriptSourceMapOriginal[]; + readonly omitted_sources: 0; + readonly limitation: null; + } + | { + readonly status: "truncated"; + readonly sources: readonly JavaScriptSourceMapOriginal[]; + readonly omitted_sources: number | null; + readonly limitation: string; + } + | { + readonly status: "invalid" | "not-approved"; + readonly sources: readonly []; + readonly omitted_sources: 0; + readonly limitation: string; + } + ); /** Bounded parse status for one inventoried JSON module. */ -export interface JavaScriptJsonModuleObservation { - readonly path: string; - readonly sha256: string; - readonly status: "included" | "invalid" | "unavailable"; - readonly top_level_keys: readonly string[]; - readonly omitted_top_level_keys: number | null; - readonly limitation: string | null; -} +export type JavaScriptJsonModuleObservation = JavaScriptStructuredObservation & + ( + | { + readonly status: "included"; + readonly top_level_keys: readonly string[]; + readonly omitted_top_level_keys: number; + readonly limitation: null; + } + | { + readonly status: "invalid"; + readonly top_level_keys: readonly []; + readonly omitted_top_level_keys: 0; + readonly limitation: string; + } + | { + readonly status: "unavailable"; + readonly top_level_keys: readonly []; + readonly omitted_top_level_keys: null; + readonly limitation: string; + } + ); /** One relevant file plus optional AST-only JavaScript facts. */ export interface AnalyzedJavaScriptArtifactFile { diff --git a/src/application/JavaScriptArtifactGraphBuilder.ts b/src/application/JavaScriptArtifactGraphBuilder.ts index 6221882cb6..47217bba08 100644 --- a/src/application/JavaScriptArtifactGraphBuilder.ts +++ b/src/application/JavaScriptArtifactGraphBuilder.ts @@ -20,9 +20,10 @@ import { addJavaScriptSourceModules, } from "./JavaScriptModuleRelationships.js"; import { - completeReconstructionCoverage, - partialReconstructionCoverage, -} from "./JavaScriptArtifactGraphEvidence.js"; + completeApplicationCoverage, + partialApplicationCoverage, + truncatedApplicationCoverage, +} from "../domain/javascriptApplicationEvidenceSchemas.js"; import { addJavaScriptArtifactContainers, addJavaScriptArtifactFiles, @@ -108,24 +109,21 @@ const graphCoverage = (context: JavaScriptArtifactGraphContext) => { malformedStructuredData || partialJavaScript; if (context.analysis.truncated_scopes > 0) - return partialReconstructionCoverage( + return truncatedApplicationCoverage( reconstructionLimits(context.input), truncationOmittedCount(context), - true, ); if (exactLimitOmissions > 0) - return partialReconstructionCoverage( + return truncatedApplicationCoverage( reconstructionLimits(context.input), exactLimitOmissions, - true, ); if (unknownGap) - return partialReconstructionCoverage( + return partialApplicationCoverage( reconstructionLimits(context.input), null, - false, ); - return completeReconstructionCoverage(reconstructionLimits(context.input)); + return completeApplicationCoverage(reconstructionLimits(context.input)); }; const truncationOmittedCount = ( diff --git a/src/application/JavaScriptArtifactGraphContext.ts b/src/application/JavaScriptArtifactGraphContext.ts index 9a018bcc31..5246eb09d2 100644 --- a/src/application/JavaScriptArtifactGraphContext.ts +++ b/src/application/JavaScriptArtifactGraphContext.ts @@ -1,5 +1,10 @@ import type { ArtifactInventorySnapshot } from "./ArtifactInventory.js"; -import type { ApplicationGraphEvidence } from "../domain/javascriptApplicationEvidenceSchemas.js"; +import { + completeApplicationCoverage, + partialApplicationCoverage, + truncatedApplicationCoverage, + type ApplicationGraphEvidence, +} from "../domain/javascriptApplicationEvidenceSchemas.js"; import type { ApplicationNode } from "../domain/javascriptApplicationGraph.js"; import type { JavaScriptSourceRange } from "../domain/javascriptStaticAnalysisTypes.js"; import type { JavaScriptArtifactAnalysis } from "./JavaScriptArtifactAnalysisTypes.js"; @@ -12,8 +17,6 @@ import { JavaScriptArtifactGraphAccumulator } from "./JavaScriptArtifactGraphAcc import { artifactObservationEvidence, astObservationEvidence, - completeReconstructionCoverage, - partialReconstructionCoverage, staticInferenceEvidence, unavailableAstEvidence, } from "./JavaScriptArtifactGraphEvidence.js"; @@ -117,7 +120,7 @@ export const addArtifactContainsEdge = ( : input.file.sha256, path: input.file.path, operation: input.operation, - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), }), }); }; @@ -186,7 +189,7 @@ export const addUnavailableStaticParseScope = ( sha256: input.file.sha256, path: input.file.path, operation: input.operation, - coverage: partialReconstructionCoverage([], null, false), + coverage: partialApplicationCoverage([], null), limitation: input.limitation, }), }, @@ -201,7 +204,7 @@ export const addUnavailableStaticParseScope = ( sha256: input.file.sha256, path: input.file.path, operation: "associate-unavailable-parse-scope", - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), }), }); }; @@ -214,13 +217,10 @@ export const javascriptAnalysisCoverage = ( input: JavaScriptArtifactReconstructionInput, ): JavaScriptArtifactGraphCoverage => analysis.parse_status === "complete" - ? completeReconstructionCoverage(javaScriptAnalysisLimits(input)) - : { - status: "partial", - truncated: analysis.parse_status === "truncated", - omitted_count: null, - limits: javaScriptAnalysisLimits(input), - }; + ? completeApplicationCoverage(javaScriptAnalysisLimits(input)) + : analysis.parse_status === "truncated" + ? truncatedApplicationCoverage(javaScriptAnalysisLimits(input), null) + : partialApplicationCoverage(javaScriptAnalysisLimits(input), null); /** Stable identity for a fact scoped to one exact artifact. */ export const artifactLocalIdentity = ( @@ -274,7 +274,7 @@ export const createElectronRoleNode = ( sha256: input.anchor.sha256, path: input.anchor.path, operation: "discover-electron-entrypoint", - coverage: input.coverage ?? completeReconstructionCoverage(), + coverage: input.coverage ?? completeApplicationCoverage(), limitations: input.resolution.limitations, ...(input.range === undefined ? {} : { range: input.range }), }), @@ -305,7 +305,7 @@ export const linkElectronRoleToAsset = ( sha256: input.anchor.sha256, path: input.anchor.path, operation: "resolve-electron-entrypoint", - coverage: input.coverage ?? completeReconstructionCoverage(), + coverage: input.coverage ?? completeApplicationCoverage(), limitations: input.resolution.limitations, ...(input.range === undefined ? {} : { range: input.range }), }), diff --git a/src/application/JavaScriptArtifactGraphDocuments.ts b/src/application/JavaScriptArtifactGraphDocuments.ts index 9d04088df9..a7f4bfea28 100644 --- a/src/application/JavaScriptArtifactGraphDocuments.ts +++ b/src/application/JavaScriptArtifactGraphDocuments.ts @@ -5,11 +5,11 @@ import { linkElectronRoleToAsset, type JavaScriptArtifactGraphContext, } from "./JavaScriptArtifactGraphContext.js"; +import { artifactObservationEvidence } from "./JavaScriptArtifactGraphEvidence.js"; import { - artifactObservationEvidence, - completeReconstructionCoverage, - partialReconstructionCoverage, -} from "./JavaScriptArtifactGraphEvidence.js"; + completeApplicationCoverage, + truncatedApplicationCoverage, +} from "../domain/javascriptApplicationEvidenceSchemas.js"; import { resolveArtifactPathByContext } from "./JavaScriptArtifactPathResolution.js"; /** Project HTML renderer entrypoints and their local script assets. */ @@ -68,7 +68,7 @@ export const addJavaScriptHtmlRoles = ( target: resolved, file: html, range: script.location, - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), relation: "loads", properties: { script_path: script.script_path, @@ -93,7 +93,7 @@ export const addJavaScriptSourceMapOriginals = ( if (mapFile === undefined || mapNode === undefined) continue; const coverage = sourceMap.status === "truncated" - ? partialReconstructionCoverage( + ? truncatedApplicationCoverage( [ { name: "max-source-map-sources", @@ -102,9 +102,8 @@ export const addJavaScriptSourceMapOriginals = ( }, ], sourceMap.omitted_sources, - true, ) - : completeReconstructionCoverage(); + : completeApplicationCoverage(); for (const original of sourceMap.sources) { const node = context.accumulator.addNode({ kind: "source-module", diff --git a/src/application/JavaScriptArtifactGraphEvidence.ts b/src/application/JavaScriptArtifactGraphEvidence.ts index 5a87a0a22a..a8945f376e 100644 --- a/src/application/JavaScriptArtifactGraphEvidence.ts +++ b/src/application/JavaScriptArtifactGraphEvidence.ts @@ -111,28 +111,6 @@ export const unavailableAstEvidence = ( evidence_ids: [], }); -/** Complete local projection coverage under named hard limits. */ -export const completeReconstructionCoverage = ( - limits: ReconstructionEvidenceCoverage["limits"] = [], -): ReconstructionEvidenceCoverage => ({ - status: "complete", - truncated: false, - omitted_count: 0, - limits: [...limits], -}); - -/** Partial reconstruction coverage with either exact truncation or a policy gap. */ -export const partialReconstructionCoverage = ( - limits: ReconstructionEvidenceCoverage["limits"], - omitted: number | null, - truncated: boolean, -): ReconstructionEvidenceCoverage => ({ - status: "partial", - truncated, - omitted_count: omitted, - limits: [...limits], -}); - const artifactReference = (sha256: string) => ({ available: true as const, artifact_id: `art_${sha256}`, diff --git a/src/application/JavaScriptArtifactGraphFindings.ts b/src/application/JavaScriptArtifactGraphFindings.ts index 9037d589e6..fc88b43cf7 100644 --- a/src/application/JavaScriptArtifactGraphFindings.ts +++ b/src/application/JavaScriptArtifactGraphFindings.ts @@ -78,7 +78,7 @@ const addReference = ( identity: artifactLocalIdentity( input.file.sha256, input.value.kind, - input.value.specifier ?? input.value.expression ?? "[dynamic]", + input.value.specifier ?? input.value.expression, ), observations: [ { @@ -406,7 +406,7 @@ const unresolvedReferenceNode = ( identity: artifactLocalIdentity( file.sha256, "unresolved-reference", - `${reference.kind}:${reference.specifier ?? reference.expression ?? "[dynamic]"}`, + `${reference.kind}:${reference.specifier ?? reference.expression}`, ), observations: [ { diff --git a/src/application/JavaScriptArtifactGraphStructure.ts b/src/application/JavaScriptArtifactGraphStructure.ts index 2d75e2501a..7d31ca3638 100644 --- a/src/application/JavaScriptArtifactGraphStructure.ts +++ b/src/application/JavaScriptArtifactGraphStructure.ts @@ -1,5 +1,6 @@ import type { ArtifactInventorySnapshot } from "./ArtifactInventory.js"; import type { ApplicationNode } from "../domain/javascriptApplicationGraph.js"; +import { completeApplicationCoverage } from "../domain/javascriptApplicationEvidenceSchemas.js"; import type { JavaScriptArtifactAnalysis } from "./JavaScriptArtifactAnalysisTypes.js"; import type { JavaScriptArtifactContainer, @@ -17,7 +18,6 @@ import { } from "./JavaScriptArtifactGraphContext.js"; import { artifactObservationEvidence, - completeReconstructionCoverage, staticInferenceEvidence, } from "./JavaScriptArtifactGraphEvidence.js"; import { resolveArtifactPathByContext } from "./JavaScriptArtifactPathResolution.js"; @@ -61,7 +61,7 @@ export const createJavaScriptArtifactRootNode = ( sha256: root.sha256, path: "artifact-root", operation: "inventory-root", - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), limitations: [ "artifact-root is a path-independent alias; the application result retains the canonical local input path.", ], @@ -91,7 +91,7 @@ export const addJavaScriptArtifactContainers = ( sha256: container.sha256, path: container.path, operation: "inventory-nested-asar", - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), }), }, ], @@ -106,7 +106,7 @@ export const addJavaScriptArtifactContainers = ( sha256: context.snapshot.manifest.root_sha256, path: container.path, operation: "inventory-nested-asar", - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), }), }); } @@ -147,7 +147,7 @@ export const addJavaScriptArtifactFiles = ( sha256: file.container_sha256, path: file.path, operation: "map-entry-content", - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), }), }); } @@ -167,16 +167,12 @@ export const addJavaScriptArtifactFiles = ( const packageValue = context.analysis.packages.find( ({ path }) => path === file.path, ); - if ( - packageValue?.status !== undefined && - packageValue.status !== "included" - ) + if (packageValue !== undefined && packageValue.status !== "included") addUnavailableStaticParseScope(context, { file, asset: target, operation: "parse-package-json", - limitation: - packageValue.limitation ?? "Package metadata could not be parsed.", + limitation: packageValue.limitation, }); const jsonValue = context.analysis.json_modules.find( ({ path }) => path === file.path, @@ -186,8 +182,7 @@ export const addJavaScriptArtifactFiles = ( file, asset: target, operation: "parse-json-module", - limitation: - jsonValue.limitation ?? "JSON module content could not be parsed.", + limitation: jsonValue.limitation, }); const sourceMap = context.analysis.source_maps.find( ({ path }) => path === file.path, @@ -200,8 +195,7 @@ export const addJavaScriptArtifactFiles = ( file, asset: target, operation: "parse-local-source-map", - limitation: - sourceMap.limitation ?? "Source-map content could not be parsed.", + limitation: sourceMap.limitation, }); } }; @@ -232,7 +226,7 @@ export const addJavaScriptPackageNodes = ( sha256: file.sha256, path: file.path, operation: "parse-package-json", - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), limitations: packageValue.limitation === null ? [] : [packageValue.limitation], }), @@ -250,7 +244,7 @@ export const addJavaScriptPackageNodes = ( sha256: file.sha256, path: file.path, operation: "associate-package-artifact", - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), }), }); } else @@ -312,7 +306,7 @@ const createFileTarget = ( sha256: file.sha256, path: file.path, operation: "inventory-relevant-file", - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), }), }, ], @@ -348,7 +342,7 @@ const createAsarEntry = ( sha256: file.container_sha256, path: file.path, operation: "inventory-asar-entry", - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), }), }, ], @@ -390,7 +384,7 @@ const addPackageRole = ( sha256: input.packageFile.sha256, path: input.packageFile.path, operation: "discover-package-entrypoint", - coverage: completeReconstructionCoverage(), + coverage: completeApplicationCoverage(), limitations: resolution.limitations, }), }); diff --git a/tests/composition/javascript-applications/javascriptArtifactPathResolution.test.ts b/src/application/JavaScriptArtifactPathResolution.test.ts similarity index 97% rename from tests/composition/javascript-applications/javascriptArtifactPathResolution.test.ts rename to src/application/JavaScriptArtifactPathResolution.test.ts index 591d65c5d2..c8c1a947cb 100644 --- a/tests/composition/javascript-applications/javascriptArtifactPathResolution.test.ts +++ b/src/application/JavaScriptArtifactPathResolution.test.ts @@ -3,9 +3,9 @@ import { describe, expect, it } from "vitest"; import { resolveArtifactPathByContext, type ResolveArtifactPathInput, -} from "../../../src/application/JavaScriptArtifactPathResolution.js"; -import type { JavaScriptArtifactFile } from "../../../src/application/JavaScriptArtifactFiles.js"; -import { analyzeJavaScriptStaticSource } from "../../../src/domain/javascriptStaticAnalysis.js"; +} from "./JavaScriptArtifactPathResolution.js"; +import type { JavaScriptArtifactFile } from "./JavaScriptArtifactFiles.js"; +import { analyzeJavaScriptStaticSource } from "../domain/javascriptStaticAnalysis.js"; describe("contextual JavaScript artifact path resolution", () => { it.each([ diff --git a/src/application/JavaScriptArtifactPathResolution.ts b/src/application/JavaScriptArtifactPathResolution.ts index 1f3ff3deff..3ed0408ec4 100644 --- a/src/application/JavaScriptArtifactPathResolution.ts +++ b/src/application/JavaScriptArtifactPathResolution.ts @@ -3,33 +3,42 @@ import { posix } from "node:path"; import type { JavaScriptArtifactFile } from "./JavaScriptArtifactFiles.js"; -/** Explicit outcome of bounded, artifact-confined path resolution. */ -export interface ArtifactPathResolution { +type ArtifactPathResolutionContext = + | "package-entrypoint" + | "filesystem-expression" + | "module-specifier" + | "html-reference"; + +type UnresolvedArtifactPathStatus = + | "not-found" + | "unavailable" + | "external" + | "rejected"; + +interface ArtifactPathResolutionBase { readonly declared_path: string; - readonly resolution_context: - | "package-entrypoint" - | "filesystem-expression" - | "module-specifier" - | "html-reference"; - readonly resolved_path: string | null; - readonly resolution_status: - | "resolved" - | "not-found" - | "unavailable" - | "external" - | "rejected"; + readonly resolution_context: ArtifactPathResolutionContext; readonly limitations: readonly string[]; } +/** Explicit outcome of bounded, artifact-confined path resolution. */ +export type ArtifactPathResolution = ArtifactPathResolutionBase & + ( + | { + readonly resolved_path: string; + readonly resolution_status: "resolved"; + } + | { + readonly resolved_path: null; + readonly resolution_status: UnresolvedArtifactPathStatus; + } + ); + /** Values needed to resolve a declaration without filesystem access. */ export interface ResolveArtifactPathInput { readonly declaredPath: string; readonly sourcePath: string; - readonly context: - | "package-entrypoint" - | "filesystem-expression" - | "module-specifier" - | "html-reference"; + readonly context: ArtifactPathResolutionContext; readonly files: ReadonlyMap; readonly htmlBaseHref?: string | null; readonly moduleKind?: "import" | "require"; @@ -50,11 +59,17 @@ const NODE_BUILTINS = new Set( builtinModules.map((name) => name.replace(/^node:/u, "")), ); -interface CandidateResolution { - readonly resolvedPath: string | null; - readonly status: ArtifactPathResolution["resolution_status"]; - readonly limitations: readonly string[]; -} +type CandidateResolution = + | { + readonly resolvedPath: string; + readonly status: "resolved"; + readonly limitations: readonly string[]; + } + | { + readonly resolvedPath: null; + readonly status: UnresolvedArtifactPathStatus; + readonly limitations: readonly string[]; + }; /** Resolve one declaration under its exact syntax/metadata context. */ export const resolveArtifactPathByContext = ( @@ -72,12 +87,7 @@ const resolveAtDepth = ( const confined = confineCandidate(input, candidate); if (typeof confined !== "string") return confined; const resolved = resolveCandidate(input, confined, packageDepth); - return outcome( - input, - resolved.status, - resolved.resolvedPath, - resolved.limitations, - ); + return outcome(input, resolved); }; const rejectDeclaration = ( @@ -85,17 +95,19 @@ const rejectDeclaration = ( ): ArtifactPathResolution | null => { const declared = input.declaredPath; if (declared.length === 0) - return outcome(input, "rejected", null, ["The declared path is empty."]); + return unresolvedOutcome(input, "rejected", [ + "The declared path is empty.", + ]); if (declared.length > 4_096) - return outcome(input, "rejected", null, [ + return unresolvedOutcome(input, "rejected", [ "The declared path exceeds the 4096-character resolution bound.", ]); if (declared.includes("\0") || declared.includes("\\")) - return outcome(input, "rejected", null, [ + return unresolvedOutcome(input, "rejected", [ "NUL and backslash path syntax are not admitted for canonical artifact paths.", ]); if (/%(?:2e|2f|5c)/iu.test(declared)) - return outcome(input, "rejected", null, [ + return unresolvedOutcome(input, "rejected", [ "Encoded dot or separator bytes are rejected before artifact path resolution.", ]); return null; @@ -114,13 +126,13 @@ const contextualCandidate = ( const fileUrl = fileUrlPath(declared); if (fileUrl !== undefined) return fileUrl; if (hasScheme(declared)) - return outcome(input, "external", null, [ + return unresolvedOutcome(input, "external", [ "URL and Node builtin schemes are outside static artifact module resolution.", ]); if (!declared.startsWith(".") && !declared.startsWith("/")) return bareModuleCandidate(input, declared); } else if (hasScheme(declared)) - return outcome(input, "external", null, [ + return unresolvedOutcome(input, "external", [ "URL schemes are outside this local artifact path context.", ]); const relative = declared.startsWith("/") ? declared.slice(1) : declared; @@ -139,11 +151,11 @@ const bareModuleCandidate = ( NODE_BUILTINS.has(packageName) || declared.startsWith("#") ) - return outcome(input, "external", null, [ + return unresolvedOutcome(input, "external", [ "The bare specifier is a Node builtin, package import map, or invalid package name.", ]); if (declared !== packageName) - return outcome(input, "external", null, [ + return unresolvedOutcome(input, "external", [ "Bare package subpaths remain unresolved unless an exact package-exports subpath model is available.", ]); const source = input.files.get(input.sourcePath); @@ -155,7 +167,7 @@ const bareModuleCandidate = ( if (directory === "." || directory === "") break; directory = posix.dirname(directory); } - return outcome(input, "external", null, [ + return unresolvedOutcome(input, "external", [ "No matching bare package was inventoried in an enclosing node_modules directory.", ]); }; @@ -190,7 +202,7 @@ const htmlCandidate = ( ): string | ArtifactPathResolution => { const declared = stripQueryAndFragment(input.declaredPath); if (hasScheme(declared)) - return outcome(input, "external", null, [ + return unresolvedOutcome(input, "external", [ "External HTML references are not mapped to local artifact assets.", ]); if (declared.startsWith("/")) return declared.slice(1); @@ -198,7 +210,7 @@ const htmlCandidate = ( if (base === undefined || base === null || base === "") return posix.join(posix.dirname(input.sourcePath), declared); if (hasScheme(base)) - return outcome(input, "external", null, [ + return unresolvedOutcome(input, "external", [ "The document base href is external, so its script reference is not a local artifact path.", ]); const basePath = base.startsWith("/") @@ -218,7 +230,7 @@ const confineCandidate = ( normalized.startsWith("../") || normalized.startsWith("/") ) - return outcome(input, "rejected", null, [ + return unresolvedOutcome(input, "rejected", [ "The resolved candidate escapes the canonical artifact root.", ]); return normalized === "." ? "" : normalized; @@ -282,11 +294,17 @@ const resolveCandidate = ( }, packageDepth + 1, ); - return { - resolvedPath: nested.resolved_path, - status: nested.resolution_status, - limitations: nested.limitations, - }; + return nested.resolution_status === "resolved" + ? { + resolvedPath: nested.resolved_path, + status: nested.resolution_status, + limitations: nested.limitations, + } + : { + resolvedPath: null, + status: nested.resolution_status, + limitations: nested.limitations, + }; }; const directCandidates = (candidate: string): readonly string[] => [ @@ -374,13 +392,27 @@ const stripQueryAndFragment = (value: string): string => const outcome = ( input: ResolveArtifactPathInput, - status: ArtifactPathResolution["resolution_status"], - resolvedPath: string | null, + resolution: CandidateResolution, +): ArtifactPathResolution => + resolution.status === "resolved" + ? { + declared_path: input.declaredPath, + resolution_context: input.context, + resolved_path: resolution.resolvedPath, + resolution_status: resolution.status, + limitations: resolution.limitations, + } + : { + declared_path: input.declaredPath, + resolution_context: input.context, + resolved_path: null, + resolution_status: resolution.status, + limitations: resolution.limitations, + }; + +const unresolvedOutcome = ( + input: ResolveArtifactPathInput, + status: UnresolvedArtifactPathStatus, limitations: readonly string[], -): ArtifactPathResolution => ({ - declared_path: input.declaredPath, - resolution_context: input.context, - resolved_path: resolvedPath, - resolution_status: status, - limitations, -}); +): ArtifactPathResolution => + outcome(input, { resolvedPath: null, status, limitations }); diff --git a/src/application/JavaScriptModuleRelationships.ts b/src/application/JavaScriptModuleRelationships.ts index 2e92ff7b4a..75865d3540 100644 --- a/src/application/JavaScriptModuleRelationships.ts +++ b/src/application/JavaScriptModuleRelationships.ts @@ -1,6 +1,11 @@ import { posix } from "node:path"; import type { ApplicationNode } from "../domain/javascriptApplicationGraph.js"; +import { + completeApplicationCoverage, + partialApplicationCoverage, + truncatedApplicationCoverage, +} from "../domain/javascriptApplicationEvidenceSchemas.js"; import type { JavaScriptModuleOrigin, JavaScriptSemanticIr, @@ -16,11 +21,12 @@ import { } from "./JavaScriptArtifactGraphContext.js"; import { astObservationEvidence, - completeReconstructionCoverage, - partialReconstructionCoverage, staticInferenceEvidence, } from "./JavaScriptArtifactGraphEvidence.js"; -import { resolveArtifactPathByContext } from "./JavaScriptArtifactPathResolution.js"; +import { + resolveArtifactPathByContext, + type ArtifactPathResolution, +} from "./JavaScriptArtifactPathResolution.js"; import { projectJavaScriptExportReturnShapes } from "./JavaScriptReturnShapeProjection.js"; interface SemanticAnalysis { @@ -36,18 +42,24 @@ interface RelationshipInput { readonly link: JavaScriptSemanticModuleLink; } -interface ResolvedModuleTarget { +type ResolvedModuleTarget = { readonly node: ApplicationNode; - readonly path: string | null; - readonly file: JavaScriptArtifactFile | null; - readonly status: - | "resolved" - | "not-found" - | "unavailable" - | "external" - | "rejected"; readonly limitations: readonly string[]; -} +} & ( + | { + readonly path: string; + readonly file: JavaScriptArtifactFile; + readonly status: "resolved"; + } + | { + readonly path: null; + readonly file: null; + readonly status: Exclude< + ArtifactPathResolution["resolution_status"], + "resolved" + >; + } +); /** Create one path-scoped source-module identity for every analyzed source file. */ export const addJavaScriptSourceModules = ( @@ -239,26 +251,32 @@ const resolveModuleTarget = ( ? "require" : "import", }); - const path = resolution.resolved_path; - const file = path === null ? undefined : input.context.filesByPath.get(path); - const node = - path === null - ? undefined - : (input.context.sourceModuleNodes.get(path) ?? - input.context.fileNodes.get(path)); - if (path !== null && file !== undefined && node !== undefined) + if (resolution.resolution_status !== "resolved") return { - node, - path, - file, - status: "resolved", + node: unresolvedModuleNode( + input, + specifier, + resolution.resolution_status, + ), + path: null, + file: null, + status: resolution.resolution_status, limitations: resolution.limitations, }; + const path = resolution.resolved_path; + const file = input.context.filesByPath.get(path); + const node = + input.context.sourceModuleNodes.get(path) ?? + input.context.fileNodes.get(path); + if (file === undefined || node === undefined) + throw new TypeError( + `Resolved artifact path ${path} is absent from its graph context.`, + ); return { - node: unresolvedModuleNode(input, specifier, resolution.resolution_status), - path: null, - file: null, - status: resolution.resolution_status, + node, + path, + file, + status: "resolved", limitations: resolution.limitations, }; }; @@ -266,7 +284,7 @@ const resolveModuleTarget = ( const unresolvedModuleNode = ( input: RelationshipInput, specifier: string, - status: ResolvedModuleTarget["status"], + status: Exclude, ): ApplicationNode => input.context.accumulator.addNode({ kind: "javascript-module", @@ -360,12 +378,10 @@ const semanticCoverage = ( unit: "items" as const, })); if (semantic.ir.coverage.status === "complete") - return completeReconstructionCoverage(limits); - return partialReconstructionCoverage( - limits, - semantic.ir.coverage.omittedCount, - semantic.ir.coverage.status === "truncated", - ); + return completeApplicationCoverage(limits); + return semantic.ir.coverage.status === "truncated" + ? truncatedApplicationCoverage(limits, semantic.ir.coverage.omittedCount) + : partialApplicationCoverage(limits, semantic.ir.coverage.omittedCount); }; const moduleFormat = ( diff --git a/src/application/JavaScriptReturnShapeProjection.ts b/src/application/JavaScriptReturnShapeProjection.ts index ae5380440b..dc0fe9023a 100644 --- a/src/application/JavaScriptReturnShapeProjection.ts +++ b/src/application/JavaScriptReturnShapeProjection.ts @@ -1,4 +1,8 @@ import { jsonObjectSchema, jsonValueSchema } from "../domain/jsonValue.js"; +import { + partialApplicationCoverage, + truncatedApplicationCoverage, +} from "../domain/javascriptApplicationEvidenceSchemas.js"; import type { JavaScriptSemanticIr, JavaScriptSemanticCallable, @@ -7,7 +11,6 @@ import type { import { flattenSemanticReturnValue } from "../domain/javascriptSemanticReturns.js"; import type { JavaScriptSourceRange } from "../domain/javascriptStaticAnalysisTypes.js"; import type { JavaScriptArtifactGraphCoverage } from "./JavaScriptArtifactGraphContext.js"; -import { partialReconstructionCoverage } from "./JavaScriptArtifactGraphEvidence.js"; const MAX_PROJECTED_RETURN_SHAPES = 32; const MAX_PROJECTED_RETURN_FIELDS = 64; @@ -43,30 +46,31 @@ export const projectJavaScriptExportReturnShapes = (input: { input.baseCoverage.status === "complete" && callable.returnCoverage.status === "complete" && projectionOmitted === 0; + const limits = [ + ...input.baseCoverage.limits, + { + name: "return-shape-sites", + value: MAX_PROJECTED_RETURN_SHAPES, + unit: "items" as const, + }, + { + name: "return-shape-fields", + value: MAX_PROJECTED_RETURN_FIELDS, + unit: "items" as const, + }, + { + name: "return-shape-property-coverage", + value: MAX_PROJECTED_PROPERTY_COVERAGE, + unit: "items" as const, + }, + ]; + const omitted = + semanticOmitted === null ? null : semanticOmitted + projectionOmitted; const coverage = complete ? input.baseCoverage - : partialReconstructionCoverage( - [ - ...input.baseCoverage.limits, - { - name: "return-shape-sites", - value: MAX_PROJECTED_RETURN_SHAPES, - unit: "items", - }, - { - name: "return-shape-fields", - value: MAX_PROJECTED_RETURN_FIELDS, - unit: "items", - }, - { - name: "return-shape-property-coverage", - value: MAX_PROJECTED_PROPERTY_COVERAGE, - unit: "items", - }, - ], - semanticOmitted === null ? null : semanticOmitted + projectionOmitted, - callable.returnCoverage.status === "truncated" || projectionOmitted > 0, - ); + : callable.returnCoverage.status === "truncated" || projectionOmitted > 0 + ? truncatedApplicationCoverage(limits, omitted) + : partialApplicationCoverage(limits, omitted); const limitations = [ ...input.ir.limitations, "Return shapes are inferred from inert syntax and do not prove runtime behavior.", diff --git a/tests/composition/javascript-applications/javascriptSemanticGraphBuilder.test.ts b/src/application/JavaScriptSemanticGraphBuilder.test.ts similarity index 94% rename from tests/composition/javascript-applications/javascriptSemanticGraphBuilder.test.ts rename to src/application/JavaScriptSemanticGraphBuilder.test.ts index 52e220f576..64ac9456db 100644 --- a/tests/composition/javascript-applications/javascriptSemanticGraphBuilder.test.ts +++ b/src/application/JavaScriptSemanticGraphBuilder.test.ts @@ -1,14 +1,14 @@ import { expect, it } from "vitest"; -import { buildJavaScriptSemanticGraph } from "../../../src/application/JavaScriptSemanticGraphBuilder.js"; -import type { JavaScriptArtifactAnalysis } from "../../../src/application/JavaScriptArtifactAnalysisTypes.js"; -import type { JavaScriptArtifactFile } from "../../../src/application/JavaScriptArtifactFiles.js"; -import { queryJavaScriptSemanticGraph } from "../../../src/domain/javascriptSemanticQuery.js"; -import { analyzeJavaScriptSemantics } from "../../../src/domain/javascriptSemanticAnalysis.js"; +import { buildJavaScriptSemanticGraph } from "./JavaScriptSemanticGraphBuilder.js"; +import type { JavaScriptArtifactAnalysis } from "./JavaScriptArtifactAnalysisTypes.js"; +import type { JavaScriptArtifactFile } from "./JavaScriptArtifactFiles.js"; +import { queryJavaScriptSemanticGraph } from "../domain/javascriptSemanticQuery.js"; +import { analyzeJavaScriptSemantics } from "../domain/javascriptSemanticAnalysis.js"; import { DEFAULT_JAVASCRIPT_SEMANTIC_LIMITS, type JavaScriptSemanticLimits, -} from "../../../src/domain/javascriptSemanticIr.js"; +} from "../domain/javascriptSemanticIr.js"; const SHA256 = "a".repeat(64); const GRAPH_ID = `jag_${"b".repeat(64)}`; diff --git a/tests/composition/javascript-applications/javascriptSemanticGraphResources.test.ts b/src/application/JavaScriptSemanticGraphResources.test.ts similarity index 94% rename from tests/composition/javascript-applications/javascriptSemanticGraphResources.test.ts rename to src/application/JavaScriptSemanticGraphResources.test.ts index 812ff40674..2b832a4262 100644 --- a/tests/composition/javascript-applications/javascriptSemanticGraphResources.test.ts +++ b/src/application/JavaScriptSemanticGraphResources.test.ts @@ -1,14 +1,14 @@ import { expect, it } from "vitest"; -import { buildJavaScriptSemanticGraph } from "../../../src/application/JavaScriptSemanticGraphBuilder.js"; -import type { JavaScriptArtifactAnalysis } from "../../../src/application/JavaScriptArtifactAnalysisTypes.js"; -import type { JavaScriptArtifactFile } from "../../../src/application/JavaScriptArtifactFiles.js"; -import { queryJavaScriptSemanticGraph } from "../../../src/domain/javascriptSemanticQuery.js"; -import { analyzeJavaScriptSemantics } from "../../../src/domain/javascriptSemanticAnalysis.js"; +import { buildJavaScriptSemanticGraph } from "./JavaScriptSemanticGraphBuilder.js"; +import type { JavaScriptArtifactAnalysis } from "./JavaScriptArtifactAnalysisTypes.js"; +import type { JavaScriptArtifactFile } from "./JavaScriptArtifactFiles.js"; +import { queryJavaScriptSemanticGraph } from "../domain/javascriptSemanticQuery.js"; +import { analyzeJavaScriptSemantics } from "../domain/javascriptSemanticAnalysis.js"; import { DEFAULT_JAVASCRIPT_SEMANTIC_LIMITS, type JavaScriptSemanticLimits, -} from "../../../src/domain/javascriptSemanticIr.js"; +} from "../domain/javascriptSemanticIr.js"; const SHA256 = "a".repeat(64); const GRAPH_ID = `jag_${"b".repeat(64)}`; diff --git a/src/application/LinuxHopper.ts b/src/application/LinuxHopper.ts index 2c3b27db3b..f4d0cac253 100644 --- a/src/application/LinuxHopper.ts +++ b/src/application/LinuxHopper.ts @@ -64,14 +64,24 @@ export const linuxHopperInstallDisclosure = ( }; }; -/** Parsed Linux distribution information used for support and package selection. */ -export interface LinuxDistribution { +interface LinuxDistributionIdentity { readonly id: string; readonly versionId?: string; - readonly packageFamily: LinuxPackageFamily | undefined; - readonly supported: boolean; } +/** Parsed Linux distribution information used for support and package selection. */ +export type LinuxDistribution = LinuxDistributionIdentity & + ( + | { + readonly packageFamily: LinuxPackageFamily; + readonly supported: true; + } + | { + readonly packageFamily: LinuxPackageFamily | undefined; + readonly supported: false; + } + ); + /** Download response kept independent of Node's global fetch implementation. */ export interface LinuxHopperDownload { readonly ok: boolean; @@ -134,15 +144,17 @@ export const parseLinuxDistribution = (text: string): LinuxDistribution => { const versionId = fields.get("VERSION_ID"); const packageFamily = packageFamilyFor(id, fields.get("ID_LIKE")); const supported = - id === "arch" || - (id === "ubuntu" && versionAtLeast(versionId, 24)) || - (id === "fedora" && versionAtLeast(versionId, 41)); - return { + packageFamily !== undefined && + (id === "arch" || + (id === "ubuntu" && versionAtLeast(versionId, 24)) || + (id === "fedora" && versionAtLeast(versionId, 41))); + const identity = { id, ...(versionId === undefined ? {} : { versionId }), - packageFamily, - supported, }; + return supported + ? { ...identity, packageFamily, supported: true } + : { ...identity, packageFamily, supported: false }; }; /** Read and classify the current Linux distribution. */ @@ -169,10 +181,7 @@ export const installLinuxHopper = async ( if (options.signal?.aborted === true) return { status: "failed", reason: "cancelled" }; const distribution = await host.distribution(); - if ( - distribution?.supported !== true || - distribution.packageFamily === undefined - ) + if (distribution?.supported !== true) return { status: "failed", reason: "unsupported_host" }; let temporary: string | undefined; try { diff --git a/src/application/ManagedRuntimeCorrelationService.ts b/src/application/ManagedRuntimeCorrelationService.ts index 18e42d5eae..45cd1f8568 100644 --- a/src/application/ManagedRuntimeCorrelationService.ts +++ b/src/application/ManagedRuntimeCorrelationService.ts @@ -97,7 +97,7 @@ export const planManagedRuntimeCorrelationEvidenceValidated = async ( operation_identity: operationIdentity(input, staticEvidence), }, "read", - { restartRequired: true }, + { remediation: "restart" }, ); if (!authorized.ok) return err( diff --git a/src/application/PermissionAuthority.ts b/src/application/PermissionAuthority.ts index ec8466b309..8befca35b9 100644 --- a/src/application/PermissionAuthority.ts +++ b/src/application/PermissionAuthority.ts @@ -18,7 +18,10 @@ import { reloadPermissionCeilings, revokePermission, } from "../domain/permissionPolicy.js"; -import { PermissionRequiredError } from "../domain/errors.js"; +import { + PermissionRequiredError, + type PermissionRemediation, +} from "../domain/errors.js"; import { err, ok, type Result } from "../domain/result.js"; /** Failure to establish a filesystem object's canonical authorization identity. */ @@ -108,8 +111,7 @@ const errorReason = (error: unknown): PermissionPathError["reason"] => isNotFound(error) ? "not_found" : "io"; interface PermissionEvaluationOptions { - readonly elicitationSupported?: boolean; - readonly restartRequired?: boolean; + readonly remediation?: PermissionRemediation; } interface CanonicalPermissionDecision { @@ -131,16 +133,22 @@ type PermissionAuthorizationResult = Promise< export class PermissionAuthority { private policy: PermissionPolicy; private readonly configuredAuthority: PermissionAuthority | undefined; - private readonly outsideCeilingRestartRequired: boolean; + private readonly outsideCeilingRemediation: Exclude< + PermissionRemediation, + "elicit" + >; constructor( policy: PermissionPolicy, configuredAuthority?: PermissionAuthority, - outsideCeilingRestartRequired = false, + outsideCeilingRemediation: Exclude< + PermissionRemediation, + "elicit" + > = "configure", ) { this.policy = policy; this.configuredAuthority = configuredAuthority; - this.outsideCeilingRestartRequired = outsideCeilingRestartRequired; + this.outsideCeilingRemediation = outsideCeilingRemediation; } /** Create a connection-owned overlay for once and session grants. */ @@ -148,7 +156,7 @@ export class PermissionAuthority { return new PermissionAuthority( createPermissionPolicy([]), this.configuredAuthority ?? this, - true, + "restart", ); } @@ -273,15 +281,18 @@ export class PermissionAuthority { if (denied.allowed) return ok({ decision: denied, owner: this }); const outsideAdministratorCeiling = denied.reason === "outside_administrator_ceiling"; + const requestedRemediation = options.remediation ?? "configure"; + const remediation = + outsideAdministratorCeiling && requestedRemediation !== "restart" + ? this.outsideCeilingRemediation + : requestedRemediation; return err( - new PermissionRequiredError( - request, - denied.missing, - ceilingFor(effective, request.capability), - !outsideAdministratorCeiling && (options.elicitationSupported ?? false), - options.restartRequired ?? - (outsideAdministratorCeiling && this.outsideCeilingRestartRequired), - ), + new PermissionRequiredError({ + requested: request, + missing: denied.missing, + ceiling: ceilingFor(effective, request.capability), + remediation, + }), ); } diff --git a/src/application/ProcessCaptureLifecycle.ts b/src/application/ProcessCaptureLifecycle.ts index edc3f17ef7..411d900b21 100644 --- a/src/application/ProcessCaptureLifecycle.ts +++ b/src/application/ProcessCaptureLifecycle.ts @@ -9,9 +9,11 @@ import type { FilesystemCheckpoint, InteractionEvent, ProcessCapture, + UnverifiedProcessCapture, ProcessExecutionPolicy, ProcessPolicyDecision, ProcessSample, + ProcessSettlement, ProcessScenario, ProcessCaptureEventJournalEntry, RecordProcessCaptureEvent, @@ -71,25 +73,43 @@ interface CaptureResultOptions { }; readonly samples: readonly ProcessSample[]; readonly replay: LoopbackReplay; - readonly reactiveRun: ProcessCapture["reactive_run"]; readonly before: SnapshotResult; readonly after: SnapshotResult; readonly truncated: boolean; readonly scenario: ProcessScenario; readonly rootPid: number; readonly samplingPartial: boolean; - readonly renderedFrames: ProcessCapture["rendered_frames"]; + readonly renderedFrames: UnverifiedProcessCapture["rendered_frames"]; readonly interactions: readonly InteractionEvent[]; readonly checkpoints: readonly FilesystemCheckpoint[]; - readonly shimEvents: ProcessCapture["shim_events"]; - readonly settlement: ProcessCapture["settlement"]; - readonly manifest: ProcessCapture["manifest"]; + readonly shimEvents: UnverifiedProcessCapture["shim_events"]; + readonly settlement: ObservedProcessSettlement; + readonly manifest: UnverifiedProcessCapture["manifest"]; readonly eventJournal: readonly ProcessCaptureEventJournalEntry[]; } +/** Settlement observation before process-resource cleanup has completed. */ +export type ObservedProcessSettlement = + | Pick< + Extract, + "state" | "elapsed_ms" + > + | Pick< + Exclude, + "state" | "elapsed_ms" + >; + +/** Capture observations that cannot yet claim final cleanup or reactive state. */ +export type PendingProcessCapture = Omit< + UnverifiedProcessCapture, + "cleanup" | "reactive_run" | "settlement" +> & { + readonly settlement: ObservedProcessSettlement; +}; + export const buildCaptureResult = ( options: CaptureResultOptions, -): ProcessCapture => ({ +): PendingProcessCapture => ({ schema_version: 4, manifest: options.manifest, normalization: options.scenario.normalization, @@ -117,7 +137,6 @@ export const buildCaptureResult = ( options.scenario, ), replay_transitions: options.replay.transitions, - reactive_run: options.reactiveRun, event_journal: options.eventJournal, files_before: options.before.files, files_after: options.after.files, @@ -144,10 +163,6 @@ export const buildCaptureResult = ( reason: "External network isolation is not enforced by this adapter.", }, ], - cleanup: { - owned_process_group: "verified", - temporary_root: "removed", - }, }); const hashFile = async (path: string): Promise => { @@ -160,7 +175,7 @@ export const createRunManifest = async ( scenario: ProcessScenario, startedAt: Date, completedAt: Date, -): Promise => { +): Promise => { const executableSha256 = await hashFile(scenario.executable); const scenarioCommitment = processScenarioCommitment( scenario, @@ -193,7 +208,7 @@ export const observeSettlement = async ( processGroupIds: readonly number[], settleMs: number, recordEvent: RecordProcessCaptureEvent = () => undefined, -): Promise> => { +): Promise => { if (process.platform === "win32") { recordEvent("lifecycle", 1); return { state: "unverifiable", elapsed_ms: 0 }; diff --git a/tests/composition/process-capture/processCapturePermission.test.ts b/src/application/ProcessCapturePermission.test.ts similarity index 83% rename from tests/composition/process-capture/processCapturePermission.test.ts rename to src/application/ProcessCapturePermission.test.ts index 5dd549e3f7..a8fd9add19 100644 --- a/tests/composition/process-capture/processCapturePermission.test.ts +++ b/src/application/ProcessCapturePermission.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from "vitest"; -import { processCapturePermissionRequest } from "../../../src/application/ProcessCapturePermission.js"; -import { parseProcessScenario } from "../../../src/domain/processCapture.js"; +import { processCapturePermissionRequest } from "./ProcessCapturePermission.js"; +import { parseProcessScenario } from "../domain/processCapture.js"; describe("process capture permission request", () => { it("projects the complete adapter-neutral authority scope", () => { diff --git a/src/application/ProcessCheckpoints.ts b/src/application/ProcessCheckpoints.ts index 559d8e27e0..5d8547d449 100644 --- a/src/application/ProcessCheckpoints.ts +++ b/src/application/ProcessCheckpoints.ts @@ -18,15 +18,32 @@ export const classifyFilesystemEffects = ( .map((path) => { const beforeFile = beforeByPath.get(path) ?? null; const afterFile = afterByPath.get(path) ?? null; - const status = - beforeFile === null - ? "created" - : afterFile === null - ? "deleted" - : JSON.stringify(beforeFile) === JSON.stringify(afterFile) - ? "unchanged" - : "modified"; - return { path, status, before: beforeFile, after: afterFile } as const; + if (beforeFile === null) { + if (afterFile === null) + throw new TypeError(`Filesystem effect ${path} has no file state`); + return { + path, + status: "created", + before: null, + after: afterFile, + } as const; + } + if (afterFile === null) + return { + path, + status: "deleted", + before: beforeFile, + after: null, + } as const; + return { + path, + status: + JSON.stringify(beforeFile) === JSON.stringify(afterFile) + ? "unchanged" + : "modified", + before: beforeFile, + after: afterFile, + } as const; }); }; diff --git a/src/application/ProcessEvidence.ts b/src/application/ProcessEvidence.ts index 4ab635ebe3..7d6178a6c3 100644 --- a/src/application/ProcessEvidence.ts +++ b/src/application/ProcessEvidence.ts @@ -5,7 +5,6 @@ import type { ProcessCapture, ProcessScenario, } from "../domain/processCapture.js"; -import { parseProcessCapture } from "../domain/processCapture.js"; /** Provider identity for controlled Process Capture v4 evidence. */ export const PROCESS_PROVIDER = { @@ -32,12 +31,11 @@ export const createProcessCaptureEvidence = ( scenario: ProcessScenario, capture: ProcessCapture, ) => { - const validatedCapture = parseProcessCapture(capture); return createEvidence(undefined, PROCESS_PROVIDER, { predicateType: "rea.process-capture/v4", operation: "capture_process_scenario", parameters: processEvidenceParameters(scenario), - result: jsonValueSchema.parse(validatedCapture), + result: jsonValueSchema.parse(capture), confidence: "observed", authority: "controlled-replay", environment: { @@ -46,6 +44,6 @@ export const createProcessCaptureEvidence = ( architecture: process.arch, isolation: "process", }, - limitations: validatedCapture.limitations, + limitations: capture.limitations, }); }; diff --git a/src/application/ProcessHarness.ts b/src/application/ProcessHarness.ts index 45964ca0b6..e5f92bb679 100644 --- a/src/application/ProcessHarness.ts +++ b/src/application/ProcessHarness.ts @@ -2,6 +2,7 @@ import type { IPty } from "@lydell/node-pty"; import type { InteractionEvent, ProcessCapture, + UnverifiedProcessCapture, ProcessCaptureEventJournalEntry, ProcessExecutionPolicy, ProcessSample, @@ -9,7 +10,7 @@ import type { RecordProcessCaptureEvent, TerminalFrame, } from "../domain/processCapture.js"; -import { validateProcessCapture } from "../domain/processCapture.js"; +import { parseProcessCapture } from "../domain/processCapture.js"; import { err, ok, type Result } from "../domain/result.js"; import { ProcessCaptureError, @@ -39,6 +40,7 @@ import { prepareProcessCapture, releaseProcessResources, resolveProcessResult, + type PendingProcessCapture, } from "./ProcessCaptureLifecycle.js"; import { assertNotCancelled } from "./ProcessCaptureAuthority.js"; import { @@ -240,7 +242,7 @@ const normalizedShimEvents = ( runtime: StartedCaptureRuntime, scenario: ProcessScenario, temporaryRoot: string, -): ProcessCapture["shim_events"] => +): UnverifiedProcessCapture["shim_events"] => runtime.shimReplay.events.map((event) => normalizeProcessShimEvent( event, @@ -257,7 +259,7 @@ const finishProcessRun = async (options: { readonly temporaryRoot: string; readonly samples: readonly ProcessSample[]; readonly stopSampler: () => Promise<{ readonly partial: boolean }>; - readonly capture: ProcessCapture | undefined; + readonly capture: PendingProcessCapture | undefined; readonly executionFailure: unknown; }): Promise => { options.runtime?.reactive?.unsubscribe(); @@ -285,27 +287,35 @@ const finishProcessRun = async (options: { }); await options.runtime?.reactive?.coordinator.close(); let { capture, executionFailure } = options; - if (capture !== undefined) { - capture = { + let verifiedCapture: ProcessCapture | undefined; + if (capture !== undefined && cleanupFailure === undefined) { + const settlement: UnverifiedProcessCapture["settlement"] = + capture.settlement.state === "quiesced" + ? { ...capture.settlement, cleanup_outcome: "not_required" } + : { ...capture.settlement, cleanup_outcome: "cleaned" }; + const completedCapture: UnverifiedProcessCapture = { ...capture, reactive_run: projectProcessReactiveRun(options.runtime?.reactive), - settlement: { - ...capture.settlement, - cleanup_outcome: - capture.settlement.state === "quiesced" - ? "not_required" - : cleanupFailure === undefined - ? "cleaned" - : "failed", + settlement, + cleanup: { + owned_process_group: "verified", + temporary_root: "removed", }, }; - const issue = validateProcessCapture(capture)[0]; - if (issue !== undefined) + try { + verifiedCapture = parseProcessCapture(completedCapture); + } catch (cause: unknown) { executionFailure = new ProcessCaptureError( - `process capture validation failed: ${issue.path}: ${issue.message}`, + `process capture validation failed${cause instanceof Error ? `: ${cause.message}` : ""}`, + { cause }, ); + } } - return resolveProcessResult(capture, executionFailure, cleanupFailure); + return resolveProcessResult( + verifiedCapture, + executionFailure, + cleanupFailure, + ); }; const completeCapture = async (options: { @@ -322,7 +332,7 @@ const completeCapture = async (options: { readonly initiallyTruncated: boolean; readonly eventJournal: readonly ProcessCaptureEventJournalEntry[]; readonly recordEvent: RecordProcessCaptureEvent; -}): Promise => { +}): Promise => { const { runtime, scenario } = options; runtime.checkpoints.trigger("root_exit"); const { reason } = options.exit; @@ -374,7 +384,6 @@ const completeCapture = async (options: { exit: { ...options.exit, reason }, samples: options.samples, replay: runtime.replay, - reactiveRun: projectProcessReactiveRun(runtime.reactive), before: options.before, after, truncated, @@ -385,7 +394,7 @@ const completeCapture = async (options: { interactions: options.interactions, checkpoints, shimEvents: normalizedShimEvents(runtime, scenario, options.temporaryRoot), - settlement: { ...settlement, cleanup_outcome: "not_required" }, + settlement, manifest, eventJournal: options.eventJournal, }); @@ -409,7 +418,7 @@ const runProcessScenario = async ( const { entries: eventJournal, recordEvent } = journal; let runtime: StartedCaptureRuntime | undefined; const timers = new Set(); - let capture: ProcessCapture | undefined; + let capture: PendingProcessCapture | undefined; let executionFailure: unknown; let stopSampler = async () => ({ partial: false }); const interactions: InteractionEvent[] = []; diff --git a/tests/composition/process-capture/processPairedExperiment.test.ts b/src/application/ProcessPairedExperiment.test.ts similarity index 86% rename from tests/composition/process-capture/processPairedExperiment.test.ts rename to src/application/ProcessPairedExperiment.test.ts index 1a97bcb42a..7ae235b212 100644 --- a/tests/composition/process-capture/processPairedExperiment.test.ts +++ b/src/application/ProcessPairedExperiment.test.ts @@ -3,18 +3,18 @@ import { describe, expect, it } from "vitest"; import { runPairedProcessExperiment, type ProcessCapturePort, -} from "../../../src/application/ProcessPairedExperiment.js"; -import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../../../src/contracts/processCaptureExample.js"; +} from "./ProcessPairedExperiment.js"; +import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../contracts/processCaptureExample.js"; import { parseProcessCapture, type EnabledProcessExecutionPolicy, -} from "../../../src/domain/processCapture.js"; +} from "../domain/processCapture.js"; import { analyzeProcessRepeatability, bindProcessScenario, processPairedExperimentSchema, -} from "../../../src/domain/processPairedExperiment.js"; -import { ok } from "../../../src/domain/result.js"; +} from "../domain/processPairedExperiment.js"; +import { ok } from "../domain/result.js"; const experiment = () => processPairedExperimentSchema.parse({ @@ -58,6 +58,11 @@ const policy: EnabledProcessExecutionPolicy = { networkAccess: "none", }; +const cloneCapture = ( + capture: ReturnType, +): ReturnType => + parseProcessCapture(structuredClone(capture)); + describe("paired process experiments", () => { it("binds only declared side inputs onto the shared observation contract", () => { const parsed = experiment(); @@ -87,7 +92,7 @@ describe("paired process experiments", () => { const capturePort: ProcessCapturePort = { capture: (scenario) => { observedExecutables.push(scenario.executable); - return Promise.resolve(ok(structuredClone(capture))); + return Promise.resolve(ok(cloneCapture(capture))); }, }; const result = await runPairedProcessExperiment(experiment(), policy, { @@ -107,6 +112,7 @@ describe("paired process experiments", () => { expect(result.value.authority_repeatability.stable).toBe(true); expect(result.value.candidate_repeatability.stable).toBe(true); expect(result.value.cross_side?.status).toBe("unchanged"); + expect(result.value.cross_side_blocked_reason).toBeNull(); }); it("blocks cross-side claims when a candidate has a flaky exit", async () => { @@ -114,14 +120,14 @@ describe("paired process experiments", () => { let candidateRun = 0; const capturePort: ProcessCapturePort = { capture: (scenario) => { - let capture = structuredClone(base); + let capture = cloneCapture(base); if (scenario.executable === "/bin/candidate") { candidateRun += 1; if (candidateRun === 2) - capture = { + capture = parseProcessCapture({ ...capture, exit: { code: 1, signal: null, reason: "exited" }, - }; + }); } return Promise.resolve(ok(capture)); }, @@ -145,14 +151,14 @@ describe("paired process experiments", () => { describe("paired process experiment comparisons", () => { it("distinguishes normalized timing variance from semantic output drift", () => { const base = parseProcessCapture(EMPTY_PROCESS_CAPTURE_EXAMPLE); - const early = { + const early = parseProcessCapture({ ...base, frames: [{ sequence: 0, at_ms: 10, data: "ready" }], - }; - const late = { + }); + const late = parseProcessCapture({ ...base, frames: [{ sequence: 0, at_ms: 20, data: "ready" }], - }; + }); expect( analyzeProcessRepeatability([early, late], ["terminal"]), ).toMatchObject({ @@ -160,10 +166,10 @@ describe("paired process experiment comparisons", () => { classification: "timing_variance", unstable_dimensions: ["terminal"], }); - const changed = { + const changed = parseProcessCapture({ ...base, frames: [{ sequence: 0, at_ms: 20, data: "failed" }], - }; + }); expect( analyzeProcessRepeatability([early, changed], ["terminal"]), ).toMatchObject({ classification: "nondeterministic_output" }); @@ -192,7 +198,7 @@ describe("paired process experiment comparisons", () => { it("blocks full cross-side output when only a subset was repeatable", async () => { const capture = parseProcessCapture(EMPTY_PROCESS_CAPTURE_EXAMPLE); const capturePort: ProcessCapturePort = { - capture: () => Promise.resolve(ok(structuredClone(capture))), + capture: () => Promise.resolve(ok(cloneCapture(capture))), }; const subset = processPairedExperimentSchema.parse({ ...experiment(), @@ -225,14 +231,16 @@ describe("paired process experiment freshness", () => { : "2026-01-01T00:00:09.500Z"; captureIndex += 1; return Promise.resolve( - ok({ - ...structuredClone(base), - manifest: { - ...base.manifest, - started_at: completedAt, - completed_at: completedAt, - }, - }), + ok( + parseProcessCapture({ + ...structuredClone(base), + manifest: { + ...base.manifest, + started_at: completedAt, + completed_at: completedAt, + }, + }), + ), ); }, }; diff --git a/src/application/ProcessPairedExperiment.ts b/src/application/ProcessPairedExperiment.ts index 4e4cdb1aba..3705cec785 100644 --- a/src/application/ProcessPairedExperiment.ts +++ b/src/application/ProcessPairedExperiment.ts @@ -26,8 +26,7 @@ export interface ProcessCapturePort { ): Promise>; } -/** Repeatability evidence and an optional stable cross-side comparison. */ -export interface PairedProcessExperimentResult { +interface PairedProcessExperimentEvidence { readonly authority_runs: readonly ProcessCapture[]; readonly candidate_runs: readonly ProcessCapture[]; readonly authority_repeatability: ReturnType< @@ -36,10 +35,21 @@ export interface PairedProcessExperimentResult { readonly candidate_repeatability: ReturnType< typeof analyzeProcessRepeatability >; - readonly cross_side: ReturnType | null; - readonly cross_side_blocked_reason: string | null; } +/** Repeatability evidence and either a stable comparison or its blocking reason. */ +export type PairedProcessExperimentResult = PairedProcessExperimentEvidence & + ( + | { + readonly cross_side: ReturnType; + readonly cross_side_blocked_reason: null; + } + | { + readonly cross_side: null; + readonly cross_side_blocked_reason: string; + } + ); + const productionCapturePort: ProcessCapturePort = { capture: captureProcessScenario, }; @@ -114,27 +124,29 @@ export const runPairedProcessExperiment = async ( ); const authorityLatest = authorityRuns.value.at(-1); const candidateLatest = candidateRuns.value.at(-1); - const crossSide = + const crossSideOutcome = stable && allDimensionsRequired && authorityLatest !== undefined && candidateLatest !== undefined - ? compareProcessCaptures(authorityLatest, candidateLatest, { - maxCaptureAgeMs: experiment.freshness_policy.max_capture_age_ms, - ...(options.now === undefined ? {} : { now: options.now }), - }) - : null; + ? { + cross_side: compareProcessCaptures(authorityLatest, candidateLatest, { + maxCaptureAgeMs: experiment.freshness_policy.max_capture_age_ms, + ...(options.now === undefined ? {} : { now: options.now }), + }), + cross_side_blocked_reason: null, + } + : { + cross_side: null, + cross_side_blocked_reason: !allDimensionsRequired + ? "Cross-side comparison is blocked until every returned dimension is required and repeatable." + : "Cross-side comparison is blocked because a required same-side dimension is unstable.", + }; return ok({ authority_runs: authorityRuns.value, candidate_runs: candidateRuns.value, authority_repeatability: authorityRepeatability, candidate_repeatability: candidateRepeatability, - cross_side: crossSide, - cross_side_blocked_reason: - crossSide !== null - ? null - : !allDimensionsRequired - ? "Cross-side comparison is blocked until every returned dimension is required and repeatable." - : "Cross-side comparison is blocked because a required same-side dimension is unstable.", + ...crossSideOutcome, }); }; diff --git a/tests/composition/process-capture/processReactiveCoordinator.test.ts b/src/application/ProcessReactiveCoordinator.test.ts similarity index 94% rename from tests/composition/process-capture/processReactiveCoordinator.test.ts rename to src/application/ProcessReactiveCoordinator.test.ts index 97f7600578..d033f992fc 100644 --- a/tests/composition/process-capture/processReactiveCoordinator.test.ts +++ b/src/application/ProcessReactiveCoordinator.test.ts @@ -2,19 +2,19 @@ import { describe, expect, it } from "vitest"; import { ProcessReactiveCoordinator, type ProcessReactiveTimerHost, -} from "../../../src/application/ProcessReactiveCoordinator.js"; -import { executeProcessReactiveEffects } from "../../../src/application/ProcessReactiveEffects.js"; -import { createProcessCaptureJournal } from "../../../src/application/ProcessCaptureJournal.js"; -import { subscribeProcessReactiveObservations } from "../../../src/application/ProcessReactiveObservations.js"; +} from "./ProcessReactiveCoordinator.js"; +import { executeProcessReactiveEffects } from "./ProcessReactiveEffects.js"; +import { createProcessCaptureJournal } from "./ProcessCaptureJournal.js"; +import { subscribeProcessReactiveObservations } from "./ProcessReactiveObservations.js"; import type { FilesystemCheckpoint, InteractionEvent, TerminalFrame, -} from "../../../src/domain/processCapture.js"; +} from "../domain/processCapture.js"; import { processReactiveScenarioSchema, type ProcessReactiveScenario, -} from "../../../src/domain/processReactiveScenario.js"; +} from "../domain/processReactiveScenario.js"; const terminalTrigger = () => ({ kind: "terminal_text" as const, view: "decoded" as const, diff --git a/tests/composition/process-capture/processReactiveCoordinatorFailures.test.ts b/src/application/ProcessReactiveCoordinatorFailures.test.ts similarity index 94% rename from tests/composition/process-capture/processReactiveCoordinatorFailures.test.ts rename to src/application/ProcessReactiveCoordinatorFailures.test.ts index 94bbfcd61b..92a0f7c45a 100644 --- a/tests/composition/process-capture/processReactiveCoordinatorFailures.test.ts +++ b/src/application/ProcessReactiveCoordinatorFailures.test.ts @@ -2,14 +2,14 @@ import { describe, expect, it } from "vitest"; import { ProcessReactiveCoordinator, type ProcessReactiveTimerHost, -} from "../../../src/application/ProcessReactiveCoordinator.js"; -import { unsupportedProcessReactiveFeatures } from "../../../src/application/ProcessReactiveEffects.js"; -import { createProcessObservation } from "../../../src/domain/processObservation.js"; -import type { ProcessReactiveEffectResult } from "../../../src/domain/processReactiveRuntime.js"; +} from "./ProcessReactiveCoordinator.js"; +import { unsupportedProcessReactiveFeatures } from "./ProcessReactiveEffects.js"; +import { createProcessObservation } from "../domain/processObservation.js"; +import type { ProcessReactiveEffectResult } from "../domain/processReactiveRuntime.js"; import { processReactiveScenarioSchema, type ProcessReactiveScenario, -} from "../../../src/domain/processReactiveScenario.js"; +} from "../domain/processReactiveScenario.js"; const terminalTrigger = () => ({ kind: "terminal_text" as const, view: "decoded" as const, diff --git a/tests/composition/process-capture/processReactiveCoordinatorFailuresPart2.test.ts b/src/application/ProcessReactiveCoordinatorFailuresPart2.test.ts similarity index 94% rename from tests/composition/process-capture/processReactiveCoordinatorFailuresPart2.test.ts rename to src/application/ProcessReactiveCoordinatorFailuresPart2.test.ts index 95d10b0553..1d8769abac 100644 --- a/tests/composition/process-capture/processReactiveCoordinatorFailuresPart2.test.ts +++ b/src/application/ProcessReactiveCoordinatorFailuresPart2.test.ts @@ -2,12 +2,12 @@ import { describe, expect, it } from "vitest"; import { ProcessReactiveCoordinator, type ProcessReactiveTimerHost, -} from "../../../src/application/ProcessReactiveCoordinator.js"; -import { createProcessObservation } from "../../../src/domain/processObservation.js"; +} from "./ProcessReactiveCoordinator.js"; +import { createProcessObservation } from "../domain/processObservation.js"; import { processReactiveScenarioSchema, type ProcessReactiveScenario, -} from "../../../src/domain/processReactiveScenario.js"; +} from "../domain/processReactiveScenario.js"; const terminalTrigger = () => ({ kind: "terminal_text" as const, view: "decoded" as const, diff --git a/src/application/ProcessReactiveHarness.ts b/src/application/ProcessReactiveHarness.ts index 910378d3ec..2712565f6b 100644 --- a/src/application/ProcessReactiveHarness.ts +++ b/src/application/ProcessReactiveHarness.ts @@ -167,13 +167,17 @@ export const startProcessReactiveHarness = (options: { /** Project internal reducer state into the stable Process Capture shape. */ export const projectProcessReactiveRun = ( harness: ProcessReactiveHarness | undefined, -): ProcessCapture["reactive_run"] => - harness === undefined - ? null - : { - status: harness.coordinator.snapshot.status, - outcome: harness.coordinator.snapshot.outcome, - active_state: harness.coordinator.snapshot.active_state, - transitions: harness.coordinator.snapshot.transitions, - controls: harness.controls, - }; +): ProcessCapture["reactive_run"] => { + if (harness === undefined) return null; + const snapshot = harness.coordinator.snapshot; + const completion = + snapshot.status === "running" + ? { status: snapshot.status, outcome: null } + : { status: snapshot.status, outcome: snapshot.outcome }; + return { + ...completion, + active_state: snapshot.active_state, + transitions: snapshot.transitions, + controls: harness.controls, + }; +}; diff --git a/tests/composition/analysis-sessions/progressReporter.test.ts b/src/application/ProgressReporter.test.ts similarity index 93% rename from tests/composition/analysis-sessions/progressReporter.test.ts rename to src/application/ProgressReporter.test.ts index d04f3ea53a..126c1440dc 100644 --- a/tests/composition/analysis-sessions/progressReporter.test.ts +++ b/src/application/ProgressReporter.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { createProgressReporter } from "../../../src/application/ProgressReporter.js"; +import { createProgressReporter } from "./ProgressReporter.js"; describe("progress reporter", () => { it("preserves monotonic order, rate bounds intermediate updates, and always emits terminal state", async () => { diff --git a/tests/composition/evidence-investigations/reconstructionObligationLedgerAuthority.test.ts b/src/application/ReconstructionObligationLedger.authority.test.ts similarity index 94% rename from tests/composition/evidence-investigations/reconstructionObligationLedgerAuthority.test.ts rename to src/application/ReconstructionObligationLedger.authority.test.ts index 7c4b1f7817..3e51feefb0 100644 --- a/tests/composition/evidence-investigations/reconstructionObligationLedgerAuthority.test.ts +++ b/src/application/ReconstructionObligationLedger.authority.test.ts @@ -1,21 +1,21 @@ import { describe, expect, it } from "vitest"; -import { PROCESS_PROVIDER } from "../../../src/application/ProcessEvidence.js"; +import { PROCESS_PROVIDER } from "./ProcessEvidence.js"; import { buildReconstructionObligationLedgerEvidenceValidated, resolveReconstructionObligationLedgerRequest, -} from "../../../src/application/ReconstructionObligationLedgerService.js"; -import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../../../src/contracts/processCaptureExample.js"; -import { createEvidence, type Evidence } from "../../../src/domain/evidence.js"; -import { createEvidenceBundle } from "../../../src/domain/evidenceBundle.js"; -import { jsonValueSchema } from "../../../src/domain/jsonValue.js"; -import { processCaptureSchema } from "../../../src/domain/processCapture.js"; +} from "./ReconstructionObligationLedgerService.js"; +import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../contracts/processCaptureExample.js"; +import { createEvidence, type Evidence } from "../domain/evidence.js"; +import { createEvidenceBundle } from "../domain/evidenceBundle.js"; +import { jsonValueSchema } from "../domain/jsonValue.js"; +import { processCaptureSchema } from "../domain/processCapture.js"; import { reconstructionObligationLedgerPageSchema, type ReconstructionObligationLedgerInput, type ReconstructionObligationLedgerPage, type ReviewedReconstructionObligation, -} from "../../../src/domain/reconstructionObligationLedgerSchemas.js"; +} from "../domain/reconstructionObligationLedgerSchemas.js"; const proofEvidence = (id: string) => createEvidence( diff --git a/tests/composition/evidence-investigations/reconstructionObligationLedgerClosure.test.ts b/src/application/ReconstructionObligationLedger.closure.test.ts similarity index 95% rename from tests/composition/evidence-investigations/reconstructionObligationLedgerClosure.test.ts rename to src/application/ReconstructionObligationLedger.closure.test.ts index 07b30eb1f5..bcd6aed1fb 100644 --- a/tests/composition/evidence-investigations/reconstructionObligationLedgerClosure.test.ts +++ b/src/application/ReconstructionObligationLedger.closure.test.ts @@ -1,22 +1,22 @@ import { describe, expect, it } from "vitest"; -import { PROCESS_PROVIDER } from "../../../src/application/ProcessEvidence.js"; +import { PROCESS_PROVIDER } from "./ProcessEvidence.js"; import { buildReconstructionObligationLedgerEvidenceValidated, resolveReconstructionObligationLedgerRequest, -} from "../../../src/application/ReconstructionObligationLedgerService.js"; -import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../../../src/contracts/processCaptureExample.js"; -import { createEvidence, type Evidence } from "../../../src/domain/evidence.js"; -import { createEvidenceBundle } from "../../../src/domain/evidenceBundle.js"; -import { jsonValueSchema } from "../../../src/domain/jsonValue.js"; -import { processCaptureSchema } from "../../../src/domain/processCapture.js"; +} from "./ReconstructionObligationLedgerService.js"; +import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../contracts/processCaptureExample.js"; +import { createEvidence, type Evidence } from "../domain/evidence.js"; +import { createEvidenceBundle } from "../domain/evidenceBundle.js"; +import { jsonValueSchema } from "../domain/jsonValue.js"; +import { processCaptureSchema } from "../domain/processCapture.js"; import { reconstructionObligationLedgerPageSchema, serializeReconstructionObligationLedger, type ReconstructionObligationLedgerInput, type ReconstructionObligationLedgerPage, type ReviewedReconstructionObligation, -} from "../../../src/domain/reconstructionObligationLedgerSchemas.js"; +} from "../domain/reconstructionObligationLedgerSchemas.js"; const proofEvidence = (id: string) => createEvidence( diff --git a/src/application/RuntimeExecutableDiagnostics.ts b/src/application/RuntimeExecutableDiagnostics.ts index 7e773d81fe..eda74e6129 100644 --- a/src/application/RuntimeExecutableDiagnostics.ts +++ b/src/application/RuntimeExecutableDiagnostics.ts @@ -27,18 +27,29 @@ interface RuntimeProbeFailure { readonly stderr: string; } -/** One lexical PATH candidate and its canonical executable probe result. */ -interface RuntimeExecutableDiagnostic { +interface RuntimeExecutableIdentity { readonly tool: RuntimeToolName; readonly lexical_path: string; readonly canonical_path: string; readonly path_index: number | null; readonly selection: "rea-launcher" | "path-primary" | "path-shadowed"; - readonly version: string | null; - readonly healthy: boolean; - readonly failure: RuntimeProbeFailure | null; } +/** One lexical PATH candidate and its canonical executable probe result. */ +type RuntimeExecutableDiagnostic = RuntimeExecutableIdentity & + ( + | { + readonly version: string; + readonly healthy: true; + readonly failure: null; + } + | { + readonly version: null; + readonly healthy: false; + readonly failure: RuntimeProbeFailure; + } + ); + /** Runtime identities observed under one exact effective environment. */ export interface RuntimeExecutableInventory { readonly launcher_node: string; @@ -148,16 +159,21 @@ const probeCandidate = async ( ): Promise => { const canonical = await canonicalPath(candidate.path); const result = await executeVersion(candidate.path, timeoutMs, effectivePath); - return { + const identity = { tool: candidate.tool, lexical_path: candidate.path, canonical_path: canonical, path_index: candidate.pathIndex, selection: candidate.selection, - version: result.ok ? result.version : null, - healthy: result.ok, - failure: result.ok ? null : result.failure, }; + return result.ok + ? { ...identity, version: result.version, healthy: true, failure: null } + : { + ...identity, + version: null, + healthy: false, + failure: result.failure, + }; }; type VersionResult = diff --git a/src/application/SessionProviderRouter.ts b/src/application/SessionProviderRouter.ts index 4c7ce74d6b..fbfd7fd650 100644 --- a/src/application/SessionProviderRouter.ts +++ b/src/application/SessionProviderRouter.ts @@ -74,8 +74,8 @@ export class SessionProviderRouter { private readonly runtime: SingleProviderRuntime | SelectableProviderRuntime, ) {} - /** Preserve the existing provider/factory seam used by focused embedders. */ - static legacy( + /** Create routing for an embedding backed by one fixed provider or factory. */ + static single( provider: AnalysisProvider | AnalysisClientFactory, options: { readonly resolveAnalysisProfile?: ( diff --git a/tests/composition/setup-lifecycle/statusProjection.test.ts b/src/application/StatusProjection.test.ts similarity index 86% rename from tests/composition/setup-lifecycle/statusProjection.test.ts rename to src/application/StatusProjection.test.ts index 3012df8a4c..693cbd777d 100644 --- a/tests/composition/setup-lifecycle/statusProjection.test.ts +++ b/src/application/StatusProjection.test.ts @@ -1,13 +1,10 @@ import { describe, expect, it } from "vitest"; -import { - runCapabilityStatus, - runProviderStatus, -} from "../../../src/application/DirectAnalysis.js"; -import { projectDoctorReport } from "../../../src/application/DoctorProjection.js"; -import { runDoctor, type DoctorHost } from "../../../src/application/Doctor.js"; -import { CATALOG_IDENTITY } from "../../../src/catalogIdentity.js"; -import { PRODUCT_IDENTITY } from "../../../src/identity.js"; +import { runCapabilityStatus, runProviderStatus } from "./DirectAnalysis.js"; +import { projectDoctorReport } from "./DoctorProjection.js"; +import { runDoctor, type DoctorHost } from "./Doctor.js"; +import { CATALOG_IDENTITY } from "../catalogIdentity.js"; +import { PRODUCT_IDENTITY } from "../identity.js"; const doctorHost = (): DoctorHost => ({ platform: "darwin", diff --git a/tests/composition/runtime-observation/browserScenario.test.ts b/src/browser/BrowserScenario.test.ts similarity index 98% rename from tests/composition/runtime-observation/browserScenario.test.ts rename to src/browser/BrowserScenario.test.ts index fe7f9509b5..50e300261e 100644 --- a/tests/composition/runtime-observation/browserScenario.test.ts +++ b/src/browser/BrowserScenario.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from "vitest"; -import { BrowserScenarioSecrets } from "../../../src/browser/BrowserScenarioSecrets.js"; -import { browserScenarioSchema } from "../../../src/domain/browserScenario.js"; +import { BrowserScenarioSecrets } from "./BrowserScenarioSecrets.js"; +import { browserScenarioSchema } from "../domain/browserScenario.js"; const secret = (secret_id: string) => ({ source: "secret", secret_id }); const literal = (value: string) => ({ diff --git a/src/browser/BrowserScenarioSecrets.ts b/src/browser/BrowserScenarioSecrets.ts index bbe07e69be..dc70294803 100644 --- a/src/browser/BrowserScenarioSecrets.ts +++ b/src/browser/BrowserScenarioSecrets.ts @@ -5,6 +5,7 @@ import type { BrowserScenarioUrl, BrowserScenarioValue, } from "../domain/browserScenario.js"; +import type { BrowserStorageValueFingerprint } from "../domain/browserScenarioCaptureValues.js"; const REDACTION_PREFIX = "[REDACTED:"; @@ -53,10 +54,7 @@ export class BrowserScenarioSecrets { return output; } - fingerprint(value: string): { - readonly value_state: "hashed" | "redacted-secret"; - readonly value_sha256: string | null; - } { + fingerprint(value: string): BrowserStorageValueFingerprint { for (const secret of this.values.values()) if (secret !== "" && value.includes(secret)) return { value_state: "redacted-secret", value_sha256: null }; diff --git a/src/browser/CdpCaptureContextRetention.test.ts b/src/browser/CdpCaptureContextRetention.test.ts new file mode 100644 index 0000000000..0b5aa973ad --- /dev/null +++ b/src/browser/CdpCaptureContextRetention.test.ts @@ -0,0 +1,60 @@ +import { describe, expect, it } from "vitest"; + +import { inspectWebPageInputSchema } from "../domain/browserObservation.js"; +import { CdpCaptureCompleteness } from "./CdpCaptureCompleteness.js"; +import { CdpCaptureEvents } from "./CdpCaptureEvents.js"; +import { ingestElectronScriptEvent } from "./CdpElectronScriptEvents.js"; + +describe("CDP execution-context retention", () => { + it("removes stale frame attribution when execution contexts are destroyed", () => { + const request = inspectWebPageInputSchema.parse({ + cdp_endpoint: "http://127.0.0.1:9222", + allowed_origins: ["https://app.example.test"], + target_id: "page-1", + approved: true, + }); + const browser = new CdpCaptureEvents( + request, + new Set(["https://app.example.test"]), + ); + browser.beginAuthorizedFrame("frame-old"); + browser.ingest({ + method: "Runtime.executionContextCreated", + params: { context: { id: 7, auxData: { frameId: "frame-old" } } }, + }); + browser.ingest({ + method: "Runtime.executionContextDestroyed", + params: { executionContextId: 7 }, + }); + browser.ingest({ + method: "Debugger.scriptParsed", + params: { + scriptId: "script-1", + url: "https://app.example.test/app.js", + executionContextId: 7, + }, + }); + const script = browser.scripts.get("script-1"); + if (script === undefined) throw new TypeError("Expected captured script"); + expect(browser.frameForScript(script, new Set(["frame-old"]))).toBeNull(); + + const electronFrames = new Map(); + const completeness = new CdpCaptureCompleteness(); + ingestElectronScriptEvent({ + event: { + method: "Runtime.executionContextCreated", + params: { context: { id: 7, auxData: { frameId: "frame-old" } } }, + }, + scripts: [], + executionContextFrames: electronFrames, + completeness, + }); + ingestElectronScriptEvent({ + event: { method: "Runtime.executionContextsCleared", params: {} }, + scripts: [], + executionContextFrames: electronFrames, + completeness, + }); + expect(electronFrames.size).toBe(0); + }); +}); diff --git a/src/browser/PlaywrightBrowserScenarioProvider.ts b/src/browser/PlaywrightBrowserScenarioProvider.ts index e870e1bd0f..a1320cf1dc 100644 --- a/src/browser/PlaywrightBrowserScenarioProvider.ts +++ b/src/browser/PlaywrightBrowserScenarioProvider.ts @@ -10,12 +10,14 @@ import type { } from "../domain/browserScenario.js"; import { browserScenarioCaptureSchema, - browserScenarioCompletenessSchema, + classifyBrowserScenarioCompleteness, browserScenarioStepSchema, browserStepArtifactsSchema, type BrowserScenarioCapture, type BrowserScenarioCompleteness, + type BrowserScenarioCompletenessSection, type BrowserScenarioStep, + type BrowserScenarioStepOutcome, type BrowserStepArtifacts, } from "../domain/browserScenarioCapture.js"; import { @@ -51,6 +53,14 @@ export const PLAYWRIGHT_BROWSER_SCENARIO_PROVIDER_IDENTITY: ProviderIdentity = }); type SnapshotKind = BrowserScenario["capture"]["after_each_step"][number]; +const SNAPSHOT_KINDS = [ + "screenshot", + "dom", + "accessibility", + "url", + "history", + "storage", +] as const satisfies readonly SnapshotKind[]; const requestedForStep = ( scenario: BrowserScenario, @@ -83,40 +93,29 @@ const stepCompleteness = ( artifacts: BrowserStepArtifacts, status: BrowserScenarioStep["status"], ): BrowserScenarioCompleteness => { - const missing = Object.entries(artifacts) - .filter(([, state]) => state.state === "missing") - .map(([section]) => section); - const truncated = Object.entries(artifacts) - .filter(([, state]) => state.state === "truncated") - .map(([section]) => section); + const missing: BrowserScenarioCompletenessSection[] = SNAPSHOT_KINDS.filter( + (section) => artifacts[section].state === "missing", + ); + const truncated = SNAPSHOT_KINDS.filter( + (section) => artifacts[section].state === "truncated", + ); if (status !== "completed") missing.push("action"); - const condition = - truncated.length > 0 - ? "truncated" - : missing.length > 0 - ? "incomplete" - : "complete"; - return browserScenarioCompletenessSchema.parse({ - status: condition, - equality_eligible: condition === "complete", - missing_sections: [...new Set(missing)].sort(), - truncated_sections: [...new Set(truncated)].sort(), - }); + return classifyBrowserScenarioCompleteness(missing, truncated); }; -const createStep = (input: { - readonly stepIndex: number; - readonly stepId: string; - readonly action: string; - readonly status: BrowserScenarioStep["status"]; - readonly elapsedMs: number; - readonly beforeUrl: string; - readonly afterUrl: string; - readonly error: string | null; - readonly eventStart: number; - readonly eventEnd: number; - readonly artifacts: BrowserStepArtifacts; -}): BrowserScenarioStep => +const createStep = ( + input: { + readonly stepIndex: number; + readonly stepId: string; + readonly action: string; + readonly elapsedMs: number; + readonly beforeUrl: string; + readonly afterUrl: string; + readonly eventStart: number; + readonly eventEnd: number; + readonly artifacts: BrowserStepArtifacts; + } & BrowserScenarioStepOutcome, +): BrowserScenarioStep => browserScenarioStepSchema.parse({ step_index: input.stepIndex, step_id: input.stepId, @@ -207,11 +206,12 @@ const executeStep = async (input: { const actionStartedAt = Date.now(); session.setStep(stepIndex); const requestCancelled = (): boolean => signal?.aborted === true; - let status: BrowserScenarioStep["status"] = "completed"; - let error: string | null = null; + let outcome: BrowserScenarioStepOutcome = { + status: "completed", + error: null, + }; if (requestCancelled()) { - status = "cancelled"; - error = "scenario request cancelled"; + outcome = { status: "cancelled", error: "scenario request cancelled" }; } else { try { const elapsed = Date.now() - startedAt; @@ -219,16 +219,18 @@ const executeStep = async (input: { if (remaining <= 0) throw new Error("Scenario duration limit reached"); await session.perform(action, remaining, signal); } catch (cause: unknown) { - status = requestCancelled() ? "cancelled" : "failed"; - error = session.redactError(cause); + outcome = { + status: requestCancelled() ? "cancelled" : "failed", + error: session.redactError(cause), + }; } } const remaining = scenario.limits.max_duration_ms - (Date.now() - startedAt); const artifacts = - status === "cancelled" || remaining <= 0 + outcome.status === "cancelled" || remaining <= 0 ? unavailableArtifacts( requested, - status === "cancelled" + outcome.status === "cancelled" ? "scenario request cancelled" : "scenario duration limit reached", ) @@ -237,11 +239,10 @@ const executeStep = async (input: { stepIndex, stepId: action.step_id, action: action.action, - status, + ...outcome, elapsedMs: Date.now() - actionStartedAt, beforeUrl, afterUrl: session.currentUrl(), - error, eventStart, eventEnd: session.lastEventSequence(), artifacts, @@ -261,18 +262,7 @@ const globalCompleteness = ( ); truncated.push(...session.eventTruncationSections()); if (session.mode === "connect") missing.push("events"); - const status = - truncated.length > 0 - ? "truncated" - : missing.length > 0 - ? "incomplete" - : "complete"; - return browserScenarioCompletenessSchema.parse({ - status, - equality_eligible: status === "complete", - missing_sections: [...new Set(missing)].sort(), - truncated_sections: [...new Set(truncated)].sort(), - }); + return classifyBrowserScenarioCompleteness(missing, truncated); }; const runScenario = async ( diff --git a/src/browser/PlaywrightScenarioEvents.ts b/src/browser/PlaywrightScenarioEvents.ts index 9b1e1cea42..bffecbb772 100644 --- a/src/browser/PlaywrightScenarioEvents.ts +++ b/src/browser/PlaywrightScenarioEvents.ts @@ -241,22 +241,31 @@ export class PlaywrightScenarioEvents { } private request(kind: "request" | "request-failed", request: Request): void { - this.push({ - kind, + const observation = { method: this.secrets.redact(request.method()).slice(0, 32), url: this.safeUrl(request.url()), resource_type: this.secrets.redact(request.resourceType()).slice(0, 64), - status: null, header_names: Object.keys(request.headers()) .map((name) => this.secrets.redact(name).slice(0, 256)) .sort() .slice(0, 256), - failure: - kind === "request-failed" - ? this.secrets - .redact(request.failure()?.errorText ?? "unknown") - .slice(0, 1_024) - : null, + }; + if (kind === "request-failed") { + this.push({ + ...observation, + kind, + status: null, + failure: this.secrets + .redact(request.failure()?.errorText ?? "unknown") + .slice(0, 1_024), + }); + return; + } + this.push({ + ...observation, + kind, + status: null, + failure: null, }); } @@ -300,14 +309,25 @@ export class PlaywrightScenarioEvents { ): void { const bytes = Buffer.byteLength(payload); const isText = typeof payload === "string"; - const text = isText ? this.secrets.redact(payload).slice(0, 65_536) : null; + if (!isText) { + this.push({ + kind, + url, + payload_type: "binary", + payload_bytes: bytes, + payload_text: null, + truncated: false, + }); + return; + } + const text = this.secrets.redact(payload).slice(0, 65_536); this.push({ kind, url, - payload_type: isText ? "text" : "binary", + payload_type: "text", payload_bytes: bytes, payload_text: text, - truncated: isText && text !== null && text.length < payload.length, + truncated: text.length < payload.length, }); } diff --git a/tests/composition/runtime-observation/pngVisualDiff.test.ts b/src/browser/PngVisualDiff.test.ts similarity index 80% rename from tests/composition/runtime-observation/pngVisualDiff.test.ts rename to src/browser/PngVisualDiff.test.ts index 764df4391d..3485d48ddf 100644 --- a/tests/composition/runtime-observation/pngVisualDiff.test.ts +++ b/src/browser/PngVisualDiff.test.ts @@ -2,11 +2,12 @@ import { deflateSync } from "node:zlib"; import { describe, expect, it } from "vitest"; -import { comparePngScreenshots } from "../../../src/browser/PngVisualDiff.js"; +import { comparePngScreenshots } from "./PngVisualDiff.js"; import { compareWebScreenshotsInputSchema, createWebScreenshotArtifact, -} from "../../../src/domain/webScreenshot.js"; + webScreenshotDiffSchema, +} from "../domain/webScreenshot.js"; describe("PNG visual diff", () => { it("reports exact changed-pixel and channel metrics", () => { @@ -60,6 +61,26 @@ describe("PNG visual diff", () => { ), ).toThrow("oversized PNG"); }); + + it("rejects metrics that cannot represent their comparison status", () => { + const image = artifact(1, 1, [0, 0, 0, 255]); + const result = comparePngScreenshots( + compareWebScreenshotsInputSchema.parse({ before: image, after: image }), + ); + + expect( + webScreenshotDiffSchema.safeParse({ + ...result, + status: "dimension_mismatch", + }).success, + ).toBe(false); + expect( + webScreenshotDiffSchema.safeParse({ + ...result, + compared_pixels: 2, + }).success, + ).toBe(false); + }); }); const artifact = (width: number, height: number, pixels: readonly number[]) => diff --git a/src/browser/PngVisualDiff.ts b/src/browser/PngVisualDiff.ts index 03ad522b06..5b01812d17 100644 --- a/src/browser/PngVisualDiff.ts +++ b/src/browser/PngVisualDiff.ts @@ -50,19 +50,29 @@ export const comparePngScreenshots = ( if (changed) changedPixels += 1; } const pixels = before.width * before.height; - return { - schema_version: 1, - status: changedPixels === 0 ? "identical" : "different", + const context = { + schema_version: 1 as const, before: dimensions(before), after: dimensions(after), channel_threshold: input.channel_threshold, compared_pixels: pixels, - changed_pixels: changedPixels, - changed_ratio: changedPixels / pixels, maximum_channel_delta: maximumDelta, mean_absolute_channel_delta: totalDelta / (pixels * 4), limitations: limitations(), }; + if (changedPixels === 0) + return { + ...context, + status: "identical", + changed_pixels: 0, + changed_ratio: 0, + }; + return { + ...context, + status: "different", + changed_pixels: changedPixels, + changed_ratio: changedPixels / pixels, + }; }; const decodePng = ( diff --git a/tests/composition/process-capture/sensitiveTextCapture.test.ts b/src/browser/SensitiveTextCapture.test.ts similarity index 93% rename from tests/composition/process-capture/sensitiveTextCapture.test.ts rename to src/browser/SensitiveTextCapture.test.ts index e1592a1d8e..3d6ef688a4 100644 --- a/tests/composition/process-capture/sensitiveTextCapture.test.ts +++ b/src/browser/SensitiveTextCapture.test.ts @@ -3,7 +3,7 @@ import { describe, expect, it } from "vitest"; import { boundedSensitiveText, redactSensitiveText, -} from "../../../src/browser/SensitiveTextCapture.js"; +} from "./SensitiveTextCapture.js"; describe("sensitive console text", () => { it("redacts assignments, bearer credentials, and JWT-shaped values", () => { diff --git a/tests/composition/setup-lifecycle/browserConfig.test.ts b/src/config.browser.test.ts similarity index 99% rename from tests/composition/setup-lifecycle/browserConfig.test.ts rename to src/config.browser.test.ts index ac969e6ea4..db92448893 100644 --- a/tests/composition/setup-lifecycle/browserConfig.test.ts +++ b/src/config.browser.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { parseConfig } from "../../../src/config.js"; +import { parseConfig } from "./config.js"; describe("browser runtime configuration", () => { it("builds an exact-origin browser observation ceiling only when enabled", () => { diff --git a/tests/composition/setup-lifecycle/capabilityFlags.test.ts b/src/config.capabilityFlags.test.ts similarity index 91% rename from tests/composition/setup-lifecycle/capabilityFlags.test.ts rename to src/config.capabilityFlags.test.ts index 7a82387e76..02845081d3 100644 --- a/tests/composition/setup-lifecycle/capabilityFlags.test.ts +++ b/src/config.capabilityFlags.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { parseConfig } from "../../../src/config.js"; +import { parseConfig } from "./config.js"; describe("capability flags", () => { it("rejects values outside the exact true/false boundary", () => { diff --git a/tests/composition/setup-lifecycle/passiveObservationConfig.test.ts b/src/config.passiveObservation.test.ts similarity index 98% rename from tests/composition/setup-lifecycle/passiveObservationConfig.test.ts rename to src/config.passiveObservation.test.ts index d64c0e8c15..4201b8b73b 100644 --- a/tests/composition/setup-lifecycle/passiveObservationConfig.test.ts +++ b/src/config.passiveObservation.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { parseConfig } from "../../../src/config.js"; +import { parseConfig } from "./config.js"; describe("passive browser observation policy", () => { it("requires both endpoint and origin scopes when enabled", () => { diff --git a/tests/composition/setup-lifecycle/processCaptureConfig.test.ts b/src/config.processCapture.test.ts similarity index 96% rename from tests/composition/setup-lifecycle/processCaptureConfig.test.ts rename to src/config.processCapture.test.ts index f4e0142d11..6e3330574a 100644 --- a/tests/composition/setup-lifecycle/processCaptureConfig.test.ts +++ b/src/config.processCapture.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { parseConfig } from "../../../src/config.js"; +import { parseConfig } from "./config.js"; describe("process capture configuration", () => { it("parses all authority required by enabled capture", () => { diff --git a/tests/composition/setup-lifecycle/config.test.ts b/src/config.test.ts similarity index 99% rename from tests/composition/setup-lifecycle/config.test.ts rename to src/config.test.ts index 640ee50676..aa1506f5e4 100644 --- a/tests/composition/setup-lifecycle/config.test.ts +++ b/src/config.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { parseConfig } from "../../../src/config.js"; +import { parseConfig } from "./config.js"; describe("runtime configuration", () => { it("allows target-free startup and defaults to Hopper's documented launcher", () => { diff --git a/tests/composition/analysis-sessions/contractSnapshot.test.ts b/src/contracts/contractSnapshot.test.ts similarity index 88% rename from tests/composition/analysis-sessions/contractSnapshot.test.ts rename to src/contracts/contractSnapshot.test.ts index 23fa7c6837..4dea4c65d8 100644 --- a/tests/composition/analysis-sessions/contractSnapshot.test.ts +++ b/src/contracts/contractSnapshot.test.ts @@ -6,27 +6,24 @@ import { OFFICIAL_TOOL_CONTRACTS, SESSION_TOOL_CONTRACTS, TOOL_CONTRACTS, -} from "../../../src/contracts/toolContracts.js"; -import { NATIVE_TOOL_CONTRACTS } from "../../../src/contracts/nativeToolContracts.js"; -import { ARTIFACT_TOOL_CONTRACTS } from "../../../src/contracts/artifactToolContracts.js"; -import { MANAGED_TOOL_CONTRACTS } from "../../../src/contracts/managedToolContracts.js"; -import { MANAGED_WORKFLOW_TOOL_CONTRACTS } from "../../../src/contracts/managedWorkflowToolContracts.js"; -import { BROWSER_TOOL_CONTRACTS } from "../../../src/contracts/browserToolContracts.js"; -import { BROWSER_SCENARIO_TOOL_CONTRACTS } from "../../../src/contracts/browserScenarioToolContracts.js"; -import { ELECTRON_TOOL_CONTRACTS } from "../../../src/contracts/electronToolContracts.js"; -import { JAVASCRIPT_RUNTIME_OBSERVATION_TOOL_CONTRACTS } from "../../../src/contracts/javascriptRuntimeObservationToolContracts.js"; -import { APPLICATION_TOOL_CONTRACTS } from "../../../src/contracts/applicationToolContracts.js"; +} from "./toolContracts.js"; +import { NATIVE_TOOL_CONTRACTS } from "./nativeToolContracts.js"; +import { ARTIFACT_TOOL_CONTRACTS } from "./artifactToolContracts.js"; +import { MANAGED_TOOL_CONTRACTS } from "./managedToolContracts.js"; +import { MANAGED_WORKFLOW_TOOL_CONTRACTS } from "./managedWorkflowToolContracts.js"; +import { BROWSER_TOOL_CONTRACTS } from "./browserToolContracts.js"; +import { BROWSER_SCENARIO_TOOL_CONTRACTS } from "./browserScenarioToolContracts.js"; +import { ELECTRON_TOOL_CONTRACTS } from "./electronToolContracts.js"; +import { JAVASCRIPT_RUNTIME_OBSERVATION_TOOL_CONTRACTS } from "./javascriptRuntimeObservationToolContracts.js"; +import { APPLICATION_TOOL_CONTRACTS } from "./applicationToolContracts.js"; import { enhancedOutputSchemas, managedOutputSchemas, managedWorkflowOutputSchemas, officialOutputSchemas, sessionOutputSchemas, -} from "../../../src/contracts/toolOutputSchemas.js"; -import { - annotationsFromEffects, - TOOL_EFFECTS, -} from "../../../src/contracts/toolEffects.js"; +} from "./toolOutputSchemas.js"; +import { annotationsFromEffects, TOOL_EFFECTS } from "./toolEffects.js"; const convertContractJsonSchema = (schema: z.ZodType) => z.toJSONSchema(schema, { diff --git a/src/contracts/investigationExamples.ts b/src/contracts/investigationExamples.ts index 1f3109e73c..849de9108e 100644 --- a/src/contracts/investigationExamples.ts +++ b/src/contracts/investigationExamples.ts @@ -3,7 +3,7 @@ import { createEvidence } from "../domain/evidence.js"; import { jsonValueSchema } from "../domain/jsonValue.js"; import { compareProcessCaptures, - processCaptureSchema, + parseProcessCapture, } from "../domain/processCapture.js"; import { FUNCTION_COMPARISON_EXAMPLE } from "./functionComparisonExample.js"; import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "./processCaptureExample.js"; @@ -46,7 +46,7 @@ const PROCESS_PROVIDER = { name: "REA deterministic process harness", version: "3", } as const; -const capture = processCaptureSchema.parse(EMPTY_PROCESS_CAPTURE_EXAMPLE); +const capture = parseProcessCapture(EMPTY_PROCESS_CAPTURE_EXAMPLE); const captureEvidence = (scenario: string) => createEvidence(undefined, PROCESS_PROVIDER, { predicateType: "rea.process-capture/v4", diff --git a/tests/composition/analysis-sessions/promptContracts.test.ts b/src/contracts/promptContracts.test.ts similarity index 94% rename from tests/composition/analysis-sessions/promptContracts.test.ts rename to src/contracts/promptContracts.test.ts index cc8680091d..022ccacb09 100644 --- a/tests/composition/analysis-sessions/promptContracts.test.ts +++ b/src/contracts/promptContracts.test.ts @@ -1,10 +1,7 @@ import { describe, expect, it } from "vitest"; -import { - PROMPT_CONTRACTS, - renderGuidedPrompt, -} from "../../../src/contracts/promptContracts.js"; -import { TOOL_CONTRACTS } from "../../../src/contracts/toolContracts.js"; +import { PROMPT_CONTRACTS, renderGuidedPrompt } from "./promptContracts.js"; +import { TOOL_CONTRACTS } from "./toolContracts.js"; const promptNames = [ "investigate_feature", diff --git a/tests/composition/analysis-sessions/toolContracts.test.ts b/src/contracts/toolContracts.test.ts similarity index 84% rename from tests/composition/analysis-sessions/toolContracts.test.ts rename to src/contracts/toolContracts.test.ts index 901f173c71..7ab352feb8 100644 --- a/tests/composition/analysis-sessions/toolContracts.test.ts +++ b/src/contracts/toolContracts.test.ts @@ -5,14 +5,14 @@ import { OFFICIAL_TOOL_CONTRACTS, SESSION_TOOL_CONTRACTS, TOOL_CONTRACTS, -} from "../../../src/contracts/toolContracts.js"; -import { ARTIFACT_TOOL_CONTRACTS } from "../../../src/contracts/artifactToolContracts.js"; -import { MANAGED_TOOL_CONTRACTS } from "../../../src/contracts/managedToolContracts.js"; -import { MANAGED_WORKFLOW_TOOL_CONTRACTS } from "../../../src/contracts/managedWorkflowToolContracts.js"; -import { NATIVE_TOOL_CONTRACTS } from "../../../src/contracts/nativeToolContracts.js"; -import { BROWSER_TOOL_CONTRACTS } from "../../../src/contracts/browserToolContracts.js"; -import { ELECTRON_TOOL_CONTRACTS } from "../../../src/contracts/electronToolContracts.js"; -import { APPLICATION_TOOL_CONTRACTS } from "../../../src/contracts/applicationToolContracts.js"; +} from "./toolContracts.js"; +import { ARTIFACT_TOOL_CONTRACTS } from "./artifactToolContracts.js"; +import { MANAGED_TOOL_CONTRACTS } from "./managedToolContracts.js"; +import { MANAGED_WORKFLOW_TOOL_CONTRACTS } from "./managedWorkflowToolContracts.js"; +import { NATIVE_TOOL_CONTRACTS } from "./nativeToolContracts.js"; +import { BROWSER_TOOL_CONTRACTS } from "./browserToolContracts.js"; +import { ELECTRON_TOOL_CONTRACTS } from "./electronToolContracts.js"; +import { APPLICATION_TOOL_CONTRACTS } from "./applicationToolContracts.js"; describe("tool contract inventory", () => { it("publishes the canonical analysis and session tool inventory", () => { diff --git a/tests/composition/analysis-sessions/contractValidation.test.ts b/src/contracts/workflowInputContracts.test.ts similarity index 52% rename from tests/composition/analysis-sessions/contractValidation.test.ts rename to src/contracts/workflowInputContracts.test.ts index 1488855e4f..13861db881 100644 --- a/tests/composition/analysis-sessions/contractValidation.test.ts +++ b/src/contracts/workflowInputContracts.test.ts @@ -1,30 +1,17 @@ import { describe, expect, it } from "vitest"; -import { traceJavaScriptSemanticsRequestSchema } from "../../../src/contracts/applicationWorkflowInputContracts.js"; -import { buildCapabilityInventory } from "../../../src/application/CapabilityInventory.js"; +import { traceJavaScriptSemanticsRequestSchema } from "./applicationWorkflowInputContracts.js"; import { artifactInspectionInputSchema, artifactInventoryInputSchema, -} from "../../../src/contracts/artifactToolContracts.js"; +} from "./artifactToolContracts.js"; +import { JAVASCRIPT_FEATURE_TRACE_FULL_EVIDENCE_EXAMPLE } from "./javascriptApplicationWorkflowExamples.js"; import { MANAGED_WORKFLOW_TOOL_CONTRACTS, + compareManagedMembersReferenceInputSchema, managedApplicationGraphReferenceInputSchema, managedNativeVerificationReferenceInputSchema, - compareManagedMembersReferenceInputSchema, -} from "../../../src/contracts/managedWorkflowToolContracts.js"; -import { - PROMPT_CONTRACTS, - renderGuidedPrompt, -} from "../../../src/contracts/promptContracts.js"; -import { - annotationsFromEffects, - toolContractMetadata, -} from "../../../src/contracts/toolEffects.js"; -import { - requireOutputSchema, - toolAvailability, -} from "../../../src/contracts/toolOutputSchemaPrimitives.js"; -import { JAVASCRIPT_FEATURE_TRACE_FULL_EVIDENCE_EXAMPLE } from "../../../src/contracts/javascriptApplicationWorkflowExamples.js"; +} from "./managedWorkflowToolContracts.js"; const EVIDENCE_ID = `ev_${"a".repeat(64)}`; @@ -36,22 +23,24 @@ const workflowInput = (name: string) => { return contract.examples[0].input; }; -describe("contract validation boundaries", () => { +describe("workflow input contracts", () => { it("rejects missing and duplicated application Evidence references", () => { const query = { seed: { kind: "literal" as const, value: "renderer" }, direction: "callers" as const, }; - const missing = traceJavaScriptSemanticsRequestSchema.safeParse({ query }); - expect(missing.success).toBe(false); + expect( + traceJavaScriptSemanticsRequestSchema.safeParse({ query }).success, + ).toBe(false); const evidence = JAVASCRIPT_FEATURE_TRACE_FULL_EVIDENCE_EXAMPLE.application; - const duplicated = traceJavaScriptSemanticsRequestSchema.safeParse({ - application: evidence, - application_evidence_id: evidence.evidence_id, - query, - }); - expect(duplicated.success).toBe(false); + expect( + traceJavaScriptSemanticsRequestSchema.safeParse({ + application: evidence, + application_evidence_id: evidence.evidence_id, + query, + }).success, + ).toBe(false); }); it("rejects managed Evidence identity collisions", () => { @@ -103,54 +92,4 @@ describe("contract validation boundaries", () => { expect(artifactInventoryInputSchema.safeParse(input).success).toBe(false); expect(artifactInspectionInputSchema.safeParse(input).success).toBe(false); }); - - it("rejects contradictory tool availability states", () => { - const inventory = buildCapabilityInventory( - { open: false, capabilities: [] }, - { - processCaptureEnabled: false, - evidenceFileRoots: 0, - investigationInputRoots: 0, - }, - ); - const unavailable = inventory.find(({ available }) => !available); - expect(unavailable).toBeDefined(); - expect(toolAvailability.safeParse(unavailable).success).toBe(true); - expect( - toolAvailability.safeParse({ ...unavailable, available: true }).success, - ).toBe(false); - expect( - toolAvailability.safeParse({ - ...unavailable, - available: false, - reason: "available", - }).success, - ).toBe(false); - }); - - it("covers deterministic contract rendering and defensive helper errors", () => { - const rendered = renderGuidedPrompt(PROMPT_CONTRACTS[0], { - zulu: "last", - alpha: "first", - }); - expect(rendered).toContain('"alpha":"first"'); - expect( - annotationsFromEffects({ - mutatesTarget: false, - mutatesSession: false, - writesFilesystem: false, - launchesProcess: false, - accessesNetwork: true, - changesUiState: false, - mayDiscardData: false, - idempotent: true, - }).openWorldHint, - ).toBe(true); - expect(() => toolContractMetadata("missing_tool")).toThrow( - /Missing effect audit/u, - ); - expect(() => requireOutputSchema({}, "missing_output")).toThrow( - /Missing output schema/u, - ); - }); }); diff --git a/src/domain/analysisErrorPresentation.ts b/src/domain/analysisErrorPresentation.ts index 4da6004a68..a8885253c1 100644 --- a/src/domain/analysisErrorPresentation.ts +++ b/src/domain/analysisErrorPresentation.ts @@ -28,12 +28,16 @@ export const analysisErrorRemediationAction = ( return "Check that the unknown_id belongs to this session, then retry."; if (error instanceof ReplayPlanStaleError) return "Review the rebuilt replay plan and explicitly approve its new digest."; - if (error instanceof PermissionRequiredError) - return error.restartRequired - ? "Add the exact missing scope to the administrator configuration, then restart the registered MCP server or client." - : error.elicitationSupported - ? "Approve the exact missing scope, then retry the operation." - : "Add the exact missing scope beneath the administrator ceiling, then retry."; + if (error instanceof PermissionRequiredError) { + switch (error.remediation) { + case "configure": + return "Add the exact missing scope beneath the administrator ceiling, then retry."; + case "elicit": + return "Approve the exact missing scope, then retry the operation."; + case "restart": + return "Add the exact missing scope to the administrator configuration, then restart the registered MCP server or client."; + } + } return analysisErrorUserMessage(error); }; diff --git a/src/domain/analysisErrorProjection.ts b/src/domain/analysisErrorProjection.ts index 5fcb7c0ed5..1fb2166e6a 100644 --- a/src/domain/analysisErrorProjection.ts +++ b/src/domain/analysisErrorProjection.ts @@ -50,9 +50,10 @@ export const projectAnalysisError = ( remediation: { action: analysisErrorRemediationAction(error), restart_required: - error instanceof PermissionRequiredError && error.restartRequired, + error instanceof PermissionRequiredError && + error.remediation === "restart", ...(error instanceof PermissionRequiredError - ? { elicitation_supported: error.elicitationSupported } + ? { elicitation_supported: error.remediation === "elicit" } : {}), }, ...(details === undefined ? {} : { details }), diff --git a/tests/composition/analysis-sessions/analysisProfile.test.ts b/src/domain/analysisProfile.test.ts similarity index 97% rename from tests/composition/analysis-sessions/analysisProfile.test.ts rename to src/domain/analysisProfile.test.ts index 0ac9eb7e1e..92825cd9b7 100644 --- a/tests/composition/analysis-sessions/analysisProfile.test.ts +++ b/src/domain/analysisProfile.test.ts @@ -4,7 +4,7 @@ import { analysisProfileSchema, analysisProfilesEqual, createAnalysisProfile, -} from "../../../src/domain/analysisProfile.js"; +} from "./analysisProfile.js"; const PROVIDER = { id: "fixture", diff --git a/src/domain/analysisSnapshot.fixture.ts b/src/domain/analysisSnapshot.fixture.ts new file mode 100644 index 0000000000..ed88773620 --- /dev/null +++ b/src/domain/analysisSnapshot.fixture.ts @@ -0,0 +1,26 @@ +import { createAnalysisProfile } from "./analysisProfile.js"; +import type { BinaryTarget } from "./binaryTarget.js"; + +/** Immutable target shared by analysis-snapshot contract tests. */ +export const ANALYSIS_SNAPSHOT_TARGET: BinaryTarget = { + path: "/tmp/app", + sha256: "a".repeat(64), + kind: "executable", + format: "mach-o", + architecture: "arm64", + availableArchitectures: ["arm64"], +}; + +/** Provider identity shared by analysis-snapshot contract tests. */ +export const ANALYSIS_SNAPSHOT_PROVIDER = { + id: "fixture", + name: "Fixture", + version: "1", +} as const; + +/** Exact analysis profile shared by analysis-snapshot contract tests. */ +export const ANALYSIS_SNAPSHOT_PROFILE = createAnalysisProfile( + ANALYSIS_SNAPSHOT_PROVIDER, + 1, + { loader: "mach-o-arm64" }, +); diff --git a/src/domain/analysisSnapshot.test.ts b/src/domain/analysisSnapshot.test.ts new file mode 100644 index 0000000000..a07ffdd07c --- /dev/null +++ b/src/domain/analysisSnapshot.test.ts @@ -0,0 +1,73 @@ +import { describe, expect, it } from "vitest"; + +import { + type AnalysisSnapshot, + parseAnalysisSnapshot, + snapshotBinding, + snapshotEvidenceForQuery, + snapshotTarget, +} from "./analysisSnapshot.js"; +import { + ANALYSIS_SNAPSHOT_PROFILE, + ANALYSIS_SNAPSHOT_PROVIDER, + ANALYSIS_SNAPSHOT_TARGET, +} from "./analysisSnapshot.fixture.js"; +import { createEvidence } from "./evidence.js"; +import { createEvidenceBundle } from "./evidenceBundle.js"; + +describe("analysis snapshot contract", () => { + it("finds only Evidence committed to the exact binding and profile", () => { + const evidence = createEvidence( + ANALYSIS_SNAPSHOT_TARGET, + ANALYSIS_SNAPSHOT_PROVIDER, + { + operation: "analyze_function", + parameters: { procedure: "main" }, + result: { summary: "cached" }, + analysisProfile: ANALYSIS_SNAPSHOT_PROFILE, + }, + ); + const legacy = createEvidence( + ANALYSIS_SNAPSHOT_TARGET, + ANALYSIS_SNAPSHOT_PROVIDER, + { + operation: "legacy_query", + parameters: {}, + result: { summary: "legacy" }, + }, + ); + const snapshot: AnalysisSnapshot = { + snapshot_version: 2, + target: snapshotTarget(ANALYSIS_SNAPSHOT_TARGET), + binding: snapshotBinding(ANALYSIS_SNAPSHOT_PROFILE), + entries: [], + evidence_bundle: createEvidenceBundle([evidence, legacy]), + }; + expect( + snapshotEvidenceForQuery(snapshot, { + target: ANALYSIS_SNAPSHOT_TARGET, + bindingProfile: ANALYSIS_SNAPSHOT_PROFILE, + operation: "analyze_function", + parameters: { procedure: "main" }, + provider: ANALYSIS_SNAPSHOT_PROVIDER, + evidenceProfile: ANALYSIS_SNAPSHOT_PROFILE, + }), + ).toEqual(evidence); + expect( + snapshotEvidenceForQuery(snapshot, { + target: ANALYSIS_SNAPSHOT_TARGET, + bindingProfile: ANALYSIS_SNAPSHOT_PROFILE, + operation: "legacy_query", + parameters: {}, + provider: ANALYSIS_SNAPSHOT_PROVIDER, + evidenceProfile: ANALYSIS_SNAPSHOT_PROFILE, + }), + ).toBeUndefined(); + }); + + it("rejects snapshot v1 with explicit recapture guidance", () => { + expect(() => parseAnalysisSnapshot({ snapshot_version: 1 })).toThrow( + /v1.*recapture.*v2/iu, + ); + }); +}); diff --git a/src/domain/binaryTarget.fixture.ts b/src/domain/binaryTarget.fixture.ts new file mode 100644 index 0000000000..669bea1c1e --- /dev/null +++ b/src/domain/binaryTarget.fixture.ts @@ -0,0 +1,61 @@ +/** Build a minimal ELF header for binary-target parser tests. */ +export const elf = ( + class_: number, + endian: number, + machine: number, +): Buffer => { + const bytes = Buffer.alloc(20); + bytes.set([0x7f, 0x45, 0x4c, 0x46, class_, endian]); + if (endian === 1) bytes.writeUInt16LE(machine, 18); + else bytes.writeUInt16BE(machine, 18); + return bytes; +}; + +/** Build a minimal thin Mach-O header for binary-target parser tests. */ +export const thinMach = (magic: number, cpu: number): Buffer => { + const bytes = Buffer.alloc(8); + bytes.writeUInt32BE(magic, 0); + if (magic === 0xcefaedfe || magic === 0xcffaedfe) bytes.writeUInt32LE(cpu, 4); + else bytes.writeUInt32BE(cpu, 4); + return bytes; +}; + +/** Build a minimal FAT Mach-O table for binary-target parser tests. */ +export const fat = ( + cpus: readonly number[], + declared = cpus.length, +): Buffer => { + const bytes = Buffer.alloc(8 + cpus.length * 20); + bytes.writeUInt32BE(0xcafebabe, 0); + bytes.writeUInt32BE(declared, 4); + cpus.forEach((cpu, index) => bytes.writeUInt32BE(cpu, 8 + index * 20)); + return bytes; +}; + +/** Build a bounded PE image with optional managed metadata. */ +export const pe = ( + machine: number, + offset = 64, + characteristics = 0x0002, + managed = false, +): Buffer => { + const optionalHeaderSize = + machine === 0x014c || machine === 0x01c0 ? 224 : 240; + const bytes = Buffer.alloc(Math.max(512, offset + 24 + optionalHeaderSize)); + bytes.write("MZ", 0, "ascii"); + bytes.writeUInt32LE(offset, 0x3c); + bytes.write("PE\0\0", offset, "binary"); + bytes.writeUInt16LE(machine, offset + 4); + bytes.writeUInt16LE(optionalHeaderSize, offset + 20); + bytes.writeUInt16LE(characteristics, offset + 22); + const optionalHeader = offset + 24; + const pe32 = machine === 0x014c || machine === 0x01c0; + bytes.writeUInt16LE(pe32 ? 0x10b : 0x20b, optionalHeader); + const directoryOffset = pe32 ? 96 : 112; + bytes.writeUInt32LE(16, optionalHeader + directoryOffset - 4); + if (managed) { + bytes.writeUInt32LE(0x2000, optionalHeader + directoryOffset + 14 * 8); + bytes.writeUInt32LE(72, optionalHeader + directoryOffset + 14 * 8 + 4); + } + return bytes; +}; diff --git a/src/domain/binaryTarget.test.ts b/src/domain/binaryTarget.test.ts new file mode 100644 index 0000000000..69a55f939f --- /dev/null +++ b/src/domain/binaryTarget.test.ts @@ -0,0 +1,82 @@ +import { describe, expect, it } from "vitest"; + +import { parseExecutableHeader } from "./binaryTarget.js"; +import { elf, fat, pe, thinMach } from "./binaryTarget.fixture.js"; + +describe("executable header parsing", () => { + it.each([ + [elf(1, 1, 62), "elf", "x86_64"], + [elf(2, 2, 183), "elf", "arm64"], + [thinMach(0xfeedfacf, 0x0100000c), "mach-o", "arm64"], + [thinMach(0xcefaedfe, 0x01000007), "mach-o", "x86_64"], + [pe(0x8664), "pe", "x86_64"], + [pe(0xaa64), "pe", "arm64"], + ] as const)("parses metadata for %s", (bytes, format, architecture) => { + const result = parseExecutableHeader(bytes, "arm64"); + expect(result.ok && result.value).toMatchObject({ format, architecture }); + }); + + it("distinguishes native PE applications, DLLs, and managed assemblies", () => { + const application = parseExecutableHeader(pe(0x8664), "x64"); + const library = parseExecutableHeader(pe(0x8664, 64, 0x2002), "x64"); + const managed = parseExecutableHeader(pe(0x8664, 64, 0x0002, true), "x64"); + const nonExecutable = parseExecutableHeader(pe(0x8664, 64, 0), "x64"); + + expect(application.ok && application.value).toMatchObject({ + executableRole: "application", + managed: false, + }); + expect(library.ok && library.value).toMatchObject({ + executableRole: "shared-library", + managed: false, + }); + expect(managed.ok && managed.value).toMatchObject({ + executableRole: "application", + managed: true, + }); + expect(nonExecutable.ok && nonExecutable.value).toMatchObject({ + executableRole: "non-executable", + managed: false, + }); + }); + + it("selects the host architecture from a FAT table", () => { + const bytes = fat([0x01000007, 0x0100000c]); + const arm = parseExecutableHeader(bytes, "arm64"); + const intel = parseExecutableHeader(bytes, "x64"); + expect(arm.ok && arm.value).toMatchObject({ + architecture: "arm64", + availableArchitectures: ["x86_64", "arm64"], + }); + expect(intel.ok && intel.value).toMatchObject({ + architecture: "x86_64", + availableArchitectures: ["x86_64", "arm64"], + }); + }); + + it("rejects FAT files without a host-compatible slice", () => { + expect(parseExecutableHeader(fat([0x01000007]), "arm64")).toMatchObject({ + ok: false, + }); + }); + + it.each([ + Buffer.alloc(0), + Buffer.from([0x7f, 0x45, 0x4c, 0x46]), + fat([], 2), + pe(0xffff), + ])("rejects malformed, truncated, or unsupported metadata", (bytes) => { + expect(parseExecutableHeader(bytes, "arm64").ok).toBe(false); + }); + + it("rejects malformed PE optional-header commitments", () => { + const wrongMagic = pe(0x8664); + wrongMagic.writeUInt16LE(0x10b, 64 + 24); + const truncatedDirectories = pe(0x8664); + truncatedDirectories.writeUInt16LE(112, 64 + 20); + truncatedDirectories.writeUInt32LE(16, 64 + 24 + 108); + + expect(parseExecutableHeader(wrongMagic, "x64").ok).toBe(false); + expect(parseExecutableHeader(truncatedDirectories, "x64").ok).toBe(false); + }); +}); diff --git a/tests/composition/runtime-observation/browserObservation.test.ts b/src/domain/browserObservation.test.ts similarity index 64% rename from tests/composition/runtime-observation/browserObservation.test.ts rename to src/domain/browserObservation.test.ts index 4b6ba95541..56e360367c 100644 --- a/tests/composition/runtime-observation/browserObservation.test.ts +++ b/src/domain/browserObservation.test.ts @@ -1,10 +1,5 @@ import { describe, expect, it } from "vitest"; -import { listBrowserTargets } from "../../../src/application/BrowserObservationService.js"; -import { createPermissionAuthority } from "../../../src/application/PermissionAuthority.js"; -import { CdpCaptureCompleteness } from "../../../src/browser/CdpCaptureCompleteness.js"; -import { CdpCaptureEvents } from "../../../src/browser/CdpCaptureEvents.js"; -import { ingestElectronScriptEvent } from "../../../src/browser/CdpElectronScriptEvents.js"; import { browserEndpointSchema, browserOriginSchema, @@ -12,8 +7,8 @@ import { isLiteralLoopbackHostname, listBrowserTargetsInputSchema, sanitizeBrowserUrl, -} from "../../../src/domain/browserObservation.js"; -import { captureWebScreenshotInputSchema } from "../../../src/domain/webScreenshot.js"; +} from "./browserObservation.js"; +import { captureWebScreenshotInputSchema } from "./webScreenshot.js"; describe("browser observation contracts", () => { it("normalizes exact HTTP origins without accepting broader URL scopes", () => { @@ -57,46 +52,6 @@ describe("browser observation contracts", () => { expect(isLiteralLoopbackHostname(hostname), hostname).toBe(false); }); - it("requests loopback authority for an IPv6-only browser origin", async () => { - const endpoint = "http://127.0.0.1:9222"; - const origin = "http://[::1]:3000"; - const ceiling = { - capability: "browser_observe" as const, - roots: [], - executables: [], - environment_names: [], - origins: [endpoint, origin], - network: "loopback" as const, - mount: false, - }; - const authority = await createPermissionAuthority( - [ceiling], - [ - { - ...ceiling, - grant_id: "administrator:browser_observe", - lifetime: "administrator", - operation_identity: null, - expires_at: null, - }, - ], - ); - if (!authority.ok) throw authority.error; - const result = await listBrowserTargets( - undefined, - authority.value, - listBrowserTargetsInputSchema.parse({ - cdp_endpoint: endpoint, - allowed_origins: [origin], - approved: true, - }), - ); - expect(result).toMatchObject({ - ok: false, - error: { _tag: "AnalysisCapabilityUnavailableError" }, - }); - }); - it("applies conservative bounded defaults to public tool input", () => { expect( listBrowserTargetsInputSchema.parse({ @@ -194,58 +149,6 @@ describe("browser observation sensitive surfaces and retention", () => { ).toBe(true); }); - it("removes stale frame attribution when CDP destroys execution contexts", () => { - const request = inspectWebPageInputSchema.parse({ - cdp_endpoint: "http://127.0.0.1:9222", - allowed_origins: ["https://app.example.test"], - target_id: "page-1", - approved: true, - }); - const browser = new CdpCaptureEvents( - request, - new Set(["https://app.example.test"]), - ); - browser.beginAuthorizedFrame("frame-old"); - browser.ingest({ - method: "Runtime.executionContextCreated", - params: { context: { id: 7, auxData: { frameId: "frame-old" } } }, - }); - browser.ingest({ - method: "Runtime.executionContextDestroyed", - params: { executionContextId: 7 }, - }); - browser.ingest({ - method: "Debugger.scriptParsed", - params: { - scriptId: "script-1", - url: "https://app.example.test/app.js", - executionContextId: 7, - }, - }); - const script = browser.scripts.get("script-1"); - if (script === undefined) throw new TypeError("Expected captured script"); - expect(browser.frameForScript(script, new Set(["frame-old"]))).toBeNull(); - - const electronFrames = new Map(); - const completeness = new CdpCaptureCompleteness(); - ingestElectronScriptEvent({ - event: { - method: "Runtime.executionContextCreated", - params: { context: { id: 7, auxData: { frameId: "frame-old" } } }, - }, - scripts: [], - executionContextFrames: electronFrames, - completeness, - }); - ingestElectronScriptEvent({ - event: { method: "Runtime.executionContextsCleared", params: {} }, - scripts: [], - executionContextFrames: electronFrames, - completeness, - }); - expect(electronFrames.size).toBe(0); - }); - it("removes credentials, query values, and fragments from observed URLs", () => { expect( sanitizeBrowserUrl( diff --git a/src/domain/browserScenarioCapture.test.ts b/src/domain/browserScenarioCapture.test.ts new file mode 100644 index 0000000000..614bbe07c6 --- /dev/null +++ b/src/domain/browserScenarioCapture.test.ts @@ -0,0 +1,106 @@ +import { expect, it } from "vitest"; + +import { sanitizeBrowserUrl } from "./browserObservation.js"; +import { + browserScenarioCompletenessSchema, + browserScenarioEventSchema, + browserStepArtifactsSchema, +} from "./browserScenarioCaptureValues.js"; + +const networkEvent = { + sequence: 1, + step_index: 0, + method: "GET", + url: sanitizeBrowserUrl("https://example.test/resource"), + resource_type: "document", + header_names: [], +} as const; + +it("parses each network outcome without contradictory status or failure data", () => { + expect( + browserScenarioEventSchema.safeParse({ + ...networkEvent, + kind: "response", + status: null, + failure: null, + }).success, + ).toBe(false); + expect( + browserScenarioEventSchema.safeParse({ + ...networkEvent, + kind: "request-failed", + status: 500, + failure: "connection reset", + }).success, + ).toBe(false); +}); + +it("keeps WebSocket payload representation tied to its payload type", () => { + const frame = { + sequence: 1, + step_index: 0, + kind: "websocket-frame-received", + url: sanitizeBrowserUrl("https://example.test/socket"), + payload_bytes: 3, + truncated: false, + } as const; + expect( + browserScenarioEventSchema.safeParse({ + ...frame, + payload_type: "binary", + payload_text: "abc", + }).success, + ).toBe(false); + expect( + browserScenarioEventSchema.safeParse({ + ...frame, + payload_type: "text", + payload_text: "abc", + }).success, + ).toBe(true); +}); + +it("does not attach a content digest to redacted storage secrets", () => { + expect( + browserStepArtifactsSchema.safeParse({ + screenshot: { state: "not_requested" }, + dom: { state: "not_requested" }, + accessibility: { state: "not_requested" }, + url: { state: "not_requested" }, + history: { state: "not_requested" }, + storage: { + state: "captured", + value: { + cookies: [], + local_storage: [ + { + name: "session", + value_state: "redacted-secret", + value_sha256: "a".repeat(64), + }, + ], + session_storage: [], + }, + }, + }).success, + ).toBe(false); +}); + +it("derives equality eligibility from exact completeness state", () => { + expect( + browserScenarioCompletenessSchema.safeParse({ + status: "complete", + equality_eligible: false, + missing_sections: [], + truncated_sections: [], + }).success, + ).toBe(false); + expect( + browserScenarioCompletenessSchema.safeParse({ + status: "incomplete", + equality_eligible: false, + missing_sections: ["dom"], + truncated_sections: ["events"], + }).success, + ).toBe(false); +}); diff --git a/src/domain/browserScenarioCapture.ts b/src/domain/browserScenarioCapture.ts index ea70eb2fcd..1e1de497a8 100644 --- a/src/domain/browserScenarioCapture.ts +++ b/src/domain/browserScenarioCapture.ts @@ -7,14 +7,17 @@ import { } from "./browserScenarioCaptureValues.js"; export { + classifyBrowserScenarioCompleteness, browserScenarioCompletenessSchema, browserScenarioEventSchema, browserScenarioStepSchema, browserStepArtifactsSchema, captureStateSchema, type BrowserScenarioCompleteness, + type BrowserScenarioCompletenessSection, type BrowserScenarioEvent, type BrowserScenarioStep, + type BrowserScenarioStepOutcome, type BrowserStepArtifacts, } from "./browserScenarioCaptureValues.js"; diff --git a/src/domain/browserScenarioCaptureValues.ts b/src/domain/browserScenarioCaptureValues.ts index c44cf2204b..74e4227d94 100644 --- a/src/domain/browserScenarioCaptureValues.ts +++ b/src/domain/browserScenarioCaptureValues.ts @@ -65,25 +65,49 @@ const historySchema = z.strictObject({ .max(256), }); -const storageValueSchema = z.strictObject({ +const hashedStorageValueShape = { + value_state: z.literal("hashed"), + value_sha256: digestSchema, +}; +const redactedStorageValueShape = { + value_state: z.literal("redacted-secret"), + value_sha256: z.null(), +}; +const storageValueFingerprintSchema = z.discriminatedUnion("value_state", [ + z.strictObject(hashedStorageValueShape), + z.strictObject(redactedStorageValueShape), +]); +export type BrowserStorageValueFingerprint = z.infer< + typeof storageValueFingerprintSchema +>; + +const storageValueSchema = z.discriminatedUnion("value_state", [ + z.strictObject({ + name: z.string().max(1_024), + ...hashedStorageValueShape, + }), + z.strictObject({ + name: z.string().max(1_024), + ...redactedStorageValueShape, + }), +]); + +const cookieShape = { name: z.string().max(1_024), - value_state: z.enum(["hashed", "redacted-secret"]), - value_sha256: digestSchema.nullable(), -}); + domain: z.string().max(2_048), + path: z.string().max(4_096), + secure: z.boolean(), + http_only: z.boolean(), + same_site: z.enum(["Strict", "Lax", "None"]), +}; const storageSnapshotSchema = z.strictObject({ cookies: z .array( - z.strictObject({ - name: z.string().max(1_024), - domain: z.string().max(2_048), - path: z.string().max(4_096), - secure: z.boolean(), - http_only: z.boolean(), - same_site: z.enum(["Strict", "Lax", "None"]), - value_state: z.enum(["hashed", "redacted-secret"]), - value_sha256: digestSchema.nullable(), - }), + z.discriminatedUnion("value_state", [ + z.strictObject({ ...cookieShape, ...hashedStorageValueShape }), + z.strictObject({ ...cookieShape, ...redactedStorageValueShape }), + ]), ) .max(512), local_storage: z.array(storageValueSchema).max(512), @@ -106,8 +130,22 @@ const eventBase = { }; const eventUrl = sanitizedBrowserUrlSchema.nullable(); +const networkEventShape = { + ...eventBase, + method: z.string().min(1).max(32), + url: sanitizedBrowserUrlSchema, + resource_type: z.string().min(1).max(64), + header_names: z.array(z.string().max(256)).max(256), +}; +const webSocketFrameShape = { + ...eventBase, + kind: z.enum(["websocket-frame-sent", "websocket-frame-received"]), + url: sanitizedBrowserUrlSchema, + payload_bytes: z.number().int().min(0), + truncated: z.boolean(), +}; -export const browserScenarioEventSchema = z.discriminatedUnion("kind", [ +export const browserScenarioEventSchema = z.union([ z.strictObject({ ...eventBase, kind: z.literal("console"), @@ -122,14 +160,22 @@ export const browserScenarioEventSchema = z.discriminatedUnion("kind", [ stack: z.string().max(262_144).nullable(), }), z.strictObject({ - ...eventBase, - kind: z.enum(["request", "response", "request-failed"]), - method: z.string().min(1).max(32), - url: sanitizedBrowserUrlSchema, - resource_type: z.string().min(1).max(64), - status: z.number().int().min(100).max(599).nullable(), - header_names: z.array(z.string().max(256)).max(256), - failure: z.string().max(1_024).nullable(), + ...networkEventShape, + kind: z.literal("request"), + status: z.null(), + failure: z.null(), + }), + z.strictObject({ + ...networkEventShape, + kind: z.literal("response"), + status: z.number().int().min(100).max(599), + failure: z.null(), + }), + z.strictObject({ + ...networkEventShape, + kind: z.literal("request-failed"), + status: z.null(), + failure: z.string().min(1).max(1_024), }), z.strictObject({ ...eventBase, @@ -137,13 +183,14 @@ export const browserScenarioEventSchema = z.discriminatedUnion("kind", [ url: sanitizedBrowserUrlSchema, }), z.strictObject({ - ...eventBase, - kind: z.enum(["websocket-frame-sent", "websocket-frame-received"]), - url: sanitizedBrowserUrlSchema, - payload_type: z.enum(["text", "binary"]), - payload_bytes: z.number().int().min(0), - payload_text: z.string().max(65_536).nullable(), - truncated: z.boolean(), + ...webSocketFrameShape, + payload_type: z.literal("text"), + payload_text: z.string().max(65_536), + }), + z.strictObject({ + ...webSocketFrameShape, + payload_type: z.literal("binary"), + payload_text: z.null(), }), z.strictObject({ ...eventBase, @@ -182,50 +229,92 @@ const completenessSectionSchema = z.enum([ "popups", "websockets", ]); +export type BrowserScenarioCompletenessSection = z.infer< + typeof completenessSectionSchema +>; -export const browserScenarioCompletenessSchema = z - .strictObject({ - status: z.enum(["complete", "incomplete", "truncated"]), - equality_eligible: z.boolean(), - missing_sections: z.array(completenessSectionSchema), - truncated_sections: z.array(completenessSectionSchema), - }) - .superRefine((value, context) => { - const expectedStatus = - value.truncated_sections.length > 0 - ? "truncated" - : value.missing_sections.length > 0 - ? "incomplete" - : "complete"; - if (value.status !== expectedStatus) - context.addIssue({ - code: "custom", - path: ["status"], - message: "Completeness status does not match section accounting", - }); - if (value.equality_eligible !== (expectedStatus === "complete")) - context.addIssue({ - code: "custom", - path: ["equality_eligible"], - message: "Missing or truncated evidence is never equality-eligible", - }); - }); +export const browserScenarioCompletenessSchema = z.discriminatedUnion( + "status", + [ + z.strictObject({ + status: z.literal("complete"), + equality_eligible: z.literal(true), + missing_sections: z.tuple([]), + truncated_sections: z.tuple([]), + }), + z.strictObject({ + status: z.literal("incomplete"), + equality_eligible: z.literal(false), + missing_sections: z.array(completenessSectionSchema).min(1), + truncated_sections: z.tuple([]), + }), + z.strictObject({ + status: z.literal("truncated"), + equality_eligible: z.literal(false), + missing_sections: z.array(completenessSectionSchema), + truncated_sections: z.array(completenessSectionSchema).min(1), + }), + ], +); export type BrowserScenarioCompleteness = z.infer< typeof browserScenarioCompletenessSchema >; -export const browserScenarioStepSchema = z.strictObject({ +/** Classify canonical browser-scenario completeness from section accounting. */ +export const classifyBrowserScenarioCompleteness = ( + missing: Iterable, + truncated: Iterable, +): BrowserScenarioCompleteness => { + const missingSections = [...new Set(missing)].sort(); + const truncatedSections = [...new Set(truncated)].sort(); + if (truncatedSections.length > 0) + return browserScenarioCompletenessSchema.parse({ + status: "truncated", + equality_eligible: false, + missing_sections: missingSections, + truncated_sections: truncatedSections, + }); + if (missingSections.length > 0) + return browserScenarioCompletenessSchema.parse({ + status: "incomplete", + equality_eligible: false, + missing_sections: missingSections, + truncated_sections: [], + }); + return { + status: "complete", + equality_eligible: true, + missing_sections: [], + truncated_sections: [], + }; +}; + +const browserScenarioStepShape = { step_index: z.number().int().min(0), step_id: z.string().min(1).max(64), action: z.string().min(1).max(64), - status: z.enum(["completed", "failed", "cancelled"]), elapsed_ms: z.number().int().min(0), before_url: sanitizedBrowserUrlSchema, after_url: sanitizedBrowserUrlSchema, - error: z.string().max(4_096).nullable(), event_sequence_start: z.number().int().min(1), event_sequence_end: z.number().int().min(0), artifacts: browserStepArtifactsSchema, completeness: browserScenarioCompletenessSchema, -}); +}; +export const browserScenarioStepSchema = z.union([ + z.strictObject({ + ...browserScenarioStepShape, + status: z.literal("completed"), + error: z.null(), + }), + z.strictObject({ + ...browserScenarioStepShape, + status: z.enum(["failed", "cancelled"]), + error: z.string().max(4_096), + }), +]); export type BrowserScenarioStep = z.infer; +type StepOutcome = Step extends BrowserScenarioStep + ? Pick + : never; +export type BrowserScenarioStepOutcome = StepOutcome; diff --git a/tests/composition/runtime-observation/browserScenarioDiff.test.ts b/src/domain/browserScenarioDiff.test.ts similarity index 98% rename from tests/composition/runtime-observation/browserScenarioDiff.test.ts rename to src/domain/browserScenarioDiff.test.ts index 808481f7f3..51e1f7b328 100644 --- a/tests/composition/runtime-observation/browserScenarioDiff.test.ts +++ b/src/domain/browserScenarioDiff.test.ts @@ -5,11 +5,11 @@ import { describe, expect, it } from "vitest"; import { compareBrowserScenarios, compareBrowserScenariosInputSchema, -} from "../../../src/domain/browserScenarioDiff.js"; +} from "./browserScenarioDiff.js"; import { browserScenarioCaptureSchema, type BrowserScenarioCapture, -} from "../../../src/domain/browserScenarioCapture.js"; +} from "./browserScenarioCapture.js"; describe("browser scenario comparison", () => { it("records canonical literal normalization and ignores declared volatile fields", () => { diff --git a/src/domain/browserScenarioDiff.ts b/src/domain/browserScenarioDiff.ts index 29c8adbe6b..513b27d617 100644 --- a/src/domain/browserScenarioDiff.ts +++ b/src/domain/browserScenarioDiff.ts @@ -1,8 +1,16 @@ import { type BrowserScenarioCapture, type BrowserScenarioStep, - type BrowserStepArtifacts, } from "./browserScenarioCapture.js"; +import { + actionState, + artifactEvidenceState, + captured, + eventEvidenceState, + eventsFor, + screenshotProjection, + type CaptureState, +} from "./browserScenarioDiffEvidence.js"; import { browserScenarioDiffSchema, type BrowserScenarioAlignmentFailure, @@ -26,22 +34,18 @@ export { type CompareBrowserScenariosInput, } from "./browserScenarioDiffValues.js"; -type CaptureState = - | { readonly state: "captured"; readonly value: T } - | { readonly state: "not_requested" } - | { readonly state: "missing"; readonly reason: string } - | { - readonly state: "truncated"; - readonly observed: number; - readonly retained: number; - readonly reason: string; - }; - -interface ComparableArtifact { +type ComparableArtifact = { readonly artifact: BrowserScenarioArtifactKind; - readonly status: "changed" | "unchanged" | "unknown" | "not_compared"; - readonly diff: BrowserScenarioArtifactDiff | null; -} +} & ( + | { + readonly status: "unchanged" | "not_compared"; + readonly diff: null; + } + | { + readonly status: "changed" | "unknown"; + readonly diff: BrowserScenarioArtifactDiff; + } +); interface ScenarioAlignment { readonly before: ReadonlyMap; @@ -434,80 +438,3 @@ const compareCapturedValues = ( }, }; }; - -const artifactEvidenceState = ( - artifact: BrowserScenarioArtifactKind, - state: CaptureState, - step: BrowserScenarioStep, -): BrowserScenarioEvidenceState => { - if (state.state !== "captured") return state.state; - const section = artifact === "action_state" ? "action" : artifact; - if (step.completeness.truncated_sections.includes(section)) - return "truncated"; - if (step.completeness.missing_sections.includes(section)) return "missing"; - return "captured"; -}; - -const eventEvidenceState = ( - capture: BrowserScenarioCapture, - step: BrowserScenarioStep, -): BrowserScenarioEvidenceState => { - const sections = [ - "events", - "frames", - "workers", - "popups", - "websockets", - ] as const; - if ( - capture.events.dropped > 0 || - sections.some( - (section) => - capture.completeness.truncated_sections.includes(section) || - step.completeness.truncated_sections.includes(section), - ) - ) - return "truncated"; - if ( - sections.some( - (section) => - capture.completeness.missing_sections.includes(section) || - step.completeness.missing_sections.includes(section), - ) - ) - return "missing"; - return "captured"; -}; - -const actionState = (step: BrowserScenarioStep) => ({ - action: step.action, - status: step.status, - before_url: step.before_url, - after_url: step.after_url, - error: step.error, -}); - -const eventsFor = ( - capture: BrowserScenarioCapture, - stepIndex: number, -): readonly unknown[] => - capture.events.items.flatMap( - ({ sequence: _sequence, step_index: eventStepIndex, ...event }) => - eventStepIndex === stepIndex ? [event] : [], - ); - -const captured = (value: Value): CaptureState => ({ - state: "captured", - value, -}); - -const screenshotProjection = ( - screenshot: Extract< - BrowserStepArtifacts["screenshot"], - { state: "captured" } - >["value"], -) => ({ - sha256: screenshot.sha256, - bytes: screenshot.bytes, - media_type: screenshot.media_type, -}); diff --git a/src/domain/browserScenarioDiffEvidence.ts b/src/domain/browserScenarioDiffEvidence.ts new file mode 100644 index 0000000000..e3dd77a9dd --- /dev/null +++ b/src/domain/browserScenarioDiffEvidence.ts @@ -0,0 +1,123 @@ +import type { + BrowserScenarioCapture, + BrowserScenarioCompleteness, + BrowserScenarioCompletenessSection, + BrowserScenarioStep, + BrowserStepArtifacts, +} from "./browserScenarioCapture.js"; +import type { + BrowserScenarioArtifactKind, + BrowserScenarioEvidenceState, +} from "./browserScenarioDiffValues.js"; + +/** Capture-state input consumed by browser scenario artifact comparison. */ +export type CaptureState = + | { readonly state: "captured"; readonly value: Value } + | { readonly state: "not_requested" } + | { readonly state: "missing"; readonly reason: string } + | { + readonly state: "truncated"; + readonly observed: number; + readonly retained: number; + readonly reason: string; + }; + +const includesCompletenessSection = ( + completeness: BrowserScenarioCompleteness, + collection: "missing_sections" | "truncated_sections", + section: BrowserScenarioCompletenessSection, +): boolean => { + const sections: readonly BrowserScenarioCompletenessSection[] = + completeness[collection]; + return sections.includes(section); +}; + +/** Project one captured artifact through its step-level completeness ledger. */ +export const artifactEvidenceState = ( + artifact: BrowserScenarioArtifactKind, + state: CaptureState, + step: BrowserScenarioStep, +): BrowserScenarioEvidenceState => { + if (state.state !== "captured") return state.state; + const section = artifact === "action_state" ? "action" : artifact; + if ( + includesCompletenessSection( + step.completeness, + "truncated_sections", + section, + ) + ) + return "truncated"; + return includesCompletenessSection( + step.completeness, + "missing_sections", + section, + ) + ? "missing" + : "captured"; +}; + +const EVENT_SECTIONS = [ + "events", + "frames", + "workers", + "popups", + "websockets", +] as const; + +/** Project event evidence through capture- and step-level completeness. */ +export const eventEvidenceState = ( + capture: BrowserScenarioCapture, + step: BrowserScenarioStep, +): BrowserScenarioEvidenceState => { + const listed = (collection: "missing_sections" | "truncated_sections") => + EVENT_SECTIONS.some( + (section) => + includesCompletenessSection( + capture.completeness, + collection, + section, + ) || + includesCompletenessSection(step.completeness, collection, section), + ); + if (capture.events.dropped > 0 || listed("truncated_sections")) + return "truncated"; + return listed("missing_sections") ? "missing" : "captured"; +}; + +/** Select stable action fields for normalized comparison. */ +export const actionState = (step: BrowserScenarioStep) => ({ + action: step.action, + status: step.status, + before_url: step.before_url, + after_url: step.after_url, + error: step.error, +}); + +/** Select events attributed to one scenario step without sequence metadata. */ +export const eventsFor = ( + capture: BrowserScenarioCapture, + stepIndex: number, +): readonly unknown[] => + capture.events.items.flatMap( + ({ sequence: _sequence, step_index: eventStepIndex, ...event }) => + eventStepIndex === stepIndex ? [event] : [], + ); + +/** Wrap one value as captured comparison evidence. */ +export const captured = (value: Value): CaptureState => ({ + state: "captured", + value, +}); + +/** Retain stable screenshot identity without embedding image bytes. */ +export const screenshotProjection = ( + screenshot: Extract< + BrowserStepArtifacts["screenshot"], + { state: "captured" } + >["value"], +) => ({ + sha256: screenshot.sha256, + bytes: screenshot.bytes, + media_type: screenshot.media_type, +}); diff --git a/tests/composition/javascript-applications/bundleComparison.test.ts b/src/domain/bundleComparison.test.ts similarity index 96% rename from tests/composition/javascript-applications/bundleComparison.test.ts rename to src/domain/bundleComparison.test.ts index 6e669ee448..bbf96dcf26 100644 --- a/tests/composition/javascript-applications/bundleComparison.test.ts +++ b/src/domain/bundleComparison.test.ts @@ -3,15 +3,15 @@ import { describe, expect, it } from "vitest"; import { bundleComparisonResultSchema, compareBundles, -} from "../../../src/domain/bundleComparison.js"; -import { createEvidence } from "../../../src/domain/evidence.js"; -import { createEvidenceBundle } from "../../../src/domain/evidenceBundle.js"; +} from "./bundleComparison.js"; +import { createEvidence } from "./evidence.js"; +import { createEvidenceBundle } from "./evidenceBundle.js"; import { createResidualUnknown, recordUnknownInputSchema, updateResidualUnknown, updateUnknownInputSchema, -} from "../../../src/domain/residualUnknown.js"; +} from "./residualUnknown.js"; const PROVIDER = { id: "fixture", name: "Fixture", version: "1" } as const; const evidence = (label: string) => diff --git a/tests/composition/analysis-sessions/callPath.test.ts b/src/domain/callPath.test.ts similarity index 93% rename from tests/composition/analysis-sessions/callPath.test.ts rename to src/domain/callPath.test.ts index b7fbf97111..48b147ec17 100644 --- a/tests/composition/analysis-sessions/callPath.test.ts +++ b/src/domain/callPath.test.ts @@ -1,14 +1,14 @@ import { describe, expect, it } from "vitest"; -import { enhancedInputSchemas } from "../../../src/contracts/enhancedInputs.js"; +import { enhancedInputSchemas } from "../contracts/enhancedInputs.js"; import { buildCallPath, callPathInputSchema, callPathResultSchema, -} from "../../../src/domain/callPath.js"; -import { createEvidence, type Evidence } from "../../../src/domain/evidence.js"; -import { functionDossierSchema } from "../../../src/domain/hopperValues.js"; -import { jsonValueSchema } from "../../../src/domain/jsonValue.js"; +} from "./callPath.js"; +import { createEvidence, type Evidence } from "./evidence.js"; +import { functionDossierSchema } from "./hopperValues.js"; +import { jsonValueSchema } from "./jsonValue.js"; const bounded = (items: readonly Item[], complete = true) => ({ items, diff --git a/tests/composition/evidence-investigations/changedBehavior.test.ts b/src/domain/changedBehavior.test.ts similarity index 97% rename from tests/composition/evidence-investigations/changedBehavior.test.ts rename to src/domain/changedBehavior.test.ts index bd0ce39816..778bd70835 100644 --- a/tests/composition/evidence-investigations/changedBehavior.test.ts +++ b/src/domain/changedBehavior.test.ts @@ -3,9 +3,9 @@ import { describe, expect, it } from "vitest"; import { changedBehaviorResultSchema, findChangedBehavior, -} from "../../../src/domain/changedBehavior.js"; -import { createEvidence, type Evidence } from "../../../src/domain/evidence.js"; -import type { JsonValue } from "../../../src/domain/jsonValue.js"; +} from "./changedBehavior.js"; +import { createEvidence, type Evidence } from "./evidence.js"; +import type { JsonValue } from "./jsonValue.js"; const source = (digit: string): Evidence => createEvidence( diff --git a/tests/composition/evidence-investigations/completionLedgerGeneration.test.ts b/src/domain/completionLedgerGeneration.test.ts similarity index 98% rename from tests/composition/evidence-investigations/completionLedgerGeneration.test.ts rename to src/domain/completionLedgerGeneration.test.ts index 4f6d652a99..c9514fbf2b 100644 --- a/tests/composition/evidence-investigations/completionLedgerGeneration.test.ts +++ b/src/domain/completionLedgerGeneration.test.ts @@ -5,8 +5,8 @@ import { createCompletionLedgerArtifacts, parseCompletionManifest, type CompletionVerifierReport, -} from "../../../src/domain/completionLedgerGeneration.js"; -import { parseEvidenceCompletionLedger } from "../../../src/domain/evidenceCompletionLedger.js"; +} from "./completionLedgerGeneration.js"; +import { parseEvidenceCompletionLedger } from "./evidenceCompletionLedger.js"; const digest = (digit: string): string => digit.repeat(64); const evidenceId = (digit: string): string => `ev_${digest(digit)}`; diff --git a/src/domain/conformancePackage.ts b/src/domain/conformancePackage.ts index 2c347d484e..95a2810c1c 100644 --- a/src/domain/conformancePackage.ts +++ b/src/domain/conformancePackage.ts @@ -5,22 +5,16 @@ import { z } from "zod"; import { evidenceEnvelopeSchema } from "./evidence.js"; import { evidenceBundleSchema } from "./evidenceBundle.js"; +import { err, ok, type Result } from "./result.js"; /** Schema version for the conformance package format. */ export const CONFORMANCE_PACKAGE_VERSION = 1; -/** A stable, path-independent identifier for a conformance package. */ -export const conformancePackageIdSchema = z - .string() - .regex(/^cp_[a-f0-9]{64}$/u); +const conformancePackageIdSchema = z.string().regex(/^cp_[a-f0-9]{64}$/u); -/** Identifier for a single scenario within a package. */ -export const scenarioIdSchema = z - .string() - .regex(/^[A-Za-z][A-Za-z0-9._-]{0,99}$/u); +const scenarioIdSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9._-]{0,99}$/u); -/** Deterministic manifest for a scenario fixture. */ -export const scenarioManifestSchema = z.strictObject({ +const scenarioManifestSchema = z.strictObject({ scenario_id: scenarioIdSchema, name: z.string().min(1), description: z.string().min(1), @@ -32,8 +26,7 @@ export const scenarioManifestSchema = z.strictObject({ expected_patterns: z.array(z.string()).default([]), }); -/** Replay plan describing how a scenario is replayed deterministically. */ -export const replayPlanSchema = z.strictObject({ +const replayPlanSchema = z.strictObject({ scenario_id: scenarioIdSchema, /** Ordered steps to execute during replay. */ steps: z @@ -51,8 +44,7 @@ export const replayPlanSchema = z.strictObject({ environment: z.record(z.string(), z.string()).default({}), }); -/** Shim plan for intercepting observable effects. */ -export const shimPlanSchema = z.strictObject({ +const shimPlanSchema = z.strictObject({ scenario_id: scenarioIdSchema, /** Shims to install, each intercepting a named effect. */ shims: z @@ -64,23 +56,20 @@ export const shimPlanSchema = z.strictObject({ policy: z.enum(["observe", "allow", "block", "emulate"]), }), ) - .min(0) .max(50), }); -/** Expected evidence for a scenario, checked against the captured run. */ -export const expectedEvidenceSchema = z.strictObject({ +const expectedEvidenceSchema = z.strictObject({ scenario_id: scenarioIdSchema, /** Expected evidence envelopes. */ - envelopes: z.array(evidenceEnvelopeSchema).min(0).max(100), + envelopes: z.array(evidenceEnvelopeSchema).max(100), /** Expected evidence bundle. */ bundle: evidenceBundleSchema.nullable(), /** Required dimensions that must be present in the evidence. */ required_dimensions: z.array(z.string().min(1)).default([]), }); -/** Verifier contract describing how to validate conformance. */ -export const verifierContractSchema = z.strictObject({ +const verifierContractSchema = z.strictObject({ scenario_id: scenarioIdSchema, /** Dimensions to verify. */ dimensions: z @@ -97,122 +86,245 @@ export const verifierContractSchema = z.strictObject({ timing_tolerance_ms: z.number().int().nonnegative().default(0), }); -/** Top-level conformance package manifest. */ -export const conformancePackageSchema = z.strictObject({ +const conformancePackageContentsSchema = z.strictObject({ schema_version: z.literal(CONFORMANCE_PACKAGE_VERSION), - package_id: conformancePackageIdSchema, name: z.string().min(1), description: z.string().min(1), created_at: z.string().datetime(), /** Scenario manifests. */ scenarios: z.array(scenarioManifestSchema).min(1).max(100), - /** Replay plans keyed by scenario_id. */ + /** Exactly one replay plan for each scenario. */ replay_plans: z.array(replayPlanSchema).min(1).max(100), - /** Shim plans keyed by scenario_id. */ + /** At most one optional shim plan for each scenario. */ shim_plans: z.array(shimPlanSchema).default([]), - /** Expected evidence for each scenario. */ + /** Exactly one expected-evidence record for each scenario. */ expected_evidence: z.array(expectedEvidenceSchema).min(1).max(100), - /** Verifier contracts for each scenario. */ + /** Exactly one verifier contract for each scenario. */ verifier_contracts: z.array(verifierContractSchema).min(1).max(100), }); -export type ConformancePackage = z.infer; -export type ScenarioManifest = z.infer; -export type ReplayPlan = z.infer; -export type ShimPlan = z.infer; -export type ExpectedEvidence = z.infer; -export type VerifierContract = z.infer; +const conformancePackageRecordSchema = conformancePackageContentsSchema.extend({ + package_id: conformancePackageIdSchema, +}); -/** Error from validation or package operations. */ +const conformancePackageSchema = + conformancePackageRecordSchema.brand<"ConformancePackage">(); + +type ConformancePackageContents = z.output< + typeof conformancePackageContentsSchema +>; +type ConformancePackageRecord = z.output; +type DeepReadonly = T extends readonly (infer Item)[] + ? readonly DeepReadonly[] + : T extends object + ? { readonly [Key in keyof T]: DeepReadonly } + : T; + +/** Source fields accepted by the conformance-package smart constructor. */ +export type ConformancePackageInput = DeepReadonly< + z.input +>; + +/** A shape- and relation-checked, content-addressed conformance package. */ +export type ConformancePackage = DeepReadonly< + z.output +>; + +/** Verification policy for one conformance scenario. */ +export type VerifierContract = DeepReadonly< + z.output +>; + +/** Per-scenario package section participating in relation checks. */ +export type ConformancePackageSection = + | "replay_plans" + | "shim_plans" + | "expected_evidence" + | "verifier_contracts"; + +/** Precise reason an unknown package could not become a domain value. */ export type ConformancePackageError = - | { kind: "invalid_package"; message: string } - | { kind: "scenario_not_found"; scenario_id: string } - | { kind: "duplicate_scenario"; scenario_id: string }; - -/** Result type for package operations. */ -export type ConformancePackageResult = - | { ok: true; value: T } - | { ok: false; error: ConformancePackageError }; - -/** Validate a conformance package and cross-check internal references. */ -export function validateConformancePackage( - input: unknown, -): ConformancePackageResult { - const parsed = conformancePackageSchema.safeParse(input); - if (!parsed.success) - return { - ok: false, - error: { - kind: "invalid_package", - message: parsed.error.issues[0]?.message ?? "invalid package", - }, + | { + readonly kind: "invalid_package"; + readonly message: string; + } + | { + readonly kind: "duplicate_scenario"; + readonly scenario_id: string; + readonly message: string; + } + | { + readonly kind: "unknown_scenario_reference"; + readonly section: ConformancePackageSection; + readonly scenario_id: string; + readonly message: string; + } + | { + readonly kind: "duplicate_scenario_reference"; + readonly section: ConformancePackageSection; + readonly scenario_id: string; + readonly message: string; + } + | { + readonly kind: "missing_scenario_reference"; + readonly section: Exclude; + readonly scenario_id: string; + readonly message: string; + } + | { + readonly kind: "package_id_mismatch"; + readonly actual: string; + readonly expected: string; + readonly message: string; }; - const pkg = parsed.data; +type ScenarioReferenceSection = + | { + readonly name: Exclude; + readonly entries: readonly { readonly scenario_id: string }[]; + readonly required: true; + } + | { + readonly name: "shim_plans"; + readonly entries: readonly { readonly scenario_id: string }[]; + readonly required: false; + }; - // Check for duplicate scenario IDs - const seen = new Set(); - for (const s of pkg.scenarios) { - if (seen.has(s.scenario_id)) - return { - ok: false, - error: { kind: "duplicate_scenario", scenario_id: s.scenario_id }, - }; - seen.add(s.scenario_id); - } +/** Parse unknown input once into a package whose aggregate invariants hold. */ +export function parseConformancePackage( + input: unknown, +): Result { + const parsed = conformancePackageSchema.safeParse(input); + if (!parsed.success) + return err({ + kind: "invalid_package", + message: parsed.error.issues[0]?.message ?? "Invalid package", + }); - // Check that replay plans reference existing scenarios - for (const rp of pkg.replay_plans) { - if (!seen.has(rp.scenario_id)) - return { - ok: false, - error: { - kind: "scenario_not_found", - scenario_id: rp.scenario_id, - }, - }; - } + const relationError = parseScenarioRelations(parsed.data); + if (relationError !== undefined) return err(relationError); - // Check that expected evidence references existing scenarios - for (const ee of pkg.expected_evidence) { - if (!seen.has(ee.scenario_id)) - return { - ok: false, - error: { - kind: "scenario_not_found", - scenario_id: ee.scenario_id, - }, - }; - } + const expectedPackageId = computePackageId(packageContents(parsed.data)); + if (parsed.data.package_id !== expectedPackageId) + return err({ + kind: "package_id_mismatch", + actual: parsed.data.package_id, + expected: expectedPackageId, + message: "Package identifier does not match its canonical contents", + }); - // Check that verifier contracts reference existing scenarios - for (const vc of pkg.verifier_contracts) { - if (!seen.has(vc.scenario_id)) - return { - ok: false, - error: { - kind: "scenario_not_found", - scenario_id: vc.scenario_id, - }, - }; - } - - return { ok: true, value: pkg }; + return ok(parsed.data); } -/** Compute a deterministic package ID from the canonical JSON. */ -export function computePackageId( - pkg: Omit, -): string { - const json = canonicalize(pkg); - if (!json) throw new Error("failed to canonicalize package"); - return `cp_${createHash("sha256").update(json).digest("hex")}`; -} - -/** Create a conformance package with an auto-computed package_id. */ +/** Create a content-addressed package from source-owned typed fields. */ export function createConformancePackage( - pkg: Omit, + input: ConformancePackageInput, ): ConformancePackage { - const package_id = computePackageId(pkg); - return { package_id, ...pkg }; + const contents = conformancePackageContentsSchema.safeParse(input); + if (!contents.success) + throw new TypeError( + `Invalid conformance package source: ${contents.error.issues[0]?.message ?? "unknown parse failure"}`, + ); + + const parsed = parseConformancePackage({ + ...contents.data, + package_id: computePackageId(contents.data), + }); + if (!parsed.ok) + throw new TypeError( + `Invalid conformance package source: ${parsed.error.message}`, + ); + return parsed.value; } + +const parseScenarioRelations = ( + pkg: ConformancePackageRecord, +): ConformancePackageError | undefined => { + const scenarioIds = new Set(); + for (const scenario of pkg.scenarios) { + if (scenarioIds.has(scenario.scenario_id)) + return { + kind: "duplicate_scenario", + scenario_id: scenario.scenario_id, + message: `Duplicate scenario ${scenario.scenario_id}`, + }; + scenarioIds.add(scenario.scenario_id); + } + + const sections: readonly ScenarioReferenceSection[] = [ + { name: "replay_plans", entries: pkg.replay_plans, required: true }, + { name: "shim_plans", entries: pkg.shim_plans, required: false }, + { + name: "expected_evidence", + entries: pkg.expected_evidence, + required: true, + }, + { + name: "verifier_contracts", + entries: pkg.verifier_contracts, + required: true, + }, + ]; + for (const section of sections) { + const error = parseScenarioSection(scenarioIds, section); + if (error !== undefined) return error; + } + return undefined; +}; + +const parseScenarioSection = ( + scenarioIds: ReadonlySet, + section: ScenarioReferenceSection, +): ConformancePackageError | undefined => { + const referenced = new Set(); + for (const entry of section.entries) { + if (!scenarioIds.has(entry.scenario_id)) + return { + kind: "unknown_scenario_reference", + section: section.name, + scenario_id: entry.scenario_id, + message: `${section.name} references unknown scenario ${entry.scenario_id}`, + }; + if (referenced.has(entry.scenario_id)) + return { + kind: "duplicate_scenario_reference", + section: section.name, + scenario_id: entry.scenario_id, + message: `${section.name} contains duplicate scenario ${entry.scenario_id}`, + }; + referenced.add(entry.scenario_id); + } + + if (!section.required) return undefined; + for (const scenarioId of scenarioIds) { + if (!referenced.has(scenarioId)) + return { + kind: "missing_scenario_reference", + section: section.name, + scenario_id: scenarioId, + message: `${section.name} is missing scenario ${scenarioId}`, + }; + } + return undefined; +}; + +const packageContents = ( + pkg: ConformancePackageRecord, +): ConformancePackageContents => ({ + schema_version: pkg.schema_version, + name: pkg.name, + description: pkg.description, + created_at: pkg.created_at, + scenarios: pkg.scenarios, + replay_plans: pkg.replay_plans, + shim_plans: pkg.shim_plans, + expected_evidence: pkg.expected_evidence, + verifier_contracts: pkg.verifier_contracts, +}); + +const computePackageId = (contents: ConformancePackageContents): string => { + const json = canonicalize(contents); + if (json === undefined) + throw new TypeError("Could not canonicalize parsed conformance package"); + return `cp_${createHash("sha256").update(json).digest("hex")}`; +}; diff --git a/src/domain/conformanceReplay.ts b/src/domain/conformanceReplay.ts index cf21bb30cb..a948ec4c49 100644 --- a/src/domain/conformanceReplay.ts +++ b/src/domain/conformanceReplay.ts @@ -1,9 +1,6 @@ import { z } from "zod"; -import { - conformancePackageSchema, - type ConformancePackage, -} from "./conformancePackage.js"; +import { parseConformancePackage } from "./conformancePackage.js"; import { evaluatePackageTrustGates, trustGateResultSchema, @@ -74,12 +71,10 @@ export async function replayConformancePackage( runner: ScenarioRunner = defaultRunner, options: { truncated?: boolean } = {}, ): Promise { - const parsed = conformancePackageSchema.safeParse(packageInput); - if (!parsed.success) - throw new TypeError( - `invalid conformance package: ${parsed.error.issues[0]?.message ?? "unknown"}`, - ); - const pkg: ConformancePackage = parsed.data; + const parsed = parseConformancePackage(packageInput); + if (!parsed.ok) + throw new TypeError(`invalid conformance package: ${parsed.error.message}`); + const pkg = parsed.value; const scenarioResults: ScenarioReplayResult[] = []; let passed = 0; diff --git a/src/domain/conformanceTrustGate.ts b/src/domain/conformanceTrustGate.ts index 47fbfe7f68..5a4f577066 100644 --- a/src/domain/conformanceTrustGate.ts +++ b/src/domain/conformanceTrustGate.ts @@ -389,7 +389,10 @@ export function evaluatePackageTrustGates( const expected = pkg.expected_evidence.find( (e) => e.scenario_id === contract.scenario_id, ); - if (!expected) continue; + if (expected === undefined) + throw new TypeError( + `Parsed conformance package is missing expected evidence for ${contract.scenario_id}`, + ); const expectedEvidence = expected.envelopes[0] ?? {}; const actual = actualEvidence[contract.scenario_id] ?? {}; const result = evaluateTrustGate( diff --git a/src/domain/electronActiveObservation.ts b/src/domain/electronActiveObservation.ts index e8cb879f44..7d73005c1c 100644 --- a/src/domain/electronActiveObservation.ts +++ b/src/domain/electronActiveObservation.ts @@ -235,7 +235,7 @@ const coverageSchema = z.strictObject({ pre_capture_activity: z.literal("unavailable"), }); -const actionResultSchema = z.strictObject({ +const actionResultContextShape = { step_id: z.string().min(1).max(128), kind: z.enum([ "click", @@ -246,10 +246,21 @@ const actionResultSchema = z.strictObject({ ]), window_index: windowIndexSchema.nullable(), target: z.string().max(256).nullable(), - status: z.enum(["completed", "failed", "cancelled"]), elapsed_ms: z.number().int().min(0), - error: z.string().nullable(), -}); +}; + +const actionResultSchema = z.discriminatedUnion("status", [ + z.strictObject({ + ...actionResultContextShape, + status: z.literal("completed"), + error: z.null(), + }), + z.strictObject({ + ...actionResultContextShape, + status: z.enum(["failed", "cancelled"]), + error: z.string(), + }), +]); /** Bounded result of a provider-owned Electron runtime experiment. */ export const electronActiveObservationResultSchema = z.strictObject({ diff --git a/src/domain/electronStaticAnalysisBrowser.ts b/src/domain/electronStaticAnalysisBrowser.ts index 1cdd5dba05..75bc38ea67 100644 --- a/src/domain/electronStaticAnalysisBrowser.ts +++ b/src/domain/electronStaticAnalysisBrowser.ts @@ -2,6 +2,8 @@ import * as t from "@babel/types"; import type { ElectronBrowserWindowFinding, + ElectronBrowserWindowPreload, + ElectronContextBridgeApiKey, ElectronContextBridgeFinding, ElectronStaticValue, ElectronUtilityProcessFinding, @@ -57,8 +59,7 @@ const inspectBrowserWindow = ( web_preferences_status: collected.status, web_preferences: collected.preferences, omitted_web_preferences: collected.omitted, - preload_path: collected.preloadPath, - preload_resolution_context: collected.preloadResolutionContext, + ...collected.preload, module_key: null, location: range(node), }; @@ -76,8 +77,7 @@ const collectWindowOptions = ( ): { readonly status: ElectronBrowserWindowFinding["web_preferences_status"]; readonly preferences: readonly ElectronWebPreference[]; - readonly preloadPath: string | null; - readonly preloadResolutionContext: ElectronBrowserWindowFinding["preload_resolution_context"]; + readonly preload: ElectronBrowserWindowPreload; readonly unknown: number; readonly omitted: number; } => { @@ -85,8 +85,7 @@ const collectWindowOptions = ( return { status: options === undefined ? "missing" : "dynamic", preferences: [], - preloadPath: null, - preloadResolutionContext: null, + preload: { preload_path: null, preload_resolution_context: null }, unknown: options === undefined ? 0 : 1, omitted: 0, }; @@ -95,8 +94,7 @@ const collectWindowOptions = ( return { status: "missing", preferences: [], - preloadPath: null, - preloadResolutionContext: null, + preload: { preload_path: null, preload_resolution_context: null }, unknown: 0, omitted: 0, }; @@ -104,8 +102,7 @@ const collectWindowOptions = ( return { status: "dynamic", preferences: [], - preloadPath: null, - preloadResolutionContext: null, + preload: { preload_path: null, preload_resolution_context: null }, unknown: 1, omitted: 0, }; @@ -118,16 +115,16 @@ const collectWebPreferences = ( ): { readonly status: "object-literal"; readonly preferences: readonly ElectronWebPreference[]; - readonly preloadPath: string | null; - readonly preloadResolutionContext: ElectronBrowserWindowFinding["preload_resolution_context"]; + readonly preload: ElectronBrowserWindowPreload; readonly unknown: number; readonly omitted: number; } => { const preferences: ElectronWebPreference[] = []; let unknown = 0; - let preloadPath: string | null = null; - let preloadResolutionContext: ElectronBrowserWindowFinding["preload_resolution_context"] = - null; + let preload: ElectronBrowserWindowPreload = { + preload_path: null, + preload_resolution_context: null, + }; for (const property of object.properties) { if (t.isSpreadElement(property)) { unknown += 1; @@ -155,10 +152,11 @@ const collectWebPreferences = ( continue; } const path = name === "preload" ? staticPath(property.value) : undefined; - if (path !== undefined) { - preloadPath = path; - preloadResolutionContext = staticPathResolutionContext(property.value); - } + if (path !== undefined) + preload = { + preload_path: path, + preload_resolution_context: staticPathResolutionContext(property.value), + }; const value: ElectronStaticValue = path === undefined ? electronStaticValue(source, property.value) @@ -170,8 +168,7 @@ const collectWebPreferences = ( return { status: "object-literal", preferences: preferences.slice(0, MAX_WEB_PREFERENCES), - preloadPath, - preloadResolutionContext, + preload, unknown, omitted: Math.max(0, preferences.length - MAX_WEB_PREFERENCES), }; @@ -201,14 +198,16 @@ const inspectContextBridge = ( (worldId?.status === "dynamic" ? 1 : 0) + api.unknown; accountForStructure(context, unknown, api.omitted); + const apiKey: ElectronContextBridgeApiKey = + key.status === "dynamic" + ? { api_key: null, api_key_expression: key.expression } + : typeof key.value === "string" + ? { api_key: key.value, api_key_expression: null } + : { api_key: null, api_key_expression: null }; const finding: ElectronContextBridgeFinding = { + ...apiKey, world: isolated ? "isolated" : "main", world_id: worldId, - api_key: - key.status === "literal" && typeof key.value === "string" - ? key.value - : null, - api_key_expression: key.status === "dynamic" ? key.expression : null, api_status: api.status, members: api.members, unknown_members: api.unknown, @@ -234,10 +233,6 @@ const inspectUtilityProcess = ( const moduleNode = argumentNode(node.arguments[0]); const modulePath = moduleNode === undefined ? undefined : staticPath(moduleNode); - const moduleResolutionContext = - modulePath === undefined || moduleNode === undefined - ? null - : staticPathResolutionContext(moduleNode); const options = argumentNode(node.arguments[2]); const serviceName = t.isObjectExpression(options) && @@ -245,20 +240,27 @@ const inspectUtilityProcess = ( ? staticPath(objectProperty(options, "serviceName")?.value ?? options) : undefined; if (modulePath === undefined) context.accumulator.unknownFindings += 1; + const moduleReference = + modulePath === undefined || moduleNode === undefined + ? { + module_path: null, + module_resolution_context: null, + module_expression: boundedExpression(context.source, moduleNode), + } + : { + module_path: modulePath, + module_resolution_context: staticPathResolutionContext(moduleNode), + module_expression: null, + }; const finding: ElectronUtilityProcessFinding = { - module_path: modulePath ?? null, - module_resolution_context: moduleResolutionContext, - module_expression: - modulePath === undefined - ? boundedExpression(context.source, moduleNode) - : null, + ...moduleReference, service_name: serviceName ?? null, module_key: null, location: range(node), }; addLocatedFinding(context, { collection: context.accumulator.utilityProcesses, - key: `electron-utility\0${modulePath ?? finding.module_expression ?? "[missing]"}`, + key: `electron-utility\0${finding.module_path ?? finding.module_expression}`, node, value: finding, }); diff --git a/src/domain/electronStaticAnalysisIpc.ts b/src/domain/electronStaticAnalysisIpc.ts index 97f12d6030..74861732ab 100644 --- a/src/domain/electronStaticAnalysisIpc.ts +++ b/src/domain/electronStaticAnalysisIpc.ts @@ -1,6 +1,7 @@ import * as t from "@babel/types"; import type { + ElectronIpcDescriptor, ElectronIpcFinding, ElectronSenderValidationFinding, } from "./electronStaticAnalysisTypes.js"; @@ -18,12 +19,6 @@ import { } from "./javascriptStaticAnalysisHelpers.js"; import type { JavaScriptFindingContext } from "./javascriptStaticAnalysisState.js"; -interface IpcDescriptor { - readonly side: ElectronIpcFinding["side"]; - readonly operation: ElectronIpcFinding["operation"]; - readonly mode: ElectronIpcFinding["mode"]; -} - /** Inspect Electron IPC operations and validation candidates. */ export const inspectElectronIpcNode = ( node: t.Node, @@ -49,30 +44,56 @@ const inspectIpcCall = ( channelValue.status === "literal" && typeof channelValue.value === "string" ? channelValue.value : null; - const channelExpression = + const channelReference = channel === null - ? channelValue.status === "dynamic" - ? channelValue.expression - : boundedExpression(context.source, channelNode) - : null; - const hasHandler = - descriptor.mode === "listen" || descriptor.mode === "handle"; - const handlerNode = hasHandler ? argumentNode(node.arguments[1]) : undefined; + ? { + channel: null, + channel_expression: + channelValue.status === "dynamic" + ? channelValue.expression + : boundedExpression(context.source, channelNode), + } + : { channel, channel_expression: null }; + const handlerNode = + descriptor.mode === "listen" || descriptor.mode === "handle" + ? argumentNode(node.arguments[1]) + : undefined; + const findingState = + descriptor.mode === "send" + ? { + ...descriptor, + handler_kind: null, + handler_location: null, + } + : descriptor.mode === "invoke" + ? { + ...descriptor, + handler_kind: null, + handler_location: null, + } + : handlerNode === undefined + ? { + ...descriptor, + handler_kind: "missing" as const, + handler_location: null, + } + : { + ...descriptor, + handler_kind: handlerKind(handlerNode), + handler_location: range(handlerNode), + }; if (channel === null) context.accumulator.unknownFindings += 1; - if (hasHandler && handlerNode === undefined) + if (findingState.handler_kind === "missing") context.accumulator.unknownFindings += 1; const finding: ElectronIpcFinding = { - ...descriptor, - channel, - channel_expression: channelExpression, - handler_kind: hasHandler ? handlerKind(handlerNode) : null, - handler_location: handlerNode === undefined ? null : range(handlerNode), + ...findingState, + ...channelReference, module_key: null, location: range(node), }; addLocatedFinding(context, { collection: context.accumulator.ipc, - key: `electron-ipc\0${descriptor.side}\0${descriptor.operation}\0${channel ?? channelExpression ?? "[missing]"}`, + key: `electron-ipc\0${descriptor.side}\0${descriptor.operation}\0${channelReference.channel ?? channelReference.channel_expression}`, node, value: finding, }); @@ -143,7 +164,7 @@ const addValidation = ( }); }; -const ipcDescriptor = (name: string): IpcDescriptor | undefined => { +const ipcDescriptor = (name: string): ElectronIpcDescriptor | undefined => { const renderer = suffixOperation(name, "ipcRenderer"); if (renderer !== undefined) { switch (renderer) { diff --git a/src/domain/electronStaticAnalysisTypes.ts b/src/domain/electronStaticAnalysisTypes.ts index ad4f2d8bc0..e1276d229d 100644 --- a/src/domain/electronStaticAnalysisTypes.ts +++ b/src/domain/electronStaticAnalysisTypes.ts @@ -22,60 +22,107 @@ export interface ElectronWebPreference { readonly value: ElectronStaticValue; } +/** A statically resolved BrowserWindow preload declaration, or its absence. */ +export type ElectronBrowserWindowPreload = + | { + readonly preload_path: string; + readonly preload_resolution_context: JavaScriptStaticPathContext; + } + | { + readonly preload_path: null; + readonly preload_resolution_context: null; + }; + /** Statically visible BrowserWindow construction and preference surface. */ -export interface ElectronBrowserWindowFinding { +export type ElectronBrowserWindowFinding = ElectronBrowserWindowPreload & { readonly options_status: "object-literal" | "dynamic" | "missing"; readonly web_preferences_status: "object-literal" | "dynamic" | "missing"; readonly web_preferences: readonly ElectronWebPreference[]; readonly omitted_web_preferences: number; - readonly preload_path: string | null; - readonly preload_resolution_context: JavaScriptStaticPathContext | null; readonly module_key: string | null; readonly location: JavaScriptSourceRange; -} +}; + +/** Literal, dynamic, or unsupported contextBridge API key syntax. */ +export type ElectronContextBridgeApiKey = + | { readonly api_key: string; readonly api_key_expression: null } + | { readonly api_key: null; readonly api_key_expression: string } + | { readonly api_key: null; readonly api_key_expression: null }; /** One contextBridge API declaration without executing its API object. */ -export interface ElectronContextBridgeFinding { +export type ElectronContextBridgeFinding = ElectronContextBridgeApiKey & { readonly world: "main" | "isolated"; readonly world_id: ElectronStaticValue | null; - readonly api_key: string | null; - readonly api_key_expression: string | null; readonly api_status: "object-literal" | "dynamic" | "missing"; readonly members: readonly string[]; readonly unknown_members: number; readonly omitted_members: number; readonly module_key: string | null; readonly location: JavaScriptSourceRange; -} +}; -/** One statically visible Electron IPC send, invocation, listener, or handler. */ -export interface ElectronIpcFinding { - readonly side: "renderer" | "main"; - readonly operation: - | "send" - | "send-sync" - | "invoke" - | "post-message" - | "send-to-host" - | "on" - | "once" - | "handle" - | "handle-once"; - readonly mode: "send" | "invoke" | "listen" | "handle"; - readonly channel: string | null; - readonly channel_expression: string | null; - readonly handler_kind: - | "inline-function" - | "identifier" - | "member-expression" - | "dynamic-expression" - | "missing" - | null; - readonly handler_location: JavaScriptSourceRange | null; +/** Electron IPC operation identity and its semantic communication mode. */ +export type ElectronIpcDescriptor = + | { + readonly side: "renderer"; + readonly operation: + | "send" + | "send-sync" + | "post-message" + | "send-to-host"; + readonly mode: "send"; + } + | { + readonly side: "renderer"; + readonly operation: "invoke"; + readonly mode: "invoke"; + } + | { + readonly side: "renderer" | "main"; + readonly operation: "on" | "once"; + readonly mode: "listen"; + } + | { + readonly side: "main"; + readonly operation: "handle" | "handle-once"; + readonly mode: "handle"; + }; + +type ElectronIpcHandler = + | { + readonly mode: "send" | "invoke"; + readonly handler_kind: null; + readonly handler_location: null; + } + | { + readonly mode: "listen" | "handle"; + readonly handler_kind: "missing"; + readonly handler_location: null; + } + | { + readonly mode: "listen" | "handle"; + readonly handler_kind: + | "inline-function" + | "identifier" + | "member-expression" + | "dynamic-expression"; + readonly handler_location: JavaScriptSourceRange; + }; + +interface ElectronIpcFindingContext { readonly module_key: string | null; readonly location: JavaScriptSourceRange; } +/** One statically visible Electron IPC send, invocation, listener, or handler. */ +export type ElectronIpcFinding = ElectronIpcDescriptor & + ElectronIpcHandler & + ElectronIpcFindingContext & + ( + | { readonly channel: string; readonly channel_expression: null } + | { readonly channel: null; readonly channel_expression: string } + ); + /** Static check involving an IPC sender, frame, process, URL, or origin. */ export interface ElectronSenderValidationFinding { readonly subject: @@ -92,16 +139,27 @@ export interface ElectronSenderValidationFinding { readonly location: JavaScriptSourceRange; } -/** One utilityProcess.fork declaration and its statically visible entrypoint. */ -export interface ElectronUtilityProcessFinding { - readonly module_path: string | null; - readonly module_resolution_context: JavaScriptStaticPathContext | null; - readonly module_expression: string | null; +interface ElectronUtilityProcessFindingState { readonly service_name: string | null; readonly module_key: string | null; readonly location: JavaScriptSourceRange; } +/** One utilityProcess.fork declaration and its statically visible entrypoint. */ +export type ElectronUtilityProcessFinding = ElectronUtilityProcessFindingState & + ( + | { + readonly module_path: string; + readonly module_resolution_context: JavaScriptStaticPathContext; + readonly module_expression: null; + } + | { + readonly module_path: null; + readonly module_resolution_context: null; + readonly module_expression: string; + } + ); + /** JavaScript-side binding or re-export requested from one native .node addon. */ export interface ElectronNativeAddonBindingFinding { readonly specifier: string; diff --git a/src/domain/electronStaticAnalysisValues.ts b/src/domain/electronStaticAnalysisValues.ts index d391c43d2d..a42dd92bfc 100644 --- a/src/domain/electronStaticAnalysisValues.ts +++ b/src/domain/electronStaticAnalysisValues.ts @@ -47,15 +47,18 @@ export const objectProperty = ( t.isObjectProperty(property) && propertyName(property.key) === name, ); -/** Classify a handler argument while retaining its exact source range. */ -export const handlerKind = ( - node: t.Node | null | undefined, -): +type PresentHandlerKind = | "inline-function" | "identifier" | "member-expression" - | "dynamic-expression" - | "missing" => { + | "dynamic-expression"; + +/** Classify a handler argument while retaining its exact source range. */ +export function handlerKind(node: t.Node): PresentHandlerKind; +export function handlerKind(node: null | undefined): "missing"; +export function handlerKind( + node: t.Node | null | undefined, +): PresentHandlerKind | "missing" { if (node === null || node === undefined) return "missing"; if ( t.isArrowFunctionExpression(node) || @@ -67,7 +70,7 @@ export const handlerKind = ( if (t.isMemberExpression(node) || t.isOptionalMemberExpression(node)) return "member-expression"; return "dynamic-expression"; -}; +} /** Collect bounded dotted keys from one literal contextBridge API object. */ export const collectContextBridgeMembers = ( diff --git a/src/domain/errors.ts b/src/domain/errors.ts index 80a2cb5266..80d289b62d 100644 --- a/src/domain/errors.ts +++ b/src/domain/errors.ts @@ -13,11 +13,13 @@ import type { import { hopperStartupFailure, type HopperStartupDiagnostic, + type HopperStartupFailureDiagnostic, type HopperStartupFailureCode, } from "./hopperStartupFailure.js"; export { hopperStartupFailure, type HopperStartupDiagnostic, + type HopperStartupFailureDiagnostic, type HopperStartupFailureCode, }; export { projectAnalysisError } from "./analysisErrorProjection.js"; @@ -454,7 +456,7 @@ export class HopperProcessError extends HopperError { constructor( readonly exitCode: number | null, - readonly diagnostic?: HopperStartupDiagnostic, + readonly diagnostic?: HopperStartupFailureDiagnostic, ) { super(`Hopper bridge stopped unexpectedly with code ${String(exitCode)}`); const failure = hopperStartupFailure(exitCode); @@ -541,32 +543,31 @@ export interface AnalysisErrorProjection readonly details?: Readonly>; } +/** One legal recovery path for a denied permission request. */ +export type PermissionRemediation = "configure" | "elicit" | "restart"; + +/** Exact denied authority and its legal recovery path. */ +export interface PermissionRequiredContext { + readonly requested: PermissionRequest; + readonly missing: MissingPermissionScope; + readonly ceiling: PermissionScope | null; + readonly remediation: PermissionRemediation; +} + /** Exact denied authority used by both CLI and MCP remediation. */ export class PermissionRequiredError extends AnalysisError { readonly _tag = "PermissionRequiredError" as const; readonly requested: PermissionRequest; readonly missing: MissingPermissionScope; readonly ceiling: PermissionScope | null; - readonly elicitationSupported: boolean; - readonly restartRequired: boolean; + readonly remediation: PermissionRemediation; - constructor( - ...args: readonly [ - requested: PermissionRequest, - missing: MissingPermissionScope, - ceiling: PermissionScope | null, - elicitationSupported: boolean, - restartRequired: boolean, - ] - ) { - const [requested, missing, ceiling, elicitationSupported, restartRequired] = - args; - super(`Permission required for ${requested.capability}`); - this.requested = requested; - this.missing = missing; - this.ceiling = ceiling; - this.elicitationSupported = elicitationSupported; - this.restartRequired = restartRequired; + constructor(context: PermissionRequiredContext) { + super(`Permission required for ${context.requested.capability}`); + this.requested = context.requested; + this.missing = context.missing; + this.ceiling = context.ceiling; + this.remediation = context.remediation; } } diff --git a/src/domain/evidence.test.ts b/src/domain/evidence.test.ts new file mode 100644 index 0000000000..03f6786b56 --- /dev/null +++ b/src/domain/evidence.test.ts @@ -0,0 +1,196 @@ +import { fc, it } from "@fast-check/vitest"; +import { describe, expect } from "vitest"; + +import { createAnalysisProfile } from "./analysisProfile.js"; +import type { BinaryTarget } from "./binaryTarget.js"; +import { createEvidence, evidenceSchema, parseEvidence } from "./evidence.js"; +import { createEvidenceBundle } from "./evidenceBundle.js"; + +const TARGET: BinaryTarget = { + path: "/tmp/fixture", + sha256: "a".repeat(64), + kind: "executable", + format: "mach-o", + architecture: "arm64", + availableArchitectures: ["arm64"], +}; +const PROVIDER = { id: "fixture", name: "Fixture provider", version: "1" }; +const PROFILE = createAnalysisProfile(PROVIDER, 1, { loader: "default" }); + +describe("analysis evidence identity", () => { + it("normalizes prototype-named parameter keys", () => { + const evidence = createEvidence(TARGET, PROVIDER, { + operation: "health", + parameters: Object.fromEntries([["__proto__", false]]), + result: true, + }); + expect(parseEvidence(evidence)).toEqual(evidence); + }); + + it.prop([ + fc.dictionary( + fc.string({ minLength: 1, maxLength: 12 }), + fc.oneof(fc.string(), fc.integer(), fc.boolean(), fc.constant(null)), + ), + ])("canonicalizes parameter key order", (parameters) => { + const reversed = Object.fromEntries(Object.entries(parameters).reverse()); + const first = createEvidence(TARGET, PROVIDER, { + operation: "health", + parameters, + result: true, + }); + const second = createEvidence(TARGET, PROVIDER, { + operation: "health", + parameters: reversed, + result: true, + }); + expect(second.evidence_id).toBe(first.evidence_id); + }); + + it.prop([fc.string({ minLength: 1 }), fc.string({ minLength: 1 })])( + "keeps identity path-independent and provider-sensitive", + (firstPath, secondPath) => { + const first = createEvidence( + { ...TARGET, path: `/first/${firstPath}/artifact` }, + PROVIDER, + { operation: "health", parameters: {}, result: true }, + ); + const moved = createEvidence( + { ...TARGET, path: `/second/${secondPath}/artifact` }, + PROVIDER, + { operation: "health", parameters: {}, result: true }, + ); + const changedProvider = createEvidence( + { ...TARGET, path: `/second/${secondPath}/artifact` }, + { ...PROVIDER, id: `${PROVIDER.id}-other` }, + { operation: "health", parameters: {}, result: true }, + ); + expect(moved.evidence_id).toBe(first.evidence_id); + expect(changedProvider.evidence_id).not.toBe(first.evidence_id); + }, + ); + + it("creates deterministic provider-neutral Evidence v2", () => { + const observation = { + operation: "procedure_info", + parameters: { document: null, procedure: "0x1000" }, + result: { name: "main" }, + rawResult: { token: "" }, + } as const; + const evidence = createEvidence(TARGET, PROVIDER, observation); + expect(evidenceSchema.parse(evidence)).toEqual(evidence); + expect(parseEvidence(evidence)).toEqual(evidence); + expect(evidence).toMatchObject({ + schema_version: 2, + provider: PROVIDER, + subject: { digest: { sha256: "a".repeat(64) } }, + confidence: "observed", + authority: "shipped-artifact", + raw_result: { token: "" }, + normalized_result: { name: "main" }, + }); + expect(evidence.evidence_id).toMatch(/^ev_[a-f0-9]{64}$/u); + expect(createEvidence(TARGET, PROVIDER, observation)).toEqual(evidence); + }); + + it("preserves legacy records while binding profiled Evidence to its profile", () => { + const legacy = createEvidence(TARGET, PROVIDER, { + operation: "procedure_info", + parameters: { procedure: "main" }, + result: { name: "main" }, + }); + expect(parseEvidence(legacy)).toEqual(legacy); + + const profiled = createEvidence(TARGET, PROVIDER, { + operation: "procedure_info", + parameters: { procedure: "main" }, + result: { name: "main" }, + analysisProfile: PROFILE, + }); + expect(profiled).toMatchObject({ analysis_profile: PROFILE }); + expect(profiled.evidence_id).not.toBe(legacy.evidence_id); + expect(() => + createEvidence( + TARGET, + { ...PROVIDER, id: "other" }, + { + operation: "procedure_info", + parameters: {}, + result: null, + analysisProfile: PROFILE, + }, + ), + ).toThrow(/profile provider/u); + }); + + it("excludes local paths but includes redacted raw results in identity", () => { + const observation = { + operation: "health", + parameters: {}, + result: true, + rawResult: { pid: 100 }, + } as const; + const first = createEvidence(TARGET, PROVIDER, observation); + const moved = createEvidence( + { ...TARGET, path: "/other/renamed-fixture" }, + PROVIDER, + observation, + ); + expect(moved.evidence_id).toBe(first.evidence_id); + expect( + createEvidence(TARGET, PROVIDER, { + ...observation, + rawResult: { pid: 200 }, + }).evidence_id, + ).not.toBe(first.evidence_id); + }); + + it("rejects semantic tampering and obsolete schema versions", () => { + const evidence = createEvidence(TARGET, PROVIDER, { + operation: "health", + parameters: {}, + result: true, + }); + expect(() => + parseEvidence({ ...evidence, normalized_result: false }), + ).toThrow("semantic identifier"); + expect(() => parseEvidence({ schema_version: 1 })).toThrow( + "Evidence v1 is not accepted. Produce Evidence v2.", + ); + }); +}); + +it("derives byte-stable bundle manifests independent of record order", () => { + const artifactEvidence = createEvidence(TARGET, PROVIDER, { + operation: "health", + parameters: {}, + result: true, + }); + const captureEvidence = createEvidence( + undefined, + { id: "process", name: "Process capture", version: "1" }, + { + predicateType: "rea.process-capture/v1", + operation: "capture_process_scenario", + parameters: {}, + result: { exit: 0 }, + authority: "controlled-replay", + environment: { + id: "linux-x64", + platform: "linux", + architecture: "x64", + isolation: "process", + }, + }, + ); + const forward = createEvidenceBundle([artifactEvidence, captureEvidence]); + const reverse = createEvidenceBundle([captureEvidence, artifactEvidence]); + expect(JSON.stringify(reverse)).toBe(JSON.stringify(forward)); + expect(forward).toMatchObject({ + artifacts: [{ digest: { sha256: TARGET.sha256 }, format: "mach-o" }], + providers: [{ id: "fixture" }, { id: "process" }], + environments: [{ id: "linux-x64" }], + scenarios: [{ evidence_id: captureEvidence.evidence_id }], + captures: [{ evidence_id: captureEvidence.evidence_id }], + }); +}); diff --git a/tests/composition/evidence-investigations/evidenceCompletionLedger.test.ts b/src/domain/evidenceCompletionLedger.test.ts similarity index 98% rename from tests/composition/evidence-investigations/evidenceCompletionLedger.test.ts rename to src/domain/evidenceCompletionLedger.test.ts index cc3ae3a279..8eb2532a35 100644 --- a/tests/composition/evidence-investigations/evidenceCompletionLedger.test.ts +++ b/src/domain/evidenceCompletionLedger.test.ts @@ -4,7 +4,7 @@ import { createEvidenceCompletionLedger, parseEvidenceCompletionLedger, type EvidenceCompletionStatus, -} from "../../../src/domain/evidenceCompletionLedger.js"; +} from "./evidenceCompletionLedger.js"; const evidenceId = (digit: string): string => `ev_${digit.repeat(64)}`; diff --git a/tests/composition/analysis-sessions/functionComparison.test.ts b/src/domain/functionComparison.test.ts similarity index 95% rename from tests/composition/analysis-sessions/functionComparison.test.ts rename to src/domain/functionComparison.test.ts index bad0fedbde..3abb641141 100644 --- a/tests/composition/analysis-sessions/functionComparison.test.ts +++ b/src/domain/functionComparison.test.ts @@ -1,14 +1,14 @@ import { describe, expect, it } from "vitest"; -import { FUNCTION_COMPARISON_EXAMPLE } from "../../../src/contracts/functionComparisonExample.js"; -import { enhancedInputSchemas } from "../../../src/contracts/enhancedInputs.js"; +import { FUNCTION_COMPARISON_EXAMPLE } from "../contracts/functionComparisonExample.js"; +import { enhancedInputSchemas } from "../contracts/enhancedInputs.js"; import { compareFunctions, functionComparisonResultSchema, -} from "../../../src/domain/functionComparison.js"; -import { createEvidence, type Evidence } from "../../../src/domain/evidence.js"; -import { functionDossierSchema } from "../../../src/domain/hopperValues.js"; -import { jsonValueSchema } from "../../../src/domain/jsonValue.js"; +} from "./functionComparison.js"; +import { createEvidence, type Evidence } from "./evidence.js"; +import { functionDossierSchema } from "./hopperValues.js"; +import { jsonValueSchema } from "./jsonValue.js"; const bounded = (items: readonly Item[]) => ({ items, diff --git a/src/domain/hopperStartupFailure.ts b/src/domain/hopperStartupFailure.ts index c0540da3da..646a2a2fdd 100644 --- a/src/domain/hopperStartupFailure.ts +++ b/src/domain/hopperStartupFailure.ts @@ -1,41 +1,8 @@ -export type HopperStartupFailureCode = - | "private_display_unavailable" - | "x11_authorization_failed" - | "unsupported_hopper_build" - | "invalid_launch_command" - | "process_ownership_mismatch" - | "hopper_exited_during_startup" - | "unsupported_demo_dialog" - | "unexpected_display_geometry" - | "x11_input_failed" - | "runtime_dependency_unavailable" - | "x11_socket_directory_unusable"; - export type HopperPrivateDisplayStrategy = | "direct" | "user-mount-namespace" | "unavailable"; -/** Bounded, non-secret facts emitted by the Linux private-display adapter. */ -export interface HopperStartupDiagnostic { - readonly schema_version: 1; - readonly component: "hopper_private_display"; - readonly operation: "probe" | "launch"; - readonly status: "ready" | "error"; - readonly failure_code: HopperStartupFailureCode | null; - readonly reason: string; - readonly socket_directory: "/tmp/.X11-unix"; - readonly socket_directory_mode: string | null; - readonly mount_read_only: boolean | null; - readonly effective_socket_directory_mode: string | null; - readonly effective_mount_read_only: boolean | null; - readonly wsl: boolean; - readonly strategy: HopperPrivateDisplayStrategy; - readonly fallback_reason: string | null; - readonly xvfb_stderr_bytes: number; - readonly xvfb_stderr_truncated: boolean; -} - const failures = [ [ 70, @@ -94,6 +61,50 @@ const failures = [ ], ] as const; +export type HopperStartupFailureCode = (typeof failures)[number][1]; + +interface HopperStartupDiagnosticContext { + readonly schema_version: 1; + readonly component: "hopper_private_display"; + readonly operation: "probe" | "launch"; + readonly reason: string; + readonly socket_directory: "/tmp/.X11-unix"; + readonly socket_directory_mode: string | null; + readonly mount_read_only: boolean | null; + readonly effective_socket_directory_mode: string | null; + readonly effective_mount_read_only: boolean | null; + readonly wsl: boolean; + readonly strategy: HopperPrivateDisplayStrategy; + readonly fallback_reason: string | null; + readonly xvfb_stderr_bytes: number; + readonly xvfb_stderr_truncated: boolean; +} + +/** Bounded, non-secret facts emitted by the Linux private-display adapter. */ +export type HopperStartupDiagnostic = HopperStartupDiagnosticContext & + ( + | { + readonly status: "ready"; + readonly failure_code: null; + } + | { + readonly status: "error"; + readonly failure_code: HopperStartupFailureCode; + } + ); + +/** A parsed Linux private-display diagnostic that reports startup failure. */ +export type HopperStartupFailureDiagnostic = Extract< + HopperStartupDiagnostic, + { readonly status: "error" } +>; + +/** A parsed Linux private-display diagnostic that reports readiness. */ +export type HopperStartupReadyDiagnostic = Extract< + HopperStartupDiagnostic, + { readonly status: "ready" } +>; + const HOPPER_STARTUP_FAILURES = new Map< number, { readonly code: HopperStartupFailureCode; readonly message: string } diff --git a/tests/composition/analysis-sessions/inputIssueProjection.test.ts b/src/domain/inputIssueProjection.test.ts similarity index 86% rename from tests/composition/analysis-sessions/inputIssueProjection.test.ts rename to src/domain/inputIssueProjection.test.ts index 9bb1cdf993..1b2e48d162 100644 --- a/tests/composition/analysis-sessions/inputIssueProjection.test.ts +++ b/src/domain/inputIssueProjection.test.ts @@ -1,8 +1,8 @@ import { describe, expect, it } from "vitest"; import { z } from "zod"; -import { artifactExtractionInputSchema } from "../../../src/contracts/artifactToolContracts.js"; -import { projectInputIssues } from "../../../src/domain/inputIssueProjection.js"; +import { artifactExtractionInputSchema } from "../contracts/artifactToolContracts.js"; +import { projectInputIssues } from "./inputIssueProjection.js"; describe("input issue projection", () => { it("preserves schema-authored custom correction guidance", () => { diff --git a/src/domain/javascriptApplicationEvidenceSchemas.ts b/src/domain/javascriptApplicationEvidenceSchemas.ts index 2fbe22f2d2..2ba526615f 100644 --- a/src/domain/javascriptApplicationEvidenceSchemas.ts +++ b/src/domain/javascriptApplicationEvidenceSchemas.ts @@ -192,47 +192,70 @@ const applicationLimitSchema = z.strictObject({ }); /** Bounded collection coverage without treating omission as absence. */ -export const applicationCoverageSchema = z - .strictObject({ - status: z.enum(["complete", "partial", "unknown", "unavailable"]), - truncated: z.boolean(), - omitted_count: z - .number() - .int() - .min(0) - .max(Number.MAX_SAFE_INTEGER) - .nullable(), - limits: z.array(applicationLimitSchema).max(32), - }) - .superRefine((coverage, context) => { - if ( - coverage.status === "complete" && - (coverage.truncated || coverage.omitted_count !== 0) - ) - context.addIssue({ - code: "custom", - message: "Complete coverage cannot be truncated or omit items", - }); - if ( - coverage.truncated && - (coverage.status !== "partial" || - coverage.limits.length === 0 || - coverage.omitted_count === 0) - ) - context.addIssue({ - code: "custom", - message: - "Truncated coverage must be partial, name a limit, and not claim zero omissions", - }); - if ( - ["unknown", "unavailable"].includes(coverage.status) && - (coverage.truncated || coverage.omitted_count !== null) - ) - context.addIssue({ - code: "custom", - message: - "Unknown or unavailable coverage cannot invent truncation counts", - }); +const coverageLimitsSchema = z.array(applicationLimitSchema).max(32); +const omittedCountSchema = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER); + +export const applicationCoverageSchema = z.union([ + z.strictObject({ + status: z.literal("complete"), + truncated: z.literal(false), + omitted_count: z.literal(0), + limits: coverageLimitsSchema, + }), + z.strictObject({ + status: z.literal("partial"), + truncated: z.literal(false), + omitted_count: omittedCountSchema.nullable(), + limits: coverageLimitsSchema, + }), + z.strictObject({ + status: z.literal("partial"), + truncated: z.literal(true), + omitted_count: z.union([omittedCountSchema.positive(), z.null()]), + limits: z.array(applicationLimitSchema).min(1).max(32), + }), + z.strictObject({ + status: z.enum(["unknown", "unavailable"]), + truncated: z.literal(false), + omitted_count: z.null(), + limits: coverageLimitsSchema, + }), +]); +export type ApplicationCoverage = z.infer; + +/** Construct complete bounded coverage under the stated configured limits. */ +export const completeApplicationCoverage = ( + limits: ApplicationCoverage["limits"] = [], +): ApplicationCoverage => + applicationCoverageSchema.parse({ + status: "complete", + truncated: false, + omitted_count: 0, + limits, + }); + +/** Construct partial non-truncated coverage without inventing omissions. */ +export const partialApplicationCoverage = ( + limits: ApplicationCoverage["limits"], + omittedCount: number | null, +): ApplicationCoverage => + applicationCoverageSchema.parse({ + status: "partial", + truncated: false, + omitted_count: omittedCount, + limits, + }); + +/** Construct limit-truncated coverage with a named bound. */ +export const truncatedApplicationCoverage = ( + limits: ApplicationCoverage["limits"], + omittedCount: number | null, +): ApplicationCoverage => + applicationCoverageSchema.parse({ + status: "partial", + truncated: true, + omitted_count: omittedCount, + limits, }); const applicationGraphEvidenceBaseSchema = z.strictObject({ diff --git a/tests/composition/javascript-applications/javascriptApplicationGraph.01-defines-the-complete-provider-neutral.test.ts b/src/domain/javascriptApplicationGraph.01-defines-the-complete-provider-neutral.test.ts similarity index 94% rename from tests/composition/javascript-applications/javascriptApplicationGraph.01-defines-the-complete-provider-neutral.test.ts rename to src/domain/javascriptApplicationGraph.01-defines-the-complete-provider-neutral.test.ts index bdbf8b93b3..df5f97913d 100644 --- a/tests/composition/javascript-applications/javascriptApplicationGraph.01-defines-the-complete-provider-neutral.test.ts +++ b/src/domain/javascriptApplicationGraph.01-defines-the-complete-provider-neutral.test.ts @@ -8,12 +8,12 @@ import { serializeJavaScriptApplicationGraph, type ApplicationNode, type JavaScriptApplicationGraph, -} from "../../../src/domain/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.js"; import { JAVASCRIPT_APPLICATION_NODE_KINDS, JAVASCRIPT_APPLICATION_RELATIONS, -} from "../../../src/domain/javascriptApplicationGraphSchemas.js"; -import { buildSyntheticJavaScriptApplicationGraph } from "../../fixtures/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraphSchemas.js"; +import { buildSyntheticJavaScriptApplicationGraph } from "./javascriptApplicationGraph.fixture.js"; const nodeByLabel = ( graph: JavaScriptApplicationGraph, diff --git a/tests/composition/javascript-applications/javascriptApplicationGraph.02-keeps-static-observations-static-inferences.test.ts b/src/domain/javascriptApplicationGraph.02-keeps-static-observations-static-inferences.test.ts similarity index 97% rename from tests/composition/javascript-applications/javascriptApplicationGraph.02-keeps-static-observations-static-inferences.test.ts rename to src/domain/javascriptApplicationGraph.02-keeps-static-observations-static-inferences.test.ts index 556b9c5d01..e0ed6d9de2 100644 --- a/tests/composition/javascript-applications/javascriptApplicationGraph.02-keeps-static-observations-static-inferences.test.ts +++ b/src/domain/javascriptApplicationGraph.02-keeps-static-observations-static-inferences.test.ts @@ -6,12 +6,12 @@ import { type ApplicationGraphEvidence, type ApplicationNode, type JavaScriptApplicationGraph, -} from "../../../src/domain/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.js"; import { APPLICATION_GRAPH_DIGESTS, artifactEvidence, buildSyntheticJavaScriptApplicationGraph, -} from "../../fixtures/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.fixture.js"; const completeCoverage = { status: "complete" as const, diff --git a/tests/composition/javascript-applications/javascriptApplicationGraph.03-normalizes-structural-identity-and-evidence.test.ts b/src/domain/javascriptApplicationGraph.03-normalizes-structural-identity-and-evidence.test.ts similarity index 97% rename from tests/composition/javascript-applications/javascriptApplicationGraph.03-normalizes-structural-identity-and-evidence.test.ts rename to src/domain/javascriptApplicationGraph.03-normalizes-structural-identity-and-evidence.test.ts index 8d0a292dd4..f4d346463a 100644 --- a/tests/composition/javascript-applications/javascriptApplicationGraph.03-normalizes-structural-identity-and-evidence.test.ts +++ b/src/domain/javascriptApplicationGraph.03-normalizes-structural-identity-and-evidence.test.ts @@ -5,14 +5,14 @@ import { createJavaScriptApplicationNode, type ApplicationNode, type JavaScriptApplicationGraph, -} from "../../../src/domain/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.js"; import { APPLICATION_GRAPH_DIGESTS, artifactEvidence, buildSyntheticJavaScriptApplicationGraph, inferredArtifactEvidence, runtimeEvidence, -} from "../../fixtures/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.fixture.js"; const completeCoverage = { status: "complete" as const, diff --git a/tests/composition/javascript-applications/javascriptApplicationGraph.04-admits-source-map-and-observation.test.ts b/src/domain/javascriptApplicationGraph.04-admits-source-map-and-observation.test.ts similarity index 97% rename from tests/composition/javascript-applications/javascriptApplicationGraph.04-admits-source-map-and-observation.test.ts rename to src/domain/javascriptApplicationGraph.04-admits-source-map-and-observation.test.ts index 2fc2df81e9..53c908baeb 100644 --- a/tests/composition/javascript-applications/javascriptApplicationGraph.04-admits-source-map-and-observation.test.ts +++ b/src/domain/javascriptApplicationGraph.04-admits-source-map-and-observation.test.ts @@ -6,12 +6,12 @@ import { parseJavaScriptApplicationGraph, type ApplicationNode, type JavaScriptApplicationGraph, -} from "../../../src/domain/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.js"; import { APPLICATION_GRAPH_DIGESTS, artifactEvidence, buildSyntheticJavaScriptApplicationGraph, -} from "../../fixtures/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.fixture.js"; const completeCoverage = { status: "complete" as const, diff --git a/tests/composition/javascript-applications/javascriptApplicationGraph.05-rejects-duplicate-nodes-missing-roots.test.ts b/src/domain/javascriptApplicationGraph.05-rejects-duplicate-nodes-missing-roots.test.ts similarity index 97% rename from tests/composition/javascript-applications/javascriptApplicationGraph.05-rejects-duplicate-nodes-missing-roots.test.ts rename to src/domain/javascriptApplicationGraph.05-rejects-duplicate-nodes-missing-roots.test.ts index 6eddca17a8..69f90732f6 100644 --- a/tests/composition/javascript-applications/javascriptApplicationGraph.05-rejects-duplicate-nodes-missing-roots.test.ts +++ b/src/domain/javascriptApplicationGraph.05-rejects-duplicate-nodes-missing-roots.test.ts @@ -6,13 +6,13 @@ import { createJavaScriptApplicationNode, type ApplicationNode, type JavaScriptApplicationGraph, -} from "../../../src/domain/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.js"; import { APPLICATION_GRAPH_DIGESTS, artifactEvidence, buildSyntheticJavaScriptApplicationGraph, inferredArtifactEvidence, -} from "../../fixtures/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.fixture.js"; const completeCoverage = { status: "complete" as const, diff --git a/tests/composition/javascript-applications/javascriptApplicationGraph.06-requires-every-identity-strategy-to.test.ts b/src/domain/javascriptApplicationGraph.06-requires-every-identity-strategy-to.test.ts similarity index 98% rename from tests/composition/javascript-applications/javascriptApplicationGraph.06-requires-every-identity-strategy-to.test.ts rename to src/domain/javascriptApplicationGraph.06-requires-every-identity-strategy-to.test.ts index d117c9e4f1..9519269513 100644 --- a/tests/composition/javascript-applications/javascriptApplicationGraph.06-requires-every-identity-strategy-to.test.ts +++ b/src/domain/javascriptApplicationGraph.06-requires-every-identity-strategy-to.test.ts @@ -6,13 +6,13 @@ import { type ApplicationGraphEvidence, type ApplicationNode, type JavaScriptApplicationGraph, -} from "../../../src/domain/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.js"; import { APPLICATION_GRAPH_DIGESTS, artifactEvidence, inferredArtifactEvidence, runtimeEvidence, -} from "../../fixtures/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.fixture.js"; const completeCoverage = { status: "complete" as const, diff --git a/tests/composition/javascript-applications/javascriptApplicationGraph.07-rejects-false-truncation-claims-and.test.ts b/src/domain/javascriptApplicationGraph.07-rejects-false-truncation-claims-and.test.ts similarity index 90% rename from tests/composition/javascript-applications/javascriptApplicationGraph.07-rejects-false-truncation-claims-and.test.ts rename to src/domain/javascriptApplicationGraph.07-rejects-false-truncation-claims-and.test.ts index 35dbe65019..81823cc670 100644 --- a/tests/composition/javascript-applications/javascriptApplicationGraph.07-rejects-false-truncation-claims-and.test.ts +++ b/src/domain/javascriptApplicationGraph.07-rejects-false-truncation-claims-and.test.ts @@ -5,11 +5,11 @@ import { createJavaScriptApplicationNode, type ApplicationGraphEvidence, type ApplicationNode, -} from "../../../src/domain/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.js"; import { APPLICATION_GRAPH_DIGESTS, artifactEvidence, -} from "../../fixtures/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.fixture.js"; const contentNode = ( evidence: ApplicationGraphEvidence, @@ -37,9 +37,7 @@ describe("JavaScript Application Graph", () => { omitted_count: 0, limits: [], }; - expect(() => contentNode(truncated)).toThrow( - /must be partial, name a limit, and not claim zero omissions/u, - ); + expect(() => contentNode(truncated)).toThrow(/omitted_count[\s\S]*limits/u); const nonComplete = artifactEvidence( APPLICATION_GRAPH_DIGESTS.asar, diff --git a/tests/fixtures/javascriptApplicationGraph.ts b/src/domain/javascriptApplicationGraph.fixture.ts similarity index 98% rename from tests/fixtures/javascriptApplicationGraph.ts rename to src/domain/javascriptApplicationGraph.fixture.ts index 517885156d..9d07b227f8 100644 --- a/tests/fixtures/javascriptApplicationGraph.ts +++ b/src/domain/javascriptApplicationGraph.fixture.ts @@ -4,7 +4,7 @@ import { createJavaScriptApplicationNode, type ApplicationGraphEvidence, type JavaScriptApplicationGraph, -} from "../../src/domain/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.js"; export const APPLICATION_GRAPH_DIGESTS = { package: "1".repeat(64), @@ -14,11 +14,11 @@ export const APPLICATION_GRAPH_DIGESTS = { } as const; const completeCoverage = { - status: "complete" as const, + status: "complete", truncated: false, omitted_count: 0, limits: [], -}; +} satisfies ApplicationGraphEvidence["coverage"]; const extractor = (operation: string) => ({ name: "rea-test-fixture", diff --git a/tests/composition/javascript-applications/javascriptExportInstrumentation.test.ts b/src/domain/javascriptExportInstrumentation.test.ts similarity index 96% rename from tests/composition/javascript-applications/javascriptExportInstrumentation.test.ts rename to src/domain/javascriptExportInstrumentation.test.ts index e5b24b29b1..fc6b712e5c 100644 --- a/tests/composition/javascript-applications/javascriptExportInstrumentation.test.ts +++ b/src/domain/javascriptExportInstrumentation.test.ts @@ -2,7 +2,7 @@ import { createHash } from "node:crypto"; import { describe, expect, it } from "vitest"; -import { instrumentJavaScriptExport } from "../../../src/domain/javascriptExportInstrumentation.js"; +import { instrumentJavaScriptExport } from "./javascriptExportInstrumentation.js"; const encode = (value: string): Uint8Array => new TextEncoder().encode(value); const sha256 = (value: Uint8Array): string => diff --git a/src/domain/javascriptExportShapeComparisonSchemas.test.ts b/src/domain/javascriptExportShapeComparisonSchemas.test.ts new file mode 100644 index 0000000000..3ab413e858 --- /dev/null +++ b/src/domain/javascriptExportShapeComparisonSchemas.test.ts @@ -0,0 +1,53 @@ +import { expect, it } from "vitest"; + +import { projectedExportReturnShapesSchema } from "./javascriptExportShapeComparisonSchemas.js"; + +const projectionWithField = (field: unknown) => ({ + semantic_role: "export-return-shapes", + module_path: "index.js", + exported_name: "render", + callable_id: "callable:render", + callable_kind: "function", + static_return_shapes: [ + { + source_range: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 10 }, + }, + value_status: "unknown", + fields: [field], + property_coverage: [], + }, + ], + return_shape_coverage: { + status: "partial", + retained_return_sites: 1, + omitted_return_sites: null, + omitted_fields: 0, + omitted_property_coverage: 0, + projection_complete: true, + }, +}); + +it("parses projected fields into literal, union, or unknown values", () => { + expect( + projectedExportReturnShapesSchema.safeParse( + projectionWithField({ + path: "/kind", + state: "unknown", + value: "invented", + reason: "Dynamic property", + }), + ).success, + ).toBe(false); + expect( + projectedExportReturnShapesSchema.safeParse( + projectionWithField({ + path: "/kind", + state: "union", + value: ["success", "failure"], + reason: null, + }), + ).success, + ).toBe(true); +}); diff --git a/src/domain/javascriptExportShapeComparisonSchemas.ts b/src/domain/javascriptExportShapeComparisonSchemas.ts index 319735f507..716f8489aa 100644 --- a/src/domain/javascriptExportShapeComparisonSchemas.ts +++ b/src/domain/javascriptExportShapeComparisonSchemas.ts @@ -85,48 +85,44 @@ export const compareJavaScriptExportShapesInputSchema = z }); }); -const projectedReturnFieldSchema = z - .strictObject({ - path: jsonPointerSchema, - state: z.enum(["literal", "union", "unknown"]), - value: z.union([ - semanticPrimitiveSchema, - z.array(semanticPrimitiveSchema).min(1).max(32), - ]), - reason: boundedTextSchema.nullable(), - }) - .superRefine((field, context) => { - if (field.state === "union" && !Array.isArray(field.value)) - context.addIssue({ - code: "custom", - path: ["value"], - message: "Union return fields require a primitive value array", - }); - if (field.state !== "union" && Array.isArray(field.value)) - context.addIssue({ - code: "custom", - path: ["value"], - message: "Only union return fields may contain a value array", - }); - if (field.state === "unknown" && field.reason === null) - context.addIssue({ - code: "custom", - path: ["reason"], - message: "Unknown return fields require a reason", - }); - if (field.state !== "unknown" && field.reason !== null) - context.addIssue({ - code: "custom", - path: ["reason"], - message: "Known return fields cannot carry an unknown reason", - }); - }); +const projectedReturnFieldShape = { path: jsonPointerSchema }; +const projectedReturnFieldSchema = z.discriminatedUnion("state", [ + z.strictObject({ + ...projectedReturnFieldShape, + state: z.literal("literal"), + value: semanticPrimitiveSchema, + reason: z.null(), + }), + z.strictObject({ + ...projectedReturnFieldShape, + state: z.literal("union"), + value: z.array(semanticPrimitiveSchema).min(1).max(32), + reason: z.null(), + }), + z.strictObject({ + ...projectedReturnFieldShape, + state: z.literal("unknown"), + value: z.null(), + reason: boundedTextSchema, + }), +]); +export type ProjectedReturnField = z.infer; -const projectedPropertyCoverageSchema = z.strictObject({ - path: jsonPointerSchema, - status: z.enum(["complete", "partial"]), - omitted: z.number().int().min(0).nullable(), -}); +const projectedPropertyCoverageSchema = z.discriminatedUnion("status", [ + z.strictObject({ + path: jsonPointerSchema, + status: z.literal("complete"), + omitted: z.literal(0), + }), + z.strictObject({ + path: jsonPointerSchema, + status: z.literal("partial"), + omitted: z.union([z.number().int().positive(), z.null()]), + }), +]); +export type ProjectedPropertyCoverage = z.infer< + typeof projectedPropertyCoverageSchema +>; const projectedReturnShapeSchema = z .strictObject({ @@ -199,16 +195,31 @@ const exportCandidateSchema = z.strictObject({ matches_requested_export: z.boolean(), }); -const selectorResultSchema = z.strictObject({ +const selectorResultShape = { evidence_id: evidenceIdSchema, graph_id: graphIdSchema, requested_module_path: selectorTextSchema, requested_export_name: selectorTextSchema, - status: z.enum(["selected", "missing", "ambiguous", "unavailable"]), - selected_node_id: nodeIdSchema.nullable(), candidates: z.array(exportCandidateSchema).max(1_000), omitted_candidates: z.number().int().min(0), -}); +}; +const selectorResultSchema = z.union([ + z.strictObject({ + ...selectorResultShape, + status: z.literal("selected"), + selected_node_id: nodeIdSchema, + }), + z.strictObject({ + ...selectorResultShape, + status: z.enum(["missing", "ambiguous"]), + selected_node_id: z.null(), + }), + z.strictObject({ + ...selectorResultShape, + status: z.literal("unavailable"), + selected_node_id: nodeIdSchema.nullable(), + }), +]); const valueAvailabilitySchema = z.discriminatedUnion("availability", [ z.strictObject({ availability: z.literal("absent") }), diff --git a/src/domain/javascriptExportShapeSelection.ts b/src/domain/javascriptExportShapeSelection.ts index 256b56d783..d7538234f7 100644 --- a/src/domain/javascriptExportShapeSelection.ts +++ b/src/domain/javascriptExportShapeSelection.ts @@ -11,6 +11,17 @@ import { type Shape = ProjectedExportReturnShapes["static_return_shapes"][number]; type SelectorResult = JavaScriptExportShapeComparisonResult["left"]; +type SelectorBase = Omit; +type ReturnShapeSelection = + | { + readonly projection: ProjectedExportReturnShapes; + readonly observationComplete: boolean; + } + | { + readonly projection: null; + readonly observationComplete: false; + readonly reason: string; + }; /** One authenticated graph and exact export selector. */ export interface JavaScriptExportShapeSideInput { @@ -28,12 +39,19 @@ interface ExportCandidate { } /** Exact selector result plus any admitted static return-shape projection. */ -export interface SelectedJavaScriptExport { - readonly selection: SelectorResult; - readonly projection: ProjectedExportReturnShapes | null; - readonly observationComplete: boolean; - readonly limitations: readonly string[]; -} +export type SelectedJavaScriptExport = + | { + readonly selection: Extract; + readonly projection: ProjectedExportReturnShapes; + readonly observationComplete: boolean; + readonly limitations: readonly []; + } + | { + readonly selection: Exclude; + readonly projection: null; + readonly observationComplete: false; + readonly limitations: readonly string[]; + }; /** Caller-retained return shapes and their exact caller-limit omission count. */ export interface RetainedJavaScriptExportShapes { @@ -64,28 +82,40 @@ export const selectJavaScriptExport = ( const retainedCandidates = diagnosticPool.slice(0, maxCandidates); const base = selectorBase(side, diagnosticPool, retainedCandidates); if (exact.length === 0) - return unresolvedSelection(base, "missing", null, [ - `No exact export binding matched ${side.modulePath}:${side.exportName}.`, - ]); + return unresolvedSelection( + base, + { status: "missing", selected_node_id: null }, + [ + `No exact export binding matched ${side.modulePath}:${side.exportName}.`, + ], + ); if (exact.length > 1) - return unresolvedSelection(base, "ambiguous", null, [ - `Multiple exact export bindings matched ${side.modulePath}:${side.exportName}; none was selected.`, - ]); + return unresolvedSelection( + base, + { status: "ambiguous", selected_node_id: null }, + [ + `Multiple exact export bindings matched ${side.modulePath}:${side.exportName}; none was selected.`, + ], + ); const selected = exact[0]; if (selected === undefined || !selected.trusted) return unresolvedSelection( base, - "unavailable", - selected?.node.node_id ?? null, + { + status: "unavailable", + selected_node_id: selected?.node.node_id ?? null, + }, [ "The exact export binding lacks the expected static-analysis authority.", ], ); const returnShape = returnShapeFor(selected.node, side); if (returnShape.projection === null) - return unresolvedSelection(base, "unavailable", selected.node.node_id, [ - returnShape.reason, - ]); + return unresolvedSelection( + base, + { status: "unavailable", selected_node_id: selected.node.node_id }, + [returnShape.reason], + ); return { selection: { ...base, @@ -112,7 +142,7 @@ const selectorBase = ( side: JavaScriptExportShapeSideInput, candidates: readonly ExportCandidate[], retained: readonly ExportCandidate[], -): Omit => ({ +): SelectorBase => ({ evidence_id: side.evidenceId, graph_id: side.graph.graph_id, requested_module_path: side.modulePath, @@ -128,12 +158,19 @@ const selectorBase = ( }); const unresolvedSelection = ( - base: Omit, - status: "missing" | "ambiguous" | "unavailable", - nodeId: string | null, + base: SelectorBase, + resolution: + | { + readonly status: "missing" | "ambiguous"; + readonly selected_node_id: null; + } + | { + readonly status: "unavailable"; + readonly selected_node_id: string | null; + }, limitations: readonly string[], ): SelectedJavaScriptExport => ({ - selection: { ...base, status, selected_node_id: nodeId }, + selection: { ...base, ...resolution }, projection: null, observationComplete: false, limitations, @@ -176,11 +213,7 @@ const candidateKey = (candidate: ExportCandidate): string => const returnShapeFor = ( node: ApplicationNode, side: JavaScriptExportShapeSideInput, -): { - readonly projection: ProjectedExportReturnShapes | null; - readonly observationComplete: boolean; - readonly reason: string; -} => { +): ReturnShapeSelection => { const roleObservations = node.observations.filter( ({ properties }) => properties.semantic_role === "export-return-shapes", ); @@ -223,11 +256,12 @@ const returnShapeFor = ( observationComplete: observation.evidence.coverage.status === "complete" && !observation.evidence.coverage.truncated, - reason: "", }; }; -const unavailableReturnShape = (reason: string) => ({ +const unavailableReturnShape = ( + reason: string, +): Extract => ({ projection: null, observationComplete: false, reason, diff --git a/src/domain/javascriptFeatureTrace.ts b/src/domain/javascriptFeatureTrace.ts index 33907ba4c0..18794e6631 100644 --- a/src/domain/javascriptFeatureTrace.ts +++ b/src/domain/javascriptFeatureTrace.ts @@ -206,12 +206,7 @@ const traceGraphCoverage = ( }; return source.coverage.status === "complete" ? { status: "complete", truncated: false, omitted_count: 0, limits: [] } - : { - status: source.coverage.status, - truncated: source.coverage.truncated, - omitted_count: source.coverage.omitted_count, - limits: source.coverage.limits, - }; + : source.coverage; }; const terminalPaths = ( diff --git a/src/domain/javascriptRuntimeReconciliationMatching.ts b/src/domain/javascriptRuntimeReconciliationMatching.ts index f3bfbddb54..908a0f0a69 100644 --- a/src/domain/javascriptRuntimeReconciliationMatching.ts +++ b/src/domain/javascriptRuntimeReconciliationMatching.ts @@ -261,10 +261,12 @@ const matched = ( const unresolved = ( entity: RuntimeReconciliationEntity, - input: Pick< - ItemInput, - "status" | "basis" | "confidence" | "reason" | "candidates" - >, + input: Pick & { + readonly status: Exclude< + JavaScriptRuntimeReconciliationItem["status"], + "matched" + >; + }, ): EvaluatedMatch => ({ item: createItem(entity, { layer: null, @@ -278,28 +280,49 @@ const unresolved = ( edge: null, }); -interface ItemInput { - readonly layer: ParsedStaticLayer | null; - readonly staticNodeId: string | null; - readonly status: JavaScriptRuntimeReconciliationItem["status"]; +type ItemInput = { readonly basis: JavaScriptRuntimeReconciliationItem["basis"]; readonly confidence: JavaScriptRuntimeReconciliationItem["confidence"]; readonly reason: JavaScriptRuntimeReconciliationItem["reason"]; readonly candidates: readonly StaticRuntimeCandidate[]; -} +} & ( + | { + readonly layer: ParsedStaticLayer; + readonly staticNodeId: string; + readonly status: "matched"; + } + | { + readonly layer: null; + readonly staticNodeId: null; + readonly status: Exclude< + JavaScriptRuntimeReconciliationItem["status"], + "matched" + >; + } +); const createItem = ( entity: RuntimeReconciliationEntity, input: ItemInput, ): JavaScriptRuntimeReconciliationItem => { const candidateReferences = uniqueCandidateReferences(input.candidates); + const staticMatch = + input.status === "matched" + ? { + static_layer_id: input.layer.layerId, + static_node_id: input.staticNodeId, + status: input.status, + } + : { + static_layer_id: null, + static_node_id: null, + status: input.status, + }; const semantic = { entity_kind: entity.kind, runtime_evidence_id: entity.capture.evidence.evidence_id, runtime_node_id: entity.node.node_id, - static_layer_id: input.layer?.layerId ?? null, - static_node_id: input.staticNodeId, - status: input.status, + ...staticMatch, basis: input.basis, confidence: input.confidence, reason: input.reason, diff --git a/src/domain/javascriptRuntimeReconciliationSchemas.ts b/src/domain/javascriptRuntimeReconciliationSchemas.ts index 824e10b65d..05f603b1ec 100644 --- a/src/domain/javascriptRuntimeReconciliationSchemas.ts +++ b/src/domain/javascriptRuntimeReconciliationSchemas.ts @@ -193,17 +193,11 @@ const reconciliationReasonSchema = z.enum([ "reconciliation-limit-reached", ]); -const reconciliationItemSchema = z.strictObject({ +const reconciliationItemShape = { reconciliation_id: z.string().regex(/^jrr_item_[a-f0-9]{64}$/u), entity_kind: z.enum(["target", "frame", "script", "worker"]), runtime_evidence_id: evidenceIdSchema, runtime_node_id: nodeIdSchema, - static_layer_id: z - .string() - .regex(/^jrl_[a-f0-9]{64}$/u) - .nullable(), - static_node_id: nodeIdSchema.nullable(), - status: z.enum(["matched", "ambiguous", "unmatched", "unknown"]), basis: z.enum([ "content-and-location", "content-sha256", @@ -224,7 +218,21 @@ const reconciliationItemSchema = z.strictObject({ }), ) .max(1_000), -}); +}; +const reconciliationItemSchema = z.union([ + z.strictObject({ + ...reconciliationItemShape, + static_layer_id: z.string().regex(/^jrl_[a-f0-9]{64}$/u), + static_node_id: nodeIdSchema, + status: z.literal("matched"), + }), + z.strictObject({ + ...reconciliationItemShape, + static_layer_id: z.null(), + static_node_id: z.null(), + status: z.enum(["ambiguous", "unmatched", "unknown"]), + }), +]); const staticLoadStateSchema = z.strictObject({ static_layer_id: z.string().regex(/^jrl_[a-f0-9]{64}$/u), diff --git a/tests/composition/javascript-applications/javascriptSemanticAnalysis.calls.test.ts b/src/domain/javascriptSemanticAnalysis.calls.test.ts similarity index 96% rename from tests/composition/javascript-applications/javascriptSemanticAnalysis.calls.test.ts rename to src/domain/javascriptSemanticAnalysis.calls.test.ts index 41d7982dba..f536f6a84c 100644 --- a/tests/composition/javascript-applications/javascriptSemanticAnalysis.calls.test.ts +++ b/src/domain/javascriptSemanticAnalysis.calls.test.ts @@ -1,12 +1,12 @@ import { it } from "@fast-check/vitest"; import { describe, expect } from "vitest"; -import { analyzeJavaScriptSemantics } from "../../../src/domain/javascriptSemanticAnalysis.js"; -import { semanticBinding } from "../../../src/domain/javascriptSemanticIr.js"; +import { analyzeJavaScriptSemantics } from "./javascriptSemanticAnalysis.js"; +import { semanticBinding } from "./javascriptSemanticIr.js"; import { onlyCallable, topLevelBinding, -} from "./javascriptSemanticAnalysis.support.js"; +} from "./javascriptSemanticAnalysis.fixture.js"; describe("JavaScript semantic analysis: calls 1", () => { it("links exact local calls to parameters, returns, and closure captures", () => { diff --git a/tests/composition/javascript-applications/javascriptSemanticAnalysis.dataflow.test.ts b/src/domain/javascriptSemanticAnalysis.dataflow.test.ts similarity index 98% rename from tests/composition/javascript-applications/javascriptSemanticAnalysis.dataflow.test.ts rename to src/domain/javascriptSemanticAnalysis.dataflow.test.ts index 59ee275b50..e201c70626 100644 --- a/tests/composition/javascript-applications/javascriptSemanticAnalysis.dataflow.test.ts +++ b/src/domain/javascriptSemanticAnalysis.dataflow.test.ts @@ -1,11 +1,11 @@ import { it } from "@fast-check/vitest"; import { describe, expect } from "vitest"; -import { analyzeJavaScriptSemantics } from "../../../src/domain/javascriptSemanticAnalysis.js"; +import { analyzeJavaScriptSemantics } from "./javascriptSemanticAnalysis.js"; import { onlyCallable, topLevelBinding, -} from "./javascriptSemanticAnalysis.support.js"; +} from "./javascriptSemanticAnalysis.fixture.js"; describe("JavaScript semantic analysis: dataflow 1", () => { it("recovers static object reads, writes, spreads, and destructuring", () => { diff --git a/tests/composition/javascript-applications/javascriptSemanticAnalysis.support.ts b/src/domain/javascriptSemanticAnalysis.fixture.ts similarity index 97% rename from tests/composition/javascript-applications/javascriptSemanticAnalysis.support.ts rename to src/domain/javascriptSemanticAnalysis.fixture.ts index d9bfc1b50a..4d58866b61 100644 --- a/tests/composition/javascript-applications/javascriptSemanticAnalysis.support.ts +++ b/src/domain/javascriptSemanticAnalysis.fixture.ts @@ -3,7 +3,7 @@ import { expect } from "vitest"; import type { JavaScriptSemanticBinding, JavaScriptSemanticIr, -} from "../../../src/domain/javascriptSemanticIr.js"; +} from "./javascriptSemanticIr.js"; export const programScope = (ir: JavaScriptSemanticIr) => { const scope = ir.scopes.find(({ kind }) => kind === "program"); diff --git a/tests/composition/javascript-applications/javascriptSemanticAnalysis.native_bindings.test.ts b/src/domain/javascriptSemanticAnalysis.native_bindings.test.ts similarity index 98% rename from tests/composition/javascript-applications/javascriptSemanticAnalysis.native_bindings.test.ts rename to src/domain/javascriptSemanticAnalysis.native_bindings.test.ts index 3ddaf81be4..1aa89fe027 100644 --- a/tests/composition/javascript-applications/javascriptSemanticAnalysis.native_bindings.test.ts +++ b/src/domain/javascriptSemanticAnalysis.native_bindings.test.ts @@ -1,7 +1,7 @@ import { it } from "@fast-check/vitest"; import { describe, expect } from "vitest"; -import { analyzeJavaScriptSemantics } from "../../../src/domain/javascriptSemanticAnalysis.js"; +import { analyzeJavaScriptSemantics } from "./javascriptSemanticAnalysis.js"; describe("JavaScript semantic analysis: native bindings 1", () => { it("recovers child-process argv, env, stdio, listeners, and signals", () => { diff --git a/tests/composition/javascript-applications/javascriptSemanticAnalysis.rejection.test.ts b/src/domain/javascriptSemanticAnalysis.rejection.test.ts similarity index 96% rename from tests/composition/javascript-applications/javascriptSemanticAnalysis.rejection.test.ts rename to src/domain/javascriptSemanticAnalysis.rejection.test.ts index 1c5d80b58b..e86e589615 100644 --- a/tests/composition/javascript-applications/javascriptSemanticAnalysis.rejection.test.ts +++ b/src/domain/javascriptSemanticAnalysis.rejection.test.ts @@ -1,11 +1,11 @@ import { fc, it } from "@fast-check/vitest"; import { describe, expect } from "vitest"; -import { analyzeJavaScriptSemantics } from "../../../src/domain/javascriptSemanticAnalysis.js"; +import { analyzeJavaScriptSemantics } from "./javascriptSemanticAnalysis.js"; import { onlyCallable, topLevelBinding, -} from "./javascriptSemanticAnalysis.support.js"; +} from "./javascriptSemanticAnalysis.fixture.js"; describe("JavaScript semantic analysis: rejection 1", () => { it("reports reference, module-link, depth, and object-property limits", () => { diff --git a/tests/composition/javascript-applications/javascriptSemanticAnalysis.runtime_boundaries.test.ts b/src/domain/javascriptSemanticAnalysis.runtime_boundaries.test.ts similarity index 97% rename from tests/composition/javascript-applications/javascriptSemanticAnalysis.runtime_boundaries.test.ts rename to src/domain/javascriptSemanticAnalysis.runtime_boundaries.test.ts index 1f349e200b..9ba3e5df09 100644 --- a/tests/composition/javascript-applications/javascriptSemanticAnalysis.runtime_boundaries.test.ts +++ b/src/domain/javascriptSemanticAnalysis.runtime_boundaries.test.ts @@ -1,7 +1,7 @@ import { it } from "@fast-check/vitest"; import { describe, expect } from "vitest"; -import { analyzeJavaScriptSemantics } from "../../../src/domain/javascriptSemanticAnalysis.js"; +import { analyzeJavaScriptSemantics } from "./javascriptSemanticAnalysis.js"; describe("JavaScript semantic analysis: runtime boundaries 1", () => { it("recovers EventEmitter candidates and imported timer handle cancellation", () => { diff --git a/tests/composition/javascript-applications/javascriptSemanticAnalysis.structure.test.ts b/src/domain/javascriptSemanticAnalysis.structure.test.ts similarity index 96% rename from tests/composition/javascript-applications/javascriptSemanticAnalysis.structure.test.ts rename to src/domain/javascriptSemanticAnalysis.structure.test.ts index 15e1eeb991..894756f925 100644 --- a/tests/composition/javascript-applications/javascriptSemanticAnalysis.structure.test.ts +++ b/src/domain/javascriptSemanticAnalysis.structure.test.ts @@ -1,18 +1,18 @@ import { it } from "@fast-check/vitest"; import { describe, expect } from "vitest"; -import { analyzeJavaScriptSemantics } from "../../../src/domain/javascriptSemanticAnalysis.js"; +import { analyzeJavaScriptSemantics } from "./javascriptSemanticAnalysis.js"; import { semanticBinding, semanticReferenceAt, -} from "../../../src/domain/javascriptSemanticIr.js"; +} from "./javascriptSemanticIr.js"; import { programScope, bindingsNamed, onlyBinding, topLevelBinding, origin, -} from "./javascriptSemanticAnalysis.support.js"; +} from "./javascriptSemanticAnalysis.fixture.js"; describe("JavaScript semantic analysis: structure 1", () => { it("resolves imports, require destructuring, aliases, assignments, and shadowing", () => { diff --git a/src/domain/javascriptSemanticAnalysis.ts b/src/domain/javascriptSemanticAnalysis.ts index 9cd7383296..482c0d0606 100644 --- a/src/domain/javascriptSemanticAnalysis.ts +++ b/src/domain/javascriptSemanticAnalysis.ts @@ -35,11 +35,8 @@ import { resolveSemanticModuleCallables, } from "./javascriptSemanticReturns.js"; import { collectJavaScriptDerivedSemantics } from "./javascriptSemanticDerivedAnalysis.js"; -import { - compareCodePoints, - propertyName, - range, -} from "./javascriptStaticAnalysisHelpers.js"; +import { propertyName, range } from "./javascriptStaticAnalysisHelpers.js"; +import { semanticCoverage } from "./javascriptSemanticCoverage.js"; import { parseJavaScriptSource, type ParsedJavaScriptSource, @@ -106,16 +103,7 @@ export const analyzeParsedJavaScriptSemantics = ( references, moduleLinks, ...derived, - coverage: { - status: - state.limitsReached.size > 0 - ? "truncated" - : parserPartial - ? "partial" - : "complete", - omittedCount: state.limitsReached.size > 0 ? state.omittedCount : 0, - limitsReached: [...state.limitsReached].sort(compareCodePoints), - }, + coverage: semanticCoverage(state, parserPartial), limitations: [ ...(parserPartial ? [ diff --git a/src/domain/javascriptSemanticCoverage.ts b/src/domain/javascriptSemanticCoverage.ts new file mode 100644 index 0000000000..50031c28aa --- /dev/null +++ b/src/domain/javascriptSemanticCoverage.ts @@ -0,0 +1,87 @@ +import type { JavaScriptSemanticLimits } from "./javascriptSemanticIr.js"; +import type { JavaScriptSemanticAnalysisState } from "./javascriptSemanticState.js"; +import { compareCodePoints } from "./javascriptStaticAnalysisHelpers.js"; + +/** Exact retention state for one callable's direct returns. */ +export type JavaScriptSemanticReturnCoverage = { + readonly retainedCount: number; +} & ( + | { + readonly status: "complete"; + readonly omittedCount: 0; + readonly limitsReached: readonly []; + } + | { + readonly status: "partial"; + readonly omittedCount: 0 | null; + readonly limitsReached: readonly []; + } + | { + readonly status: "truncated"; + readonly omittedCount: number; + readonly limitsReached: readonly ["maxReturnSites"]; + } +); + +/** Coverage state for one bounded semantic recovery pass. */ +export type JavaScriptSemanticCoverage = + | { + readonly status: "complete" | "partial"; + readonly omittedCount: 0; + readonly limitsReached: readonly []; + } + | { + readonly status: "truncated"; + readonly omittedCount: number; + readonly limitsReached: readonly [ + keyof JavaScriptSemanticLimits, + ...(keyof JavaScriptSemanticLimits)[], + ]; + } + | { + readonly status: "failed"; + readonly omittedCount: null; + readonly limitsReached: readonly []; + }; + +/** Classify whole-file semantic coverage from parser and limit state. */ +export const semanticCoverage = ( + state: JavaScriptSemanticAnalysisState, + parserPartial: boolean, +): JavaScriptSemanticCoverage => { + if (state.limitsReached.size === 0) + return { + status: parserPartial ? "partial" : "complete", + omittedCount: 0, + limitsReached: [], + }; + const limits = [...state.limitsReached].sort(compareCodePoints); + const first = limits[0]; + if (first === undefined) + throw new TypeError("Semantic truncation lost its limiting dimension"); + return { + status: "truncated", + omittedCount: state.omittedCount, + limitsReached: [first, ...limits.slice(1)], + }; +}; + +/** Classify one callable's direct-return coverage. */ +export const semanticReturnCoverage = ( + retainedCount: number, + omittedCount: number, + parserPartial: boolean, +): JavaScriptSemanticReturnCoverage => + omittedCount > 0 + ? { + status: "truncated", + retainedCount, + omittedCount, + limitsReached: ["maxReturnSites"], + } + : { + status: parserPartial ? "partial" : "complete", + retainedCount, + omittedCount: 0, + limitsReached: [], + }; diff --git a/tests/composition/javascript-applications/javascriptSemanticGraphQuery.test.ts b/src/domain/javascriptSemanticGraphQuery.test.ts similarity index 96% rename from tests/composition/javascript-applications/javascriptSemanticGraphQuery.test.ts rename to src/domain/javascriptSemanticGraphQuery.test.ts index ca8b086ab9..c8b4850e48 100644 --- a/tests/composition/javascript-applications/javascriptSemanticGraphQuery.test.ts +++ b/src/domain/javascriptSemanticGraphQuery.test.ts @@ -1,11 +1,11 @@ import { expect, it } from "vitest"; -import type { ApplicationGraphEvidence } from "../../../src/domain/javascriptApplicationEvidenceSchemas.js"; +import type { ApplicationGraphEvidence } from "./javascriptApplicationEvidenceSchemas.js"; import { JAVASCRIPT_SEMANTIC_NODE_KINDS, JAVASCRIPT_SEMANTIC_RELATION_FAMILIES, JAVASCRIPT_SEMANTIC_RELATIONS, -} from "../../../src/domain/javascriptSemanticGraphSchemas.js"; +} from "./javascriptSemanticGraphSchemas.js"; import { createJavaScriptSemanticFingerprint, createJavaScriptSemanticGraph, @@ -14,20 +14,20 @@ import { createJavaScriptSemanticGraphUnknown, type JavaScriptSemanticGraph, type JavaScriptSemanticGraphNode, -} from "../../../src/domain/javascriptSemanticGraph.js"; +} from "./javascriptSemanticGraph.js"; import { parseJavaScriptSemanticGraph, serializeJavaScriptSemanticGraph, -} from "../../../src/domain/javascriptSemanticGraphSerialization.js"; +} from "./javascriptSemanticGraphSerialization.js"; const SHA = "a".repeat(64); const JAG_ID = `jag_${"b".repeat(64)}`; const completeCoverage = { - status: "complete" as const, + status: "complete", truncated: false, omitted_count: 0, limits: [], -}; +} satisfies ApplicationGraphEvidence["coverage"]; const evidence = ( state: "observed" | "inferred" = "observed", diff --git a/tests/composition/javascript-applications/javascriptSemanticGraphTraversal.test.ts b/src/domain/javascriptSemanticGraphTraversal.test.ts similarity index 96% rename from tests/composition/javascript-applications/javascriptSemanticGraphTraversal.test.ts rename to src/domain/javascriptSemanticGraphTraversal.test.ts index e1ed7254bd..cce271cfe1 100644 --- a/tests/composition/javascript-applications/javascriptSemanticGraphTraversal.test.ts +++ b/src/domain/javascriptSemanticGraphTraversal.test.ts @@ -1,10 +1,10 @@ import { expect, it } from "vitest"; -import type { ApplicationGraphEvidence } from "../../../src/domain/javascriptApplicationEvidenceSchemas.js"; +import type { ApplicationGraphEvidence } from "./javascriptApplicationEvidenceSchemas.js"; import { JAVASCRIPT_SEMANTIC_NODE_KINDS, JAVASCRIPT_SEMANTIC_RELATION_FAMILIES, -} from "../../../src/domain/javascriptSemanticGraphSchemas.js"; +} from "./javascriptSemanticGraphSchemas.js"; import { createJavaScriptSemanticFingerprint, createJavaScriptSemanticGraph, @@ -13,18 +13,18 @@ import { createJavaScriptSemanticGraphUnknown, type JavaScriptSemanticGraph, type JavaScriptSemanticGraphNode, -} from "../../../src/domain/javascriptSemanticGraph.js"; -import { queryJavaScriptSemanticGraph } from "../../../src/domain/javascriptSemanticQuery.js"; -import { javaScriptSemanticQueryInputSchema } from "../../../src/domain/javascriptSemanticQuerySchemas.js"; +} from "./javascriptSemanticGraph.js"; +import { queryJavaScriptSemanticGraph } from "./javascriptSemanticQuery.js"; +import { javaScriptSemanticQueryInputSchema } from "./javascriptSemanticQuerySchemas.js"; const SHA = "a".repeat(64); const JAG_ID = `jag_${"b".repeat(64)}`; const completeCoverage = { - status: "complete" as const, + status: "complete", truncated: false, omitted_count: 0, limits: [], -}; +} satisfies ApplicationGraphEvidence["coverage"]; const evidence = ( state: "observed" | "inferred" = "observed", diff --git a/src/domain/javascriptSemanticIr.ts b/src/domain/javascriptSemanticIr.ts index 82e92504d9..d5b043a390 100644 --- a/src/domain/javascriptSemanticIr.ts +++ b/src/domain/javascriptSemanticIr.ts @@ -1,4 +1,15 @@ import type { JavaScriptSourceRange } from "./javascriptStaticAnalysisTypes.js"; +import type { JavaScriptSemanticValue } from "./javascriptSemanticValueTypes.js"; +import type { + JavaScriptSemanticCoverage, + JavaScriptSemanticReturnCoverage, +} from "./javascriptSemanticCoverage.js"; + +export type { + JavaScriptSemanticPrimitive, + JavaScriptSemanticProperty, + JavaScriptSemanticValue, +} from "./javascriptSemanticValueTypes.js"; /** Hard bounds for one execution-free JavaScript semantic analysis. */ export interface JavaScriptSemanticLimits { @@ -56,42 +67,6 @@ export const DEFAULT_JAVASCRIPT_SEMANTIC_LIMITS: JavaScriptSemanticLimits = { maxObjectProperties: 256, }; -/** Primitive values admitted into the bounded constant lattice. */ -export type JavaScriptSemanticPrimitive = string | number | boolean | null; - -/** Bounded, execution-free value lattice for JavaScript expressions. */ -export type JavaScriptSemanticValue = - | { - readonly status: "literal"; - readonly value: JavaScriptSemanticPrimitive; - } - | { - readonly status: "union"; - readonly values: readonly JavaScriptSemanticPrimitive[]; - } - | { - readonly status: "object"; - readonly properties: readonly JavaScriptSemanticProperty[]; - readonly unknownProperties: boolean; - readonly omittedProperties: number | null; - } - | { - readonly status: "array"; - readonly items: readonly JavaScriptSemanticValue[]; - readonly unknownItems: boolean; - readonly omittedItems: number | null; - } - | { - readonly status: "unknown" | "ambiguous" | "cycle" | "limit-reached"; - readonly reason: string; - }; - -/** One statically named object-literal property. */ -export interface JavaScriptSemanticProperty { - readonly name: string; - readonly value: JavaScriptSemanticValue; -} - /** One exact module origin followed through imports, requires, or aliases. */ export interface JavaScriptModuleOrigin { readonly specifier: string; @@ -99,17 +74,27 @@ export interface JavaScriptModuleOrigin { } /** Fail-closed provenance classification for one binding. */ -export interface JavaScriptBindingProvenance { - readonly status: - | "module" - | "local" - | "unknown" - | "ambiguous" - | "cycle" - | "limit-reached"; - readonly origins: readonly JavaScriptModuleOrigin[]; - readonly reason: string | null; -} +export type JavaScriptBindingProvenance = + | { + readonly status: "module"; + readonly origins: readonly [JavaScriptModuleOrigin]; + readonly reason: null; + } + | { + readonly status: "local"; + readonly origins: readonly []; + readonly reason: null; + } + | { + readonly status: "ambiguous"; + readonly origins: readonly JavaScriptModuleOrigin[]; + readonly reason: string; + } + | { + readonly status: "unknown" | "cycle" | "limit-reached"; + readonly origins: readonly []; + readonly reason: string; + }; /** One lexical scope recovered without executing source. */ export interface JavaScriptSemanticScope { @@ -446,14 +431,6 @@ export interface JavaScriptSemanticFrontier { readonly reason: string; } -/** Exact retention state for one callable's direct returns. */ -interface JavaScriptSemanticReturnCoverage { - readonly status: "complete" | "partial" | "truncated"; - readonly retainedCount: number; - readonly omittedCount: number | null; - readonly limitsReached: readonly (keyof JavaScriptSemanticLimits)[]; -} - /** Static import/export relationship retained for cross-file composition. */ export interface JavaScriptSemanticModuleLink { readonly kind: @@ -470,13 +447,6 @@ export interface JavaScriptSemanticModuleLink { readonly location: JavaScriptSourceRange; } -/** Coverage for bounded semantic recovery. */ -interface JavaScriptSemanticCoverage { - readonly status: "complete" | "partial" | "truncated" | "failed"; - readonly omittedCount: number | null; - readonly limitsReached: readonly (keyof JavaScriptSemanticLimits)[]; -} - /** Provider-neutral JavaScript semantic IR v4. */ export interface JavaScriptSemanticIr { readonly schema: "JavaScriptSemanticIR"; diff --git a/src/domain/javascriptSemanticProvenance.ts b/src/domain/javascriptSemanticProvenance.ts index 8fc527fdf0..360599bf34 100644 --- a/src/domain/javascriptSemanticProvenance.ts +++ b/src/domain/javascriptSemanticProvenance.ts @@ -6,12 +6,24 @@ import type { import type { JavaScriptSemanticAnalysisState } from "./javascriptSemanticState.js"; import { compareCodePoints } from "./javascriptStaticAnalysisHelpers.js"; -/** Construct one immutable semantic provenance value. */ -export const semanticProvenance = ( - status: JavaScriptBindingProvenance["status"], +/** Construct exact local provenance without inventing module origins. */ +export const semanticLocalProvenance = (): JavaScriptBindingProvenance => ({ + status: "local", + origins: [], + reason: null, +}); + +/** Construct an unresolved provenance outcome with an actionable reason. */ +export const semanticUnresolvedProvenance = ( + status: "unknown" | "cycle" | "limit-reached", + reason: string, +): JavaScriptBindingProvenance => ({ status, origins: [], reason }); + +/** Construct ambiguous provenance while retaining every bounded origin. */ +export const semanticAmbiguousProvenance = ( origins: readonly JavaScriptModuleOrigin[], - reason: string | null, -): JavaScriptBindingProvenance => ({ status, origins, reason }); + reason: string, +): JavaScriptBindingProvenance => ({ status: "ambiguous", origins, reason }); /** Normalize bounded exact module origins into one provenance classification. */ export const semanticOriginsProvenance = ( @@ -21,9 +33,10 @@ export const semanticOriginsProvenance = ( const unique = uniqueSemanticOrigins(origins); if (unique.length > state.limits.maxUnionValues) return semanticLimitProvenance(state, "maxUnionValues"); - return unique.length === 1 - ? semanticProvenance("module", unique, null) - : semanticProvenance("ambiguous", unique, "Multiple module origins."); + const origin = unique[0]; + return unique.length === 1 && origin !== undefined + ? { status: "module", origins: [origin], reason: null } + : semanticAmbiguousProvenance(unique, "Multiple module origins."); }; /** Deduplicate and canonically order module origins. */ @@ -44,7 +57,7 @@ export const semanticLimitProvenance = ( limit: "maxValueDepth" | "maxUnionValues", ): JavaScriptBindingProvenance => { reachSemanticValueLimit(state, limit); - return semanticProvenance("limit-reached", [], `${limit} reached.`); + return semanticUnresolvedProvenance("limit-reached", `${limit} reached.`); }; /** Record one value-lattice limit against the shared semantic analysis state. */ diff --git a/src/domain/javascriptSemanticReturns.ts b/src/domain/javascriptSemanticReturns.ts index 2d43f5bc26..0c5bccd96a 100644 --- a/src/domain/javascriptSemanticReturns.ts +++ b/src/domain/javascriptSemanticReturns.ts @@ -6,6 +6,10 @@ import type { JavaScriptSemanticReturnSite, JavaScriptSemanticValue, } from "./javascriptSemanticIr.js"; +import type { + ProjectedPropertyCoverage, + ProjectedReturnField, +} from "./javascriptExportShapeComparisonSchemas.js"; import { reachSemanticLimit, semanticCallableIdForNode, @@ -17,6 +21,7 @@ import { } from "./javascriptSemanticState.js"; import { evaluateSemanticExpression } from "./javascriptSemanticValues.js"; import { compareCodePoints, range } from "./javascriptStaticAnalysisHelpers.js"; +import { semanticReturnCoverage } from "./javascriptSemanticCoverage.js"; import { traverseJavaScriptAst } from "./javascriptSemanticTraversal.js"; interface ReturnExpression { @@ -73,13 +78,11 @@ export const collectSemanticReturns = ( return { ...callable, returnSites: sites, - returnCoverage: { - status: - omitted > 0 ? "truncated" : parserPartial ? "partial" : "complete", - retainedCount: sites.length, - omittedCount: omitted, - limitsReached: omitted > 0 ? ["maxReturnSites"] : [], - }, + returnCoverage: semanticReturnCoverage( + sites.length, + omitted, + parserPartial, + ), }; }); }; @@ -205,29 +208,11 @@ const callableIdsForNode = ( export const flattenSemanticReturnValue = ( value: JavaScriptSemanticValue, ): { - readonly fields: readonly { - readonly path: string; - readonly state: "literal" | "union" | "unknown"; - readonly value: unknown; - readonly reason: string | null; - }[]; - readonly propertyCoverage: readonly { - readonly path: string; - readonly status: "complete" | "partial"; - readonly omitted: number | null; - }[]; + readonly fields: readonly ProjectedReturnField[]; + readonly propertyCoverage: readonly ProjectedPropertyCoverage[]; } => { - const fields: { - path: string; - state: "literal" | "union" | "unknown"; - value: unknown; - reason: string | null; - }[] = []; - const propertyCoverage: { - path: string; - status: "complete" | "partial"; - omitted: number | null; - }[] = []; + const fields: ProjectedReturnField[] = []; + const propertyCoverage: ProjectedPropertyCoverage[] = []; flattenValue(value, "", fields, propertyCoverage); fields.sort((left, right) => compareCodePoints(left.path, right.path)); propertyCoverage.sort((left, right) => @@ -239,17 +224,8 @@ export const flattenSemanticReturnValue = ( const flattenValue = ( value: JavaScriptSemanticValue, path: string, - fields: { - path: string; - state: "literal" | "union" | "unknown"; - value: unknown; - reason: string | null; - }[], - coverage: { - path: string; - status: "complete" | "partial"; - omitted: number | null; - }[], + fields: ProjectedReturnField[], + coverage: ProjectedPropertyCoverage[], ): void => { if (value.status === "literal") { fields.push({ path, state: "literal", value: value.value, reason: null }); @@ -265,11 +241,11 @@ const flattenValue = ( return; } if (value.status === "object") { - coverage.push({ - path, - status: value.unknownProperties ? "partial" : "complete", - omitted: value.omittedProperties, - }); + coverage.push( + value.unknownProperties + ? { path, status: "partial", omitted: value.omittedProperties } + : { path, status: "complete", omitted: 0 }, + ); for (const property of value.properties) flattenValue( property.value, @@ -280,11 +256,11 @@ const flattenValue = ( return; } if (value.status === "array") { - coverage.push({ - path, - status: value.unknownItems ? "partial" : "complete", - omitted: value.omittedItems, - }); + coverage.push( + value.unknownItems + ? { path, status: "partial", omitted: value.omittedItems } + : { path, status: "complete", omitted: 0 }, + ); value.items.forEach((item, index) => flattenValue(item, `${path}/${String(index)}`, fields, coverage), ); diff --git a/src/domain/javascriptSemanticValueTypes.ts b/src/domain/javascriptSemanticValueTypes.ts new file mode 100644 index 0000000000..a344c83ba0 --- /dev/null +++ b/src/domain/javascriptSemanticValueTypes.ts @@ -0,0 +1,53 @@ +/** Primitive values admitted into the bounded constant lattice. */ +export type JavaScriptSemanticPrimitive = string | number | boolean | null; + +type JavaScriptSemanticObjectValue = { + readonly status: "object"; + readonly properties: readonly JavaScriptSemanticProperty[]; +} & ( + | { + readonly unknownProperties: false; + readonly omittedProperties: 0; + } + | { + readonly unknownProperties: true; + readonly omittedProperties: number | null; + } +); + +type JavaScriptSemanticArrayValue = { + readonly status: "array"; + readonly items: readonly JavaScriptSemanticValue[]; +} & ( + | { + readonly unknownItems: false; + readonly omittedItems: 0; + } + | { + readonly unknownItems: true; + readonly omittedItems: number | null; + } +); + +/** Bounded, execution-free value lattice for JavaScript expressions. */ +export type JavaScriptSemanticValue = + | { + readonly status: "literal"; + readonly value: JavaScriptSemanticPrimitive; + } + | { + readonly status: "union"; + readonly values: readonly JavaScriptSemanticPrimitive[]; + } + | JavaScriptSemanticObjectValue + | JavaScriptSemanticArrayValue + | { + readonly status: "unknown" | "ambiguous" | "cycle" | "limit-reached"; + readonly reason: string; + }; + +/** One statically named object-literal property. */ +export interface JavaScriptSemanticProperty { + readonly name: string; + readonly value: JavaScriptSemanticValue; +} diff --git a/src/domain/javascriptSemanticValues.ts b/src/domain/javascriptSemanticValues.ts index a715415244..eec5cd4133 100644 --- a/src/domain/javascriptSemanticValues.ts +++ b/src/domain/javascriptSemanticValues.ts @@ -18,9 +18,11 @@ import { } from "./javascriptStaticAnalysisHelpers.js"; import { reachSemanticValueLimit, + semanticAmbiguousProvenance, semanticLimitProvenance, + semanticLocalProvenance, semanticOriginsProvenance, - semanticProvenance, + semanticUnresolvedProvenance, uniqueSemanticOrigins, } from "./javascriptSemanticProvenance.js"; import { @@ -196,12 +198,19 @@ const evaluateObject = ( }); } properties.sort((left, right) => compareCodePoints(left.name, right.name)); - return { - status: "object", - properties, - unknownProperties, - omittedProperties, - }; + return unknownProperties + ? { + status: "object", + properties, + unknownProperties: true, + omittedProperties, + } + : { + status: "object", + properties, + unknownProperties: false, + omittedProperties: 0, + }; }; const evaluateArray = ( @@ -230,7 +239,9 @@ const evaluateArray = ( } items.push(evaluateExpression(element, nestedContext(context))); } - return { status: "array", items, unknownItems, omittedItems }; + return unknownItems + ? { status: "array", items, unknownItems: true, omittedItems } + : { status: "array", items, unknownItems: false, omittedItems: 0 }; }; const evaluateMember = ( @@ -337,24 +348,31 @@ const provenanceForBinding = ( context: EvaluationContext, ): JavaScriptBindingProvenance => { if (context.bindings.has(binding.bindingId)) - return semanticProvenance("cycle", [], `Alias cycle at ${binding.name}.`); + return semanticUnresolvedProvenance( + "cycle", + `Alias cycle at ${binding.name}.`, + ); if (context.depth >= context.state.limits.maxValueDepth) return semanticLimitProvenance(context.state, "maxValueDepth"); if (binding.directOrigins.length > 0) return semanticOriginsProvenance(binding.directOrigins, context.state); - if (binding.initializers.length === 0) - return semanticProvenance("local", [], null); + if (binding.initializers.length === 0) return semanticLocalProvenance(); if (binding.initializers.length > 1) - return semanticProvenance( - "ambiguous", + return semanticAmbiguousProvenance( [], `Binding ${binding.name} has multiple possible assignments.`, ); const initializer = binding.initializers[0]; if (initializer === undefined) - return semanticProvenance("unknown", [], "Missing binding initializer."); + return semanticUnresolvedProvenance( + "unknown", + "Missing binding initializer.", + ); if (initializer.projection.includes(null)) - return semanticProvenance("unknown", [], "Dynamic provenance projection."); + return semanticUnresolvedProvenance( + "unknown", + "Dynamic provenance projection.", + ); const resolved = provenanceForExpression( initializer.node, nestedContext(context, binding.bindingId), @@ -383,15 +401,24 @@ const provenanceForExpression = ( if (t.isIdentifier(node)) { const binding = resolveSemanticBindingState(context.state, node, node.name); return binding === undefined - ? semanticProvenance("unknown", [], `Unbound identifier ${node.name}.`) + ? semanticUnresolvedProvenance( + "unknown", + `Unbound identifier ${node.name}.`, + ) : provenanceForBinding(binding, nestedContext(context)); } if (t.isMemberExpression(node) || t.isOptionalMemberExpression(node)) { if (!t.isNode(node.object)) - return semanticProvenance("unknown", [], "Unsupported member base."); + return semanticUnresolvedProvenance( + "unknown", + "Unsupported member base.", + ); const member = memberKey(node); if (typeof member !== "string") - return semanticProvenance("unknown", [], "Dynamic provenance member."); + return semanticUnresolvedProvenance( + "unknown", + "Dynamic provenance member.", + ); const base = provenanceForExpression(node.object, nestedContext(context)); return base.status !== "module" ? base @@ -412,18 +439,16 @@ const provenanceForExpression = ( ]; const origins = candidates.flatMap((candidate) => candidate.origins); return origins.length > 0 - ? semanticProvenance( - "ambiguous", + ? semanticAmbiguousProvenance( uniqueSemanticOrigins(origins), "Multiple module origins.", ) - : semanticProvenance( + : semanticUnresolvedProvenance( "unknown", - [], "Conditional provenance is unresolved.", ); } - return semanticProvenance("local", [], null); + return semanticLocalProvenance(); }; const requireOrigin = (node: t.Node): JavaScriptModuleOrigin | undefined => { diff --git a/src/domain/javascriptStaticAnalysisBundler.ts b/src/domain/javascriptStaticAnalysisBundler.ts index 1316e67565..74003f35c0 100644 --- a/src/domain/javascriptStaticAnalysisBundler.ts +++ b/src/domain/javascriptStaticAnalysisBundler.ts @@ -237,20 +237,23 @@ const recoverBundlerModule = ( key, requireName, }); + const structuralFingerprint = fingerprint.truncated + ? { + structural_fingerprint_sha256: null, + structural_fingerprint_algorithm: null, + structural_fingerprint_status: "truncated" as const, + } + : { + structural_fingerprint_sha256: fingerprint.sha256, + structural_fingerprint_algorithm: "babel-ast-v1" as const, + structural_fingerprint_status: "complete" as const, + }; return { module: { module_key: key, factory_require_name: requireName, source_sha256: sha256Text(sourceSlice(source, factory)), - structural_fingerprint_sha256: fingerprint.truncated - ? null - : fingerprint.sha256, - structural_fingerprint_algorithm: fingerprint.truncated - ? null - : ("babel-ast-v1" as const), - structural_fingerprint_status: fingerprint.truncated - ? ("truncated" as const) - : ("complete" as const), + ...structuralFingerprint, exports: exportsValue.values, exports_truncated: exportsValue.truncated, location: range(factory), diff --git a/src/domain/javascriptStaticAnalysisCalls.ts b/src/domain/javascriptStaticAnalysisCalls.ts index 94843c727b..c8ff25346d 100644 --- a/src/domain/javascriptStaticAnalysisCalls.ts +++ b/src/domain/javascriptStaticAnalysisCalls.ts @@ -237,18 +237,20 @@ export const addReference = ( input: ReferenceInput, ): void => { const boundedSpecifier = input.specifier?.slice(0, 4_096) ?? null; - const expression = + const reference = boundedSpecifier === null - ? sourceSlice(context.source, input.node).slice(0, 4_096) - : null; + ? { + specifier: null, + expression: sourceSlice(context.source, input.node).slice(0, 4_096), + } + : { specifier: boundedSpecifier, expression: null }; addLocatedFinding(context, { collection: context.accumulator.references, - key: `reference\0${input.kind}\0${boundedSpecifier ?? expression}`, + key: `reference\0${input.kind}\0${reference.specifier ?? reference.expression}`, node: input.node, value: { kind: input.kind, - specifier: boundedSpecifier, - expression, + ...reference, module_key: null, location: range(input.node), }, diff --git a/src/domain/javascriptStaticAnalysisTypes.ts b/src/domain/javascriptStaticAnalysisTypes.ts index 4f3902ce38..81b3ac6a46 100644 --- a/src/domain/javascriptStaticAnalysisTypes.ts +++ b/src/domain/javascriptStaticAnalysisTypes.ts @@ -17,20 +17,24 @@ export interface JavaScriptSourceRange { readonly end: JavaScriptSourcePoint; } -/** A statically visible module, worker, or service-worker reference. */ -export interface JavaScriptStaticReference { +interface JavaScriptStaticReferenceState { readonly kind: | "static-import" | "dynamic-import" | "require" | "worker" | "service-worker"; - readonly specifier: string | null; - readonly expression: string | null; readonly module_key: string | null; readonly location: JavaScriptSourceRange; } +/** A statically visible module, worker, or service-worker reference. */ +export type JavaScriptStaticReference = JavaScriptStaticReferenceState & + ( + | { readonly specifier: string; readonly expression: null } + | { readonly specifier: null; readonly expression: string } + ); + /** A route or network endpoint literal observed in syntax. */ export interface JavaScriptStaticEndpoint { readonly kind: "route" | "network"; @@ -54,19 +58,30 @@ export interface JavaScriptStaticStorage { readonly location: JavaScriptSourceRange; } -/** One exact module factory recovered from a Webpack/Rspack registration. */ -export interface JavaScriptBundlerModule { +interface JavaScriptBundlerModuleState { readonly module_key: string; readonly factory_require_name: string | null; readonly source_sha256: string; - readonly structural_fingerprint_sha256: string | null; - readonly structural_fingerprint_algorithm: "babel-ast-v1" | null; - readonly structural_fingerprint_status: "complete" | "truncated"; readonly exports: readonly string[]; readonly exports_truncated: boolean; readonly location: JavaScriptSourceRange; } +/** One exact module factory recovered from a Webpack/Rspack registration. */ +export type JavaScriptBundlerModule = JavaScriptBundlerModuleState & + ( + | { + readonly structural_fingerprint_sha256: string; + readonly structural_fingerprint_algorithm: "babel-ast-v1"; + readonly structural_fingerprint_status: "complete"; + } + | { + readonly structural_fingerprint_sha256: null; + readonly structural_fingerprint_algorithm: null; + readonly structural_fingerprint_status: "truncated"; + } + ); + /** One statically recognized bundler chunk or module registration. */ export interface JavaScriptBundlerRegistration { readonly bundler: "webpack" | "rspack" | "esbuild"; diff --git a/tests/composition/analysis-sessions/jsonLimits.test.ts b/src/domain/jsonLimits.test.ts similarity index 92% rename from tests/composition/analysis-sessions/jsonLimits.test.ts rename to src/domain/jsonLimits.test.ts index 4d45508c19..f4855c19bd 100644 --- a/tests/composition/analysis-sessions/jsonLimits.test.ts +++ b/src/domain/jsonLimits.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { isJsonWithinLimits } from "../../../src/domain/jsonLimits.js"; +import { isJsonWithinLimits } from "./jsonLimits.js"; const limits = { maxDepth: 3, diff --git a/src/domain/managedApplicationGraphCoverage.ts b/src/domain/managedApplicationGraphCoverage.ts index 665722cf2c..d4a2d3f94e 100644 --- a/src/domain/managedApplicationGraphCoverage.ts +++ b/src/domain/managedApplicationGraphCoverage.ts @@ -135,12 +135,21 @@ export const managedGraphEvidenceCoverage = ( omitted_count: null, limits: [], }; - return { - status: omitted === 0 && !omissions.partialInput ? "complete" : "partial", - truncated: omitted > 0, - omitted_count: omitted > 0 ? omitted : omissions.partialInput ? null : 0, - limits: omitted > 0 ? projectionLimits(omissions) : [], - }; + if (omitted > 0) + return { + status: "partial", + truncated: true, + omitted_count: omitted, + limits: projectionLimits(omissions), + }; + return omissions.partialInput + ? { + status: "partial", + truncated: false, + omitted_count: null, + limits: [], + } + : completeManagedGraphCoverage(); }; /** Project aggregate omissions into the managed workflow result contract. */ diff --git a/src/domain/managedMemberComparison.ts b/src/domain/managedMemberComparison.ts index 8bda016dd8..c564c76418 100644 --- a/src/domain/managedMemberComparison.ts +++ b/src/domain/managedMemberComparison.ts @@ -16,9 +16,8 @@ import { import { buildFieldItems, buildMethodItems, - keyMembers, - sha256, -} from "./managedMemberComparisonMatch.js"; +} from "./managedMemberComparisonItems.js"; +import { keyMembers, sha256 } from "./managedMemberComparisonMatch.js"; const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u); const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u); @@ -52,22 +51,33 @@ export const compareManagedMembersInputSchema = z }); }); -const matchBasisSchema = z.enum([ +const concreteMatchBasisSchema = z.enum([ "exact-il-signature", "structural-method-shape", "field-signature", - "none", ]); - -const matchStatusSchema = z.enum(["matched", "unmatched", "ambiguous"]); -const itemStatusSchema = z.enum([ - "unchanged", - "changed", - "added", - "removed", - "unknown", -]); - +const candidateTokensSchema = z.array(tokenSchema).min(1).max(500); +const matchedComparisonSchema = z.strictObject({ + status: z.literal("matched"), + basis: concreteMatchBasisSchema, + confidence: z.enum(["exact", "high"]), + candidate_left_tokens: z.tuple([]), + candidate_right_tokens: z.tuple([]), +}); +const unmatchedComparisonSchema = z.strictObject({ + status: z.literal("unmatched"), + basis: z.literal("none"), + confidence: z.literal("unknown"), + candidate_left_tokens: z.tuple([]), + candidate_right_tokens: z.tuple([]), +}); +const ambiguousComparisonSchema = z.strictObject({ + status: z.literal("ambiguous"), + basis: concreteMatchBasisSchema, + confidence: z.literal("unknown"), + candidate_left_tokens: candidateTokensSchema, + candidate_right_tokens: candidateTokensSchema, +}); const memberIdentitySchema = z.strictObject({ token: tokenSchema, declaring_type: z.string().nullable(), @@ -76,50 +86,77 @@ const memberIdentitySchema = z.strictObject({ normalized_il_sha256: digestSchema.nullable(), }); -const methodComparisonItemSchema = z.strictObject({ - item_id: z.string().regex(/^mmc_method_[a-f0-9]{64}$/u), - status: itemStatusSchema, - left: memberIdentitySchema.nullable(), - right: memberIdentitySchema.nullable(), - match: z.strictObject({ - status: matchStatusSchema, - basis: matchBasisSchema, - confidence: z.enum(["exact", "high", "unknown"]), - candidate_left_tokens: z.array(tokenSchema).max(500), - candidate_right_tokens: z.array(tokenSchema).max(500), - }), - dimensions: z - .array( - z.enum([ - "signature", - "cil", - "opcode-shape", - "call-shape", - "field-shape", - "exception-shape", - "availability", - ]), - ) - .max(7), - evidence_links: z.array(evidenceIdSchema).length(2), - limitations: z.array(boundedTextSchema).max(100), -}); +const comparisonItemSchema = < + Identity extends z.ZodType, + Base extends Record, +>( + base: Base, + identity: Identity, +) => + z.union([ + z.strictObject({ + ...base, + status: z.enum(["unchanged", "changed"]), + left: identity, + right: identity, + match: matchedComparisonSchema, + }), + z.strictObject({ + ...base, + status: z.enum(["removed", "unknown"]), + left: identity, + right: z.null(), + match: unmatchedComparisonSchema, + }), + z.strictObject({ + ...base, + status: z.enum(["added", "unknown"]), + left: z.null(), + right: identity, + match: unmatchedComparisonSchema, + }), + z.strictObject({ + ...base, + status: z.literal("unknown"), + left: z.null(), + right: z.null(), + match: ambiguousComparisonSchema, + }), + ]); -const fieldComparisonItemSchema = z.strictObject({ - item_id: z.string().regex(/^mmc_field_[a-f0-9]{64}$/u), - status: itemStatusSchema, - left: memberIdentitySchema.omit({ normalized_il_sha256: true }).nullable(), - right: memberIdentitySchema.omit({ normalized_il_sha256: true }).nullable(), - match: z.strictObject({ - status: matchStatusSchema, - basis: matchBasisSchema, - confidence: z.enum(["exact", "high", "unknown"]), - candidate_left_tokens: z.array(tokenSchema).max(500), - candidate_right_tokens: z.array(tokenSchema).max(500), - }), +const comparisonItemContextShape = { evidence_links: z.array(evidenceIdSchema).length(2), limitations: z.array(boundedTextSchema).max(100), -}); +}; + +const methodComparisonItemSchema = comparisonItemSchema( + { + ...comparisonItemContextShape, + item_id: z.string().regex(/^mmc_method_[a-f0-9]{64}$/u), + dimensions: z + .array( + z.enum([ + "signature", + "cil", + "opcode-shape", + "call-shape", + "field-shape", + "exception-shape", + "availability", + ]), + ) + .max(7), + }, + memberIdentitySchema, +); + +const fieldComparisonItemSchema = comparisonItemSchema( + { + ...comparisonItemContextShape, + item_id: z.string().regex(/^mmc_field_[a-f0-9]{64}$/u), + }, + memberIdentitySchema.omit({ normalized_il_sha256: true }), +); /** Obfuscation-resistant, execution-free managed member comparison. */ export const managedMemberComparisonResultSchema = z.strictObject({ diff --git a/src/domain/managedMemberComparisonItems.ts b/src/domain/managedMemberComparisonItems.ts new file mode 100644 index 0000000000..9a38b02924 --- /dev/null +++ b/src/domain/managedMemberComparisonItems.ts @@ -0,0 +1,297 @@ +import canonicalize from "canonicalize"; + +import type { ManagedMemberInspection } from "./managedArtifact.js"; +import type { + CompareManagedMembersInput, + ManagedMemberComparisonResult, +} from "./managedMemberComparison.js"; +import { + type ManagedFieldMatches, + type ManagedMethodMatches, + sha256, +} from "./managedMemberComparisonMatch.js"; + +type Method = ManagedMemberInspection["methods"]["items"][number]; +type Field = ManagedMemberInspection["fields"]["items"][number]; +type MethodItem = ManagedMemberComparisonResult["methods"][number]; +type FieldItem = ManagedMemberComparisonResult["fields"][number]; +type UnmatchedComparison = Extract< + MethodItem["match"], + { readonly status: "unmatched" } +>; + +type OneSided = + | { readonly left: Item; readonly right?: never } + | { readonly left?: never; readonly right: Item }; + +interface ComparisonItemContext { + readonly leftEvidenceId: string; + readonly rightEvidenceId: string; + readonly leftComplete: boolean; + readonly rightComplete: boolean; + readonly limits: CompareManagedMembersInput["limits"]; +} + +const changedMethodDimensions = ( + left: Method, + right: Method, +): MethodItem["dimensions"] => { + const dimensions: MethodItem["dimensions"] = []; + if (left.signature.raw_sha256 !== right.signature.raw_sha256) + dimensions.push("signature"); + if (left.body.normalized_il_sha256 !== right.body.normalized_il_sha256) + dimensions.push("cil"); + if ( + canonicalize(left.body.opcode_counts) !== + canonicalize(right.body.opcode_counts) + ) + dimensions.push("opcode-shape"); + if (callShape(left.body.anchors) !== callShape(right.body.anchors)) + dimensions.push("call-shape"); + if (fieldShape(left.body.anchors) !== fieldShape(right.body.anchors)) + dimensions.push("field-shape"); + if ( + canonicalize(left.body.exception_regions) !== + canonicalize(right.body.exception_regions) + ) + dimensions.push("exception-shape"); + if (left.body.status !== right.body.status) dimensions.push("availability"); + return dimensions; +}; + +const callShape = (anchors: Method["body"]["anchors"]): string => + JSON.stringify( + anchors + .filter(({ operand_kind }) => operand_kind === "method") + .map(({ opcode, operand_kind }) => [opcode, operand_kind]), + ); + +const fieldShape = (anchors: Method["body"]["anchors"]): string => + JSON.stringify( + anchors + .filter(({ operand_kind }) => operand_kind === "field") + .map(({ opcode, operand_kind }) => [opcode, operand_kind]), + ); + +const methodIdentity = (item: Method): NonNullable => ({ + token: item.token, + declaring_type: item.declaring_type, + name: item.name, + signature_sha256: item.signature.raw_sha256, + normalized_il_sha256: item.body.normalized_il_sha256, +}); + +const fieldIdentity = (item: Field): NonNullable => ({ + token: item.token, + declaring_type: item.declaring_type, + name: item.name, + signature_sha256: item.signature.raw_sha256, +}); + +const unmatchedComparison = (): UnmatchedComparison => ({ + status: "unmatched", + basis: "none", + confidence: "unknown", + candidate_left_tokens: [], + candidate_right_tokens: [], +}); + +const methodOnlyItem = ( + member: OneSided, + context: ComparisonItemContext, +): MethodItem => { + if (member.left !== undefined) { + const absenceObserved = context.rightComplete; + return { + item_id: `mmc_method_${sha256({ token: member.left.token, side: "left" })}`, + status: absenceObserved ? "removed" : "unknown", + left: methodIdentity(member.left), + right: null, + match: unmatchedComparison(), + dimensions: ["availability"], + evidence_links: [context.leftEvidenceId, context.rightEvidenceId], + limitations: absenceObserved + ? [] + : [ + "unknown-within-unobserved-page: The right method page is incomplete, so absence was not observed.", + ], + }; + } + + const absenceObserved = context.leftComplete; + return { + item_id: `mmc_method_${sha256({ token: member.right.token, side: "right" })}`, + status: absenceObserved ? "added" : "unknown", + left: null, + right: methodIdentity(member.right), + match: unmatchedComparison(), + dimensions: ["availability"], + evidence_links: [context.leftEvidenceId, context.rightEvidenceId], + limitations: absenceObserved + ? [] + : [ + "unknown-within-unobserved-page: The left method page is incomplete, so absence was not observed.", + ], + }; +}; + +const fieldOnlyItem = ( + member: OneSided, + context: ComparisonItemContext, +): FieldItem => { + if (member.left !== undefined) { + const absenceObserved = context.rightComplete; + return { + item_id: `mmc_field_${sha256({ token: member.left.token, side: "left" })}`, + status: absenceObserved ? "removed" : "unknown", + left: fieldIdentity(member.left), + right: null, + match: unmatchedComparison(), + evidence_links: [context.leftEvidenceId, context.rightEvidenceId], + limitations: absenceObserved + ? [] + : [ + "unknown-within-unobserved-page: The right field page is incomplete, so absence was not observed.", + ], + }; + } + + const absenceObserved = context.leftComplete; + return { + item_id: `mmc_field_${sha256({ token: member.right.token, side: "right" })}`, + status: absenceObserved ? "added" : "unknown", + left: null, + right: fieldIdentity(member.right), + match: unmatchedComparison(), + evidence_links: [context.leftEvidenceId, context.rightEvidenceId], + limitations: absenceObserved + ? [] + : [ + "unknown-within-unobserved-page: The left field page is incomplete, so absence was not observed.", + ], + }; +}; + +export const buildMethodItems = ( + matches: ManagedMethodMatches, + context: ComparisonItemContext, +): { readonly items: MethodItem[]; readonly omitted: number } => { + const items: MethodItem[] = []; + for (const pair of matches.pairs) { + const dimensions = changedMethodDimensions(pair.left.item, pair.right.item); + items.push({ + item_id: `mmc_method_${sha256({ + left: pair.left.item.token, + right: pair.right.item.token, + basis: pair.basis, + })}`, + status: dimensions.length === 0 ? "unchanged" : "changed", + left: methodIdentity(pair.left.item), + right: methodIdentity(pair.right.item), + match: { + status: "matched", + basis: pair.basis, + confidence: pair.confidence, + candidate_left_tokens: [], + candidate_right_tokens: [], + }, + dimensions, + evidence_links: [context.leftEvidenceId, context.rightEvidenceId], + limitations: [], + }); + } + for (const ambiguous of matches.ambiguous) { + items.push({ + item_id: `mmc_method_${sha256({ + left: ambiguous.left.map(({ item }) => item.token), + right: ambiguous.right.map(({ item }) => item.token), + basis: ambiguous.basis, + })}`, + status: "unknown", + left: null, + right: null, + match: { + status: "ambiguous", + basis: ambiguous.basis, + confidence: "unknown", + candidate_left_tokens: ambiguous.left.map(({ item }) => item.token), + candidate_right_tokens: ambiguous.right.map(({ item }) => item.token), + }, + dimensions: ["availability"], + evidence_links: [context.leftEvidenceId, context.rightEvidenceId], + limitations: [ + "Multiple managed methods share the same non-name identity key; REA did not guess a token remap.", + ], + }); + } + for (const item of matches.leftOnly) + items.push(methodOnlyItem({ left: item.item }, context)); + for (const item of matches.rightOnly) + items.push(methodOnlyItem({ right: item.item }, context)); + return limitItems(items, context.limits.max_method_matches); +}; + +export const buildFieldItems = ( + matches: ManagedFieldMatches, + context: ComparisonItemContext, +): { readonly items: FieldItem[]; readonly omitted: number } => { + const items: FieldItem[] = []; + for (const pair of matches.pairs) { + const changed = + pair.left.item.signature.raw_sha256 !== + pair.right.item.signature.raw_sha256 || + pair.left.item.flags !== pair.right.item.flags; + items.push({ + item_id: `mmc_field_${sha256({ + left: pair.left.item.token, + right: pair.right.item.token, + })}`, + status: changed ? "changed" : "unchanged", + left: fieldIdentity(pair.left.item), + right: fieldIdentity(pair.right.item), + match: { + status: "matched", + basis: pair.basis, + confidence: pair.confidence, + candidate_left_tokens: [], + candidate_right_tokens: [], + }, + evidence_links: [context.leftEvidenceId, context.rightEvidenceId], + limitations: [], + }); + } + for (const ambiguous of matches.ambiguous) + items.push({ + item_id: `mmc_field_${sha256({ + left: ambiguous.left.map(({ item }) => item.token), + right: ambiguous.right.map(({ item }) => item.token), + })}`, + status: "unknown", + left: null, + right: null, + match: { + status: "ambiguous", + basis: ambiguous.basis, + confidence: "unknown", + candidate_left_tokens: ambiguous.left.map(({ item }) => item.token), + candidate_right_tokens: ambiguous.right.map(({ item }) => item.token), + }, + evidence_links: [context.leftEvidenceId, context.rightEvidenceId], + limitations: [ + "Multiple managed fields share the same signature; REA did not guess a token remap from names.", + ], + }); + for (const item of matches.leftOnly) + items.push(fieldOnlyItem({ left: item.item }, context)); + for (const item of matches.rightOnly) + items.push(fieldOnlyItem({ right: item.item }, context)); + return limitItems(items, context.limits.max_field_matches); +}; + +const limitItems = ( + items: readonly Item[], + limit: number, +): { readonly items: Item[]; readonly omitted: number } => ({ + items: items.slice(0, limit), + omitted: Math.max(0, items.length - limit), +}); diff --git a/src/domain/managedMemberComparisonMatch.ts b/src/domain/managedMemberComparisonMatch.ts index 241237446e..c8d8f5126a 100644 --- a/src/domain/managedMemberComparisonMatch.ts +++ b/src/domain/managedMemberComparisonMatch.ts @@ -8,7 +8,6 @@ import { type ManagedMemberInspection, } from "./managedArtifact.js"; import type { - CompareManagedMembersInput, ManagedMemberComparisonResult, ManagedMemberComparisonSide, } from "./managedMemberComparison.js"; @@ -23,9 +22,9 @@ export const sha256 = (value: JsonValue): string => { type Method = ManagedMemberInspection["methods"]["items"][number]; type Field = ManagedMemberInspection["fields"]["items"][number]; -type MethodItem = ManagedMemberComparisonResult["methods"][number]; -type FieldItem = ManagedMemberComparisonResult["fields"][number]; -type MatchBasis = MethodItem["match"]["basis"]; +type MatchBasis = + ManagedMemberComparisonResult["methods"][number]["match"]["basis"]; +type ConcreteMatchBasis = Exclude; interface Keyed { readonly item: Item; @@ -36,22 +35,14 @@ interface Keyed { interface MatchedPair { readonly left: Keyed; readonly right: Keyed; - readonly basis: MatchBasis; + readonly basis: ConcreteMatchBasis; readonly confidence: "exact" | "high"; } interface Ambiguous { readonly left: readonly Keyed[]; readonly right: readonly Keyed[]; - readonly basis: MatchBasis; -} - -export interface ComparisonItemContext { - readonly leftEvidenceId: string; - readonly rightEvidenceId: string; - readonly leftComplete: boolean; - readonly rightComplete: boolean; - readonly limits: CompareManagedMembersInput["limits"]; + readonly basis: ConcreteMatchBasis; } const keyMethod = (item: Method): Keyed => ({ @@ -139,12 +130,15 @@ const matchFields = ( fallbackBases: [], }); +export type ManagedMethodMatches = ReturnType; +export type ManagedFieldMatches = ReturnType; + interface MatchByKeysInput { readonly left: readonly Keyed[]; readonly right: readonly Keyed[]; readonly maxCandidates: number; - readonly exactBasis: MatchBasis; - readonly fallbackBases: readonly MatchBasis[]; + readonly exactBasis: ConcreteMatchBasis; + readonly fallbackBases: readonly ConcreteMatchBasis[]; } const matchByKeys = ({ @@ -166,7 +160,7 @@ const matchByKeys = ({ const ambiguous: Ambiguous[] = []; let omittedCandidates = 0; const rounds: readonly { - readonly basis: MatchBasis; + readonly basis: ConcreteMatchBasis; readonly key: (item: Keyed) => string | null; }[] = [ { basis: exactBasis, key: ({ exactKey }) => exactKey }, @@ -242,241 +236,6 @@ const groupBy = ( return grouped; }; -const changedMethodDimensions = ( - left: Method, - right: Method, -): MethodItem["dimensions"] => { - const dimensions: MethodItem["dimensions"] = []; - if (left.signature.raw_sha256 !== right.signature.raw_sha256) - dimensions.push("signature"); - if (left.body.normalized_il_sha256 !== right.body.normalized_il_sha256) - dimensions.push("cil"); - if ( - canonicalize(left.body.opcode_counts) !== - canonicalize(right.body.opcode_counts) - ) - dimensions.push("opcode-shape"); - if (callShape(left.body.anchors) !== callShape(right.body.anchors)) - dimensions.push("call-shape"); - if (fieldShape(left.body.anchors) !== fieldShape(right.body.anchors)) - dimensions.push("field-shape"); - if ( - canonicalize(left.body.exception_regions) !== - canonicalize(right.body.exception_regions) - ) - dimensions.push("exception-shape"); - if (left.body.status !== right.body.status) dimensions.push("availability"); - return dimensions; -}; - -const callShape = (anchors: Method["body"]["anchors"]): string => - JSON.stringify( - anchors - .filter(({ operand_kind }) => operand_kind === "method") - .map(({ opcode, operand_kind }) => [opcode, operand_kind]), - ); - -const fieldShape = (anchors: Method["body"]["anchors"]): string => - JSON.stringify( - anchors - .filter(({ operand_kind }) => operand_kind === "field") - .map(({ opcode, operand_kind }) => [opcode, operand_kind]), - ); - -const methodIdentity = (item: Method): NonNullable => ({ - token: item.token, - declaring_type: item.declaring_type, - name: item.name, - signature_sha256: item.signature.raw_sha256, - normalized_il_sha256: item.body.normalized_il_sha256, -}); - -const fieldIdentity = (item: Field): NonNullable => ({ - token: item.token, - declaring_type: item.declaring_type, - name: item.name, - signature_sha256: item.signature.raw_sha256, -}); - -const methodOnlyItem = ( - item: Method, - context: ComparisonItemContext, - left: boolean, -): MethodItem => { - const absenceObserved = left ? context.rightComplete : context.leftComplete; - return { - item_id: `mmc_method_${sha256({ token: item.token, side: left ? "left" : "right" })}`, - status: absenceObserved ? (left ? "removed" : "added") : "unknown", - left: left ? methodIdentity(item) : null, - right: left ? null : methodIdentity(item), - match: { - status: "unmatched", - basis: "none", - confidence: "unknown", - candidate_left_tokens: [], - candidate_right_tokens: [], - }, - dimensions: ["availability"], - evidence_links: [context.leftEvidenceId, context.rightEvidenceId], - limitations: absenceObserved - ? [] - : [ - `unknown-within-unobserved-page: The ${left ? "right" : "left"} method page is incomplete, so absence was not observed.`, - ], - }; -}; - -const fieldOnlyItem = ( - item: Field, - context: ComparisonItemContext, - left: boolean, -): FieldItem => { - const absenceObserved = left ? context.rightComplete : context.leftComplete; - return { - item_id: `mmc_field_${sha256({ token: item.token, side: left ? "left" : "right" })}`, - status: absenceObserved ? (left ? "removed" : "added") : "unknown", - left: left ? fieldIdentity(item) : null, - right: left ? null : fieldIdentity(item), - match: { - status: "unmatched", - basis: "none", - confidence: "unknown", - candidate_left_tokens: [], - candidate_right_tokens: [], - }, - evidence_links: [context.leftEvidenceId, context.rightEvidenceId], - limitations: absenceObserved - ? [] - : [ - `unknown-within-unobserved-page: The ${left ? "right" : "left"} field page is incomplete, so absence was not observed.`, - ], - }; -}; - -export const buildMethodItems = ( - matches: ReturnType, - context: ComparisonItemContext, -): { readonly items: MethodItem[]; readonly omitted: number } => { - const items: MethodItem[] = []; - for (const pair of matches.pairs) { - const dimensions = changedMethodDimensions(pair.left.item, pair.right.item); - items.push({ - item_id: `mmc_method_${sha256({ - left: pair.left.item.token, - right: pair.right.item.token, - basis: pair.basis, - })}`, - status: dimensions.length === 0 ? "unchanged" : "changed", - left: methodIdentity(pair.left.item), - right: methodIdentity(pair.right.item), - match: { - status: "matched", - basis: pair.basis, - confidence: pair.confidence, - candidate_left_tokens: [], - candidate_right_tokens: [], - }, - dimensions, - evidence_links: [context.leftEvidenceId, context.rightEvidenceId], - limitations: [], - }); - } - for (const ambiguous of matches.ambiguous) { - items.push({ - item_id: `mmc_method_${sha256({ - left: ambiguous.left.map(({ item }) => item.token), - right: ambiguous.right.map(({ item }) => item.token), - basis: ambiguous.basis, - })}`, - status: "unknown", - left: null, - right: null, - match: { - status: "ambiguous", - basis: ambiguous.basis, - confidence: "unknown", - candidate_left_tokens: ambiguous.left.map(({ item }) => item.token), - candidate_right_tokens: ambiguous.right.map(({ item }) => item.token), - }, - dimensions: ["availability"], - evidence_links: [context.leftEvidenceId, context.rightEvidenceId], - limitations: [ - "Multiple managed methods share the same non-name identity key; REA did not guess a token remap.", - ], - }); - } - for (const item of matches.leftOnly) - items.push(methodOnlyItem(item.item, context, true)); - for (const item of matches.rightOnly) - items.push(methodOnlyItem(item.item, context, false)); - return limitItems(items, context.limits.max_method_matches); -}; - -export const buildFieldItems = ( - matches: ReturnType, - context: ComparisonItemContext, -): { readonly items: FieldItem[]; readonly omitted: number } => { - const items: FieldItem[] = []; - for (const pair of matches.pairs) { - const changed = - pair.left.item.signature.raw_sha256 !== - pair.right.item.signature.raw_sha256 || - pair.left.item.flags !== pair.right.item.flags; - items.push({ - item_id: `mmc_field_${sha256({ - left: pair.left.item.token, - right: pair.right.item.token, - })}`, - status: changed ? "changed" : "unchanged", - left: fieldIdentity(pair.left.item), - right: fieldIdentity(pair.right.item), - match: { - status: "matched", - basis: pair.basis, - confidence: pair.confidence, - candidate_left_tokens: [], - candidate_right_tokens: [], - }, - evidence_links: [context.leftEvidenceId, context.rightEvidenceId], - limitations: [], - }); - } - for (const ambiguous of matches.ambiguous) - items.push({ - item_id: `mmc_field_${sha256({ - left: ambiguous.left.map(({ item }) => item.token), - right: ambiguous.right.map(({ item }) => item.token), - })}`, - status: "unknown", - left: null, - right: null, - match: { - status: "ambiguous", - basis: ambiguous.basis, - confidence: "unknown", - candidate_left_tokens: ambiguous.left.map(({ item }) => item.token), - candidate_right_tokens: ambiguous.right.map(({ item }) => item.token), - }, - evidence_links: [context.leftEvidenceId, context.rightEvidenceId], - limitations: [ - "Multiple managed fields share the same signature; REA did not guess a token remap from names.", - ], - }); - for (const item of matches.leftOnly) - items.push(fieldOnlyItem(item.item, context, true)); - for (const item of matches.rightOnly) - items.push(fieldOnlyItem(item.item, context, false)); - return limitItems(items, context.limits.max_field_matches); -}; - -const limitItems = ( - items: readonly Item[], - limit: number, -): { readonly items: Item[]; readonly omitted: number } => ({ - items: items.slice(0, limit), - omitted: Math.max(0, items.length - limit), -}); - export const keyMembers = ( left: ManagedMemberComparisonSide, right: ManagedMemberComparisonSide, diff --git a/src/domain/managedNativeVerification.ts b/src/domain/managedNativeVerification.ts index e355fba577..1a3ab07c19 100644 --- a/src/domain/managedNativeVerification.ts +++ b/src/domain/managedNativeVerification.ts @@ -59,8 +59,7 @@ export const verifyManagedNativeBoundaries = ( verifyPinvoke({ item, managedEvidenceId: managedEvidence.evidence_id, - symbols: native.symbols, - hasSupportedNativeEvidence: native.accepted > 0, + native, input, }), ); diff --git a/src/domain/managedNativeVerificationMatch.ts b/src/domain/managedNativeVerificationMatch.ts index ae98bd03c0..a9ee950bb8 100644 --- a/src/domain/managedNativeVerificationMatch.ts +++ b/src/domain/managedNativeVerificationMatch.ts @@ -144,24 +144,50 @@ const candidateNames = ( return [...names]; }; -interface CandidateSelection { +type PinvokeMatchField = + | "status" + | "basis" + | "confidence" + | "matched_native" + | "candidates"; +type PinvokeMatch< + Verification extends PinvokeVerification = PinvokeVerification, +> = Verification extends PinvokeVerification + ? Pick + : never; + +interface PinvokeCandidateMatch { readonly allCandidates: readonly NativeSymbol[]; - readonly candidates: readonly NativeSymbol[]; - readonly selected: NativeSymbol | null; - readonly exact: NativeSymbol | undefined; - readonly decorated: NativeSymbol | undefined; + readonly match: PinvokeMatch; } -const selectCandidates = ( +const matchPinvoke = ( managed: PinvokeImport, symbols: readonly NativeSymbol[], maxCandidates: number, -): CandidateSelection => { + supportedNativeEvidence: number, +): PinvokeCandidateMatch => { const names = candidateNames(managed); const allCandidates = symbols.filter((symbol) => names.some((name) => sameSymbolName(name, symbol.name)), ); - const candidates = allCandidates.slice(0, maxCandidates); + const [first, ...remaining] = allCandidates.slice(0, maxCandidates); + if (first === undefined) + return { + allCandidates, + match: { + status: "unresolved", + basis: + supportedNativeEvidence > 0 + ? "no-native-candidate" + : "unsupported-native-evidence", + confidence: "unknown", + matched_native: null, + candidates: [], + }, + }; + + const candidates: [NativeSymbol, ...NativeSymbol[]] = [first, ...remaining]; const exact = candidates.find( (symbol) => sameSymbolName(managed.import_name, symbol.name) && @@ -170,49 +196,41 @@ const selectCandidates = ( const decorated = candidates.find((symbol) => moduleCompatible(managed.import_scope_name, symbol), ); - const selected = exact ?? decorated ?? candidates[0] ?? null; - return { allCandidates, candidates, selected, exact, decorated }; -}; - -interface BasisAndStatus { - readonly basis: PinvokeVerification["basis"]; - readonly status: PinvokeVerification["status"]; - readonly confidence: PinvokeVerification["confidence"]; -} - -const basisAndStatus = ( - managed: PinvokeImport, - selection: CandidateSelection, - hasSupportedNativeEvidence: boolean, -): BasisAndStatus => { - const { selected, exact } = selection; - if (selected === null) - return { - basis: hasSupportedNativeEvidence - ? "no-native-candidate" - : "unsupported-native-evidence", - status: "unresolved", - confidence: "unknown", - }; + const selected = exact ?? decorated ?? first; if (!moduleCompatible(managed.import_scope_name, selected)) return { - basis: "module-mismatch", - status: "contradicted", - confidence: "unknown", + allCandidates, + match: { + status: "contradicted", + basis: "module-mismatch", + confidence: "unknown", + matched_native: selected, + candidates, + }, }; if (exact !== undefined) return { - basis: - selected.source === "macho-export" - ? "exact-export-name" - : "exact-function-name", - status: "verified", - confidence: "observed", + allCandidates, + match: { + status: "verified", + basis: + selected.source === "macho-export" + ? "exact-export-name" + : "exact-function-name", + confidence: "observed", + matched_native: selected, + candidates, + }, }; return { - basis: "decorated-name-candidate", - status: "inferred", - confidence: "inferred", + allCandidates, + match: { + basis: "decorated-name-candidate", + status: "inferred", + confidence: "inferred", + matched_native: selected, + candidates, + }, }; }; @@ -243,16 +261,17 @@ const pinvokeLimitations = ( interface VerifyPinvokeContext { readonly item: PinvokeImport; readonly managedEvidenceId: string; - readonly symbols: readonly NativeSymbol[]; - readonly hasSupportedNativeEvidence: boolean; + readonly native: { + readonly symbols: readonly NativeSymbol[]; + readonly accepted: number; + }; readonly input: ManagedNativeVerificationInput; } export const verifyPinvoke = ({ item, managedEvidenceId, - symbols, - hasSupportedNativeEvidence, + native, input, }: VerifyPinvokeContext): VerifiedPinvoke => { const managed = { @@ -266,17 +285,13 @@ export const verifyPinvoke = ({ call_convention: item.call_convention, declaration_verification: item.verification, }; - const selection = selectCandidates( + const selection = matchPinvoke( item, - symbols, + native.symbols, input.limits.max_candidates_per_import, + native.accepted, ); - const { status, basis, confidence } = basisAndStatus( - item, - selection, - hasSupportedNativeEvidence, - ); - const limitations = pinvokeLimitations(status, item); + const limitations = pinvokeLimitations(selection.match.status, item); return { verification: pinvokeVerificationSchema.parse({ item_id: `mnv_pinvoke_${digest({ @@ -284,23 +299,19 @@ export const verifyPinvoke = ({ token: item.token, importName: item.import_name, importScope: item.import_scope_name, - candidates: [...selection.candidates], + candidates: selection.match.candidates, })}`, managed, - status, - basis, - confidence, - matched_native: selection.selected, - candidates: selection.candidates, + ...selection.match, evidence_links: [ managedEvidenceId, - ...new Set(selection.candidates.map(({ evidence_id: id }) => id)), + ...new Set(selection.match.candidates.map(({ evidence_id: id }) => id)), ], limitations, }), omittedCandidates: Math.max( 0, - selection.allCandidates.length - selection.candidates.length, + selection.allCandidates.length - selection.match.candidates.length, ), }; }; @@ -353,12 +364,24 @@ export const buildVerificationResult = ({ const nativeBodyUnresolved = managed.native_implementations.items.filter( ({ boundary_kind: kind }) => kind !== "pinvoke", ).length; - const coverageStatus = + const coverage: ManagedNativeVerificationResult["coverage"] = omittedNativeObservations > 0 || omittedCandidates > 0 - ? "truncated" + ? { + status: "truncated", + omitted_native_observations: omittedNativeObservations, + omitted_candidates: omittedCandidates, + } : managed.coverage.state === "complete" && native.unsupported === 0 - ? "complete-within-inputs" - : "partial"; + ? { + status: "complete-within-inputs", + omitted_native_observations: 0, + omitted_candidates: 0, + } + : { + status: "partial", + omitted_native_observations: 0, + omitted_candidates: 0, + }; return { schema_version: 1 as const, algorithm: { @@ -394,11 +417,7 @@ export const buildVerificationResult = ({ reason: "Managed metadata tokens and RVAs are not translated to native provider addresses by this workflow; C++/CLI, ReadyToRun, and native-body mappings require explicit provider-supported bridge evidence.", }, - coverage: { - status: coverageStatus, - omitted_native_observations: omittedNativeObservations, - omitted_candidates: omittedCandidates, - }, + coverage, evidence_links: [ managedEvidence.evidence_id, ...input.native_observations diff --git a/src/domain/managedNativeVerificationSchemas.ts b/src/domain/managedNativeVerificationSchemas.ts index 5a1616e6e2..b734a051d1 100644 --- a/src/domain/managedNativeVerificationSchemas.ts +++ b/src/domain/managedNativeVerificationSchemas.ts @@ -8,22 +8,6 @@ const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u); const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u); const boundedTextSchema = z.string().min(1).max(4_096); -const matchStatusSchema = z.enum([ - "verified", - "inferred", - "unresolved", - "contradicted", -]); - -const matchBasisSchema = z.enum([ - "exact-export-name", - "exact-function-name", - "decorated-name-candidate", - "module-mismatch", - "no-native-candidate", - "unsupported-native-evidence", -]); - const nativeVerificationLimitsSchema = z.strictObject({ max_native_observations: z.number().int().min(1).max(50).default(20), max_candidates_per_import: z.number().int().min(1).max(100).default(25), @@ -41,7 +25,7 @@ const nativeSymbolSchema = z.strictObject({ export type NativeSymbol = z.infer; -export const pinvokeVerificationSchema = z.strictObject({ +const pinvokeVerificationContextShape = { item_id: z.string().regex(/^mnv_pinvoke_[a-f0-9]{64}$/u), managed: z.strictObject({ token: tokenSchema, @@ -62,14 +46,49 @@ export const pinvokeVerificationSchema = z.strictObject({ ]), declaration_verification: z.literal("managed-declaration-only"), }), - status: matchStatusSchema, - basis: matchBasisSchema, - confidence: z.enum(["observed", "inferred", "unknown"]), - matched_native: nativeSymbolSchema.nullable(), - candidates: z.array(nativeSymbolSchema).max(100), evidence_links: z.array(evidenceIdSchema).min(1).max(51), limitations: z.array(boundedTextSchema).max(100), -}); +}; + +const observedCandidatesSchema = z + .tuple([nativeSymbolSchema]) + .rest(nativeSymbolSchema) + .check(z.maxLength(100)); + +export const pinvokeVerificationSchema = z.discriminatedUnion("status", [ + z.strictObject({ + ...pinvokeVerificationContextShape, + status: z.literal("verified"), + basis: z.enum(["exact-export-name", "exact-function-name"]), + confidence: z.literal("observed"), + matched_native: nativeSymbolSchema, + candidates: observedCandidatesSchema, + }), + z.strictObject({ + ...pinvokeVerificationContextShape, + status: z.literal("inferred"), + basis: z.literal("decorated-name-candidate"), + confidence: z.literal("inferred"), + matched_native: nativeSymbolSchema, + candidates: observedCandidatesSchema, + }), + z.strictObject({ + ...pinvokeVerificationContextShape, + status: z.literal("unresolved"), + basis: z.enum(["no-native-candidate", "unsupported-native-evidence"]), + confidence: z.literal("unknown"), + matched_native: z.null(), + candidates: z.tuple([]), + }), + z.strictObject({ + ...pinvokeVerificationContextShape, + status: z.literal("contradicted"), + basis: z.literal("module-mismatch"), + confidence: z.literal("unknown"), + matched_native: nativeSymbolSchema, + candidates: observedCandidatesSchema, + }), +]); export type PinvokeVerification = z.infer; @@ -110,53 +129,126 @@ export type ManagedNativeVerificationInput = z.infer< typeof managedNativeVerificationInputSchema >; -/** Provider-neutral managed/native verification result. */ -export const managedNativeVerificationResultSchema = z.strictObject({ - schema_version: z.literal(1), - verification_id: z.string().regex(/^mnv_[a-f0-9]{64}$/u), - algorithm: z.strictObject({ - name: z.literal("rea-managed-native-verification"), - version: z.literal(1), - token_identity: z.literal("build-local"), - token_to_address_mapping: z.literal("not-inferred"), - }), - managed_boundary: z.strictObject({ - evidence_id: evidenceIdSchema, - artifact_sha256: digestSchema, - artifact_path: z.string().min(1), - mvid: cliMetadataGuidSchema.nullable(), - metadata_status: z.enum(["absent", "complete", "partial", "malformed"]), - pinvoke_imports_total: z.number().int().min(0), - native_implementations_total: z.number().int().min(0), - coverage_state: z.enum(["complete", "partial", "unavailable"]), - }), - native_observations: z.strictObject({ - total: z.number().int().min(1), - accepted: z.number().int().min(0), - unsupported: z.number().int().min(0), - symbols: z.number().int().min(0), - truncated: z.boolean(), - }), - summary: z.strictObject({ - verified: z.number().int().min(0), - inferred: z.number().int().min(0), - unresolved: z.number().int().min(0), - contradicted: z.number().int().min(0), - native_body_unresolved: z.number().int().min(0), - }), - pinvoke_imports: z.array(pinvokeVerificationSchema).max(50_000), - native_implementations: z.strictObject({ - unresolved: z.number().int().min(0), - reason: boundedTextSchema, - }), - coverage: z.strictObject({ - status: z.enum(["complete-within-inputs", "partial", "truncated"]), - omitted_native_observations: z.number().int().min(0), +const completeVerificationCoverageSchema = z.strictObject({ + status: z.literal("complete-within-inputs"), + omitted_native_observations: z.literal(0), + omitted_candidates: z.literal(0), +}); +const partialVerificationCoverageSchema = z.strictObject({ + status: z.literal("partial"), + omitted_native_observations: z.literal(0), + omitted_candidates: z.literal(0), +}); +const truncatedVerificationCoverageSchema = z.union([ + z.strictObject({ + status: z.literal("truncated"), + omitted_native_observations: z.number().int().positive(), omitted_candidates: z.number().int().min(0), }), - evidence_links: z.array(evidenceIdSchema).min(2).max(51), - limitations: z.array(boundedTextSchema).max(1_000), -}); + z.strictObject({ + status: z.literal("truncated"), + omitted_native_observations: z.literal(0), + omitted_candidates: z.number().int().positive(), + }), +]); +const verificationCoverageSchema = z.union([ + completeVerificationCoverageSchema, + partialVerificationCoverageSchema, + truncatedVerificationCoverageSchema, +]); + +/** Provider-neutral managed/native verification result. */ +export const managedNativeVerificationResultSchema = z + .strictObject({ + schema_version: z.literal(1), + verification_id: z.string().regex(/^mnv_[a-f0-9]{64}$/u), + algorithm: z.strictObject({ + name: z.literal("rea-managed-native-verification"), + version: z.literal(1), + token_identity: z.literal("build-local"), + token_to_address_mapping: z.literal("not-inferred"), + }), + managed_boundary: z.strictObject({ + evidence_id: evidenceIdSchema, + artifact_sha256: digestSchema, + artifact_path: z.string().min(1), + mvid: cliMetadataGuidSchema.nullable(), + metadata_status: z.enum(["absent", "complete", "partial", "malformed"]), + pinvoke_imports_total: z.number().int().min(0), + native_implementations_total: z.number().int().min(0), + coverage_state: z.enum(["complete", "partial", "unavailable"]), + }), + native_observations: z.strictObject({ + total: z.number().int().min(1), + accepted: z.number().int().min(0), + unsupported: z.number().int().min(0), + symbols: z.number().int().min(0), + truncated: z.boolean(), + }), + summary: z.strictObject({ + verified: z.number().int().min(0), + inferred: z.number().int().min(0), + unresolved: z.number().int().min(0), + contradicted: z.number().int().min(0), + native_body_unresolved: z.number().int().min(0), + }), + pinvoke_imports: z.array(pinvokeVerificationSchema).max(50_000), + native_implementations: z.strictObject({ + unresolved: z.number().int().min(0), + reason: boundedTextSchema, + }), + coverage: verificationCoverageSchema, + evidence_links: z.array(evidenceIdSchema).min(2).max(51), + limitations: z.array(boundedTextSchema).max(1_000), + }) + .superRefine((result, context) => { + const observedNativeCount = + result.native_observations.accepted + + result.native_observations.unsupported; + if ( + observedNativeCount + result.coverage.omitted_native_observations !== + result.native_observations.total + ) + context.addIssue({ + code: "custom", + path: ["native_observations"], + message: "Native observation counts must account for the total input", + }); + if ( + result.native_observations.truncated !== + result.coverage.omitted_native_observations > 0 + ) + context.addIssue({ + code: "custom", + path: ["native_observations", "truncated"], + message: + "Native observation truncation must match omitted observations", + }); + for (const status of [ + "verified", + "inferred", + "unresolved", + "contradicted", + ] as const) + if ( + result.summary[status] !== + result.pinvoke_imports.filter((item) => item.status === status).length + ) + context.addIssue({ + code: "custom", + path: ["summary", status], + message: `P/Invoke ${status} count must match the item results`, + }); + if ( + result.summary.native_body_unresolved !== + result.native_implementations.unresolved + ) + context.addIssue({ + code: "custom", + path: ["summary", "native_body_unresolved"], + message: "Native body summary must match unresolved implementations", + }); + }); export type ManagedNativeVerificationResult = z.infer< typeof managedNativeVerificationResultSchema diff --git a/tests/composition/setup-lifecycle/permissionPolicy.test.ts b/src/domain/permissionPolicy.test.ts similarity index 99% rename from tests/composition/setup-lifecycle/permissionPolicy.test.ts rename to src/domain/permissionPolicy.test.ts index e340cd3e5a..eebc3d876e 100644 --- a/tests/composition/setup-lifecycle/permissionPolicy.test.ts +++ b/src/domain/permissionPolicy.test.ts @@ -10,7 +10,7 @@ import { isPathContained, reloadPermissionCeilings, revokePermission, -} from "../../../src/domain/permissionPolicy.js"; +} from "./permissionPolicy.js"; describe("permission policy", () => { it("rejects sibling escapes for both POSIX and Windows path separators", () => { diff --git a/src/domain/processCapture.ts b/src/domain/processCapture.ts index 60a3f1da65..11d39b574c 100644 --- a/src/domain/processCapture.ts +++ b/src/domain/processCapture.ts @@ -6,11 +6,12 @@ import { normalizationSchema, } from "./processScenario.js"; import type { - ProcessReactiveOutcome, + ProcessReactiveStatus, ProcessReactiveTransitionRecord, } from "./processReactiveRuntime.js"; -import { PROCESS_REACTIVE_LIMITS } from "./processReactiveScenario.js"; +import { processReactiveRunSchema } from "./processCaptureReactiveSchema.js"; import type { ReplayTransitionRecord } from "./replayMachineRuntime.js"; +import { collectProcessCaptureIssues } from "./processCaptureValidation.js"; export * from "./processScenario.js"; @@ -45,22 +46,54 @@ export interface InteractionEvent { } /** One filesystem state used for before/after comparison. */ -export interface FileState { +interface FileStateIdentity { readonly path: string; - readonly type: "file" | "directory" | "symlink" | "other"; readonly mode: number; readonly size: number; - readonly sha256: string | null; - readonly symlink_target: string | null; } -interface FileEffect { +export type FileState = FileStateIdentity & + ( + | { + readonly type: "file"; + readonly sha256: string | null; + readonly symlink_target: null; + } + | { + readonly type: "symlink"; + readonly sha256: null; + readonly symlink_target: string; + } + | { + readonly type: "directory" | "other"; + readonly sha256: null; + readonly symlink_target: null; + } + ); + +interface FileEffectIdentity { readonly path: string; - readonly status: "created" | "modified" | "deleted" | "unchanged"; - readonly before: FileState | null; - readonly after: FileState | null; } +type FileEffect = FileEffectIdentity & + ( + | { + readonly status: "created"; + readonly before: null; + readonly after: FileState; + } + | { + readonly status: "deleted"; + readonly before: FileState; + readonly after: null; + } + | { + readonly status: "modified" | "unchanged"; + readonly before: FileState; + readonly after: FileState; + } + ); + /** A sampled owned-process observation; sampling cannot prove syscall completeness. */ export interface ProcessSample { readonly at_ms: number; @@ -156,13 +189,26 @@ export type RecordProcessCaptureEvent = ( index: number, ) => void; +/** Observed process-tree settlement and the cleanup required by that state. */ +export type ProcessSettlement = + | { + readonly state: "quiesced"; + readonly elapsed_ms: number; + readonly cleanup_outcome: "not_required"; + } + | { + readonly state: "alive_at_deadline" | "unverifiable"; + readonly elapsed_ms: number; + readonly cleanup_outcome: "cleaned" | "failed"; + }; + /** * Process Capture v4 observation set. * * `truncated` and `residual_unknowns` are semantic evidence: consumers must not * infer equivalence from matching bounded observations when either is present. */ -export interface ProcessCapture { +export interface UnverifiedProcessCapture { readonly schema_version: 4; readonly manifest: { readonly rea_version: string; @@ -192,23 +238,19 @@ export interface ProcessCapture { readonly signal: number | null; readonly reason: "exited" | "timeout" | "idle_timeout"; }; - readonly settlement: { - readonly state: "quiesced" | "alive_at_deadline" | "unverifiable"; - readonly elapsed_ms: number; - readonly cleanup_outcome: "not_required" | "cleaned" | "failed"; - }; + readonly settlement: ProcessSettlement; readonly process_samples: readonly ProcessSample[]; readonly filesystem_checkpoints: readonly FilesystemCheckpoint[]; readonly shim_events: readonly ShimEvent[]; readonly protocol_events: readonly ProtocolEvent[]; readonly replay_transitions: readonly ReplayTransitionRecord[]; - readonly reactive_run: { - readonly status: "running" | "finished"; - readonly outcome: ProcessReactiveOutcome | null; - readonly active_state: string; - readonly transitions: readonly ProcessReactiveTransitionRecord[]; - readonly controls: readonly ProcessReactiveControlRecord[]; - } | null; + readonly reactive_run: + | ({ + readonly active_state: string; + readonly transitions: readonly ProcessReactiveTransitionRecord[]; + readonly controls: readonly ProcessReactiveControlRecord[]; + } & ProcessReactiveStatus) + | null; /** * Global observation order across independently recorded collections. * @@ -239,285 +281,244 @@ export interface ProcessCapture { }; } -const fileStateSchema = z.object({ +const fileStateShape = { path: z.string(), - type: z.enum(["file", "directory", "symlink", "other"]), mode: z.number().int().nonnegative(), size: z.number().int().nonnegative(), - sha256: z - .string() - .regex(/^[a-f0-9]{64}$/u) - .nullable(), - symlink_target: z.string().nullable(), -}); -const fileEffectSchema = z.object({ - path: z.string(), - status: z.enum(["created", "modified", "deleted", "unchanged"]), - before: fileStateSchema.nullable(), - after: fileStateSchema.nullable(), -}); - +}; +const fileStateSchema = z.discriminatedUnion("type", [ + z.object({ + ...fileStateShape, + type: z.literal("file"), + sha256: z + .string() + .regex(/^[a-f0-9]{64}$/u) + .nullable(), + symlink_target: z.null(), + }), + z.object({ + ...fileStateShape, + type: z.literal("symlink"), + sha256: z.null(), + symlink_target: z.string(), + }), + z.object({ + ...fileStateShape, + type: z.enum(["directory", "other"]), + sha256: z.null(), + symlink_target: z.null(), + }), +]); +const fileEffectSchema = z.discriminatedUnion("status", [ + z.object({ + path: z.string(), + status: z.literal("created"), + before: z.null(), + after: fileStateSchema, + }), + z.object({ + path: z.string(), + status: z.literal("deleted"), + before: fileStateSchema, + after: z.null(), + }), + z.object({ + path: z.string(), + status: z.enum(["modified", "unchanged"]), + before: fileStateSchema, + after: fileStateSchema, + }), +]); /** Exact serialized shape of a bounded process capture. */ -export const processCaptureSchema: z.ZodType = z.object({ - schema_version: z.literal(4, { - error: LEGACY_PROCESS_CAPTURE_MESSAGE, - }), - manifest: z.object({ - rea_version: z.string().min(1), - provider_version: z.string().min(1), - platform: z.string().min(1), - architecture: z.string().min(1), - pty_backend: z.literal("node-pty"), - started_at: z.iso.datetime(), - completed_at: z.iso.datetime(), - scenario: z.record(z.string(), jsonValueSchema), - comparison_contract: z.record(z.string(), jsonValueSchema), - shim_plan: z.array(jsonValueSchema), - replay_plan: z.record(z.string(), jsonValueSchema), - full_scenario_sha256: z.string().regex(/^[a-f0-9]{64}$/u), - comparison_contract_sha256: z.string().regex(/^[a-f0-9]{64}$/u), - executable_sha256: z.string().regex(/^[a-f0-9]{64}$/u), - normalization_sha256: z.string().regex(/^[a-f0-9]{64}$/u), - shim_plan_sha256: z.string().regex(/^[a-f0-9]{64}$/u), - replay_plan_sha256: z.string().regex(/^[a-f0-9]{64}$/u), - }), - normalization: normalizationSchema, - frames: z.array( - z.object({ - sequence: z.number().int().nonnegative(), - at_ms: z.number().int().nonnegative(), - data: z.string(), +const processCaptureShapeSchema: z.ZodType = z.object( + { + schema_version: z.literal(4, { + error: LEGACY_PROCESS_CAPTURE_MESSAGE, }), - ), - rendered_frames: z.array( - z.object({ - sequence: z.number().int().nonnegative(), - at_ms: z.number().int().nonnegative(), - columns: z.number().int().positive(), - rows: z.number().int().positive(), - cursor_x: z.number().int().nonnegative(), - cursor_y: z.number().int().nonnegative(), - active_buffer: z.enum(["normal", "alternate"]), - lines: z.array(z.string()), - serialized_state: z.string(), + manifest: z.object({ + rea_version: z.string().min(1), + provider_version: z.string().min(1), + platform: z.string().min(1), + architecture: z.string().min(1), + pty_backend: z.literal("node-pty"), + started_at: z.iso.datetime(), + completed_at: z.iso.datetime(), + scenario: z.record(z.string(), jsonValueSchema), + comparison_contract: z.record(z.string(), jsonValueSchema), + shim_plan: z.array(jsonValueSchema), + replay_plan: z.record(z.string(), jsonValueSchema), + full_scenario_sha256: z.string().regex(/^[a-f0-9]{64}$/u), + comparison_contract_sha256: z.string().regex(/^[a-f0-9]{64}$/u), + executable_sha256: z.string().regex(/^[a-f0-9]{64}$/u), + normalization_sha256: z.string().regex(/^[a-f0-9]{64}$/u), + shim_plan_sha256: z.string().regex(/^[a-f0-9]{64}$/u), + replay_plan_sha256: z.string().regex(/^[a-f0-9]{64}$/u), }), - ), - interaction_events: z.array( - z.object({ - sequence: z.number().int().nonnegative(), - scheduled_at_ms: z.number().int().nonnegative(), - dispatched_at_ms: z.number().int().nonnegative(), - type: z.enum(["input", "resize", "stdin_close", "signal"]), - data: z.string(), - outcome: z.enum(["dispatched", "target_exited", "failed"]), - }), - ), - exit: z.object({ - code: z.number().int().nullable(), - signal: z.number().int().nullable(), - reason: z.enum(["exited", "timeout", "idle_timeout"]), - }), - settlement: z.object({ - state: z.enum(["quiesced", "alive_at_deadline", "unverifiable"]), - elapsed_ms: z.number().int().nonnegative(), - cleanup_outcome: z.enum(["not_required", "cleaned", "failed"]), - }), - process_samples: z.array( - z.object({ - at_ms: z.number().int().nonnegative(), - pid: z.number().int().positive(), - parent_pid: z.number().int().nonnegative(), - command: z.string(), - process_group_id: z.number().int().positive().nullable(), - session_id: z.number().int().nonnegative().nullable(), - }), - ), - filesystem_checkpoints: z.array( - z.object({ - name: z.string(), - at_ms: z.number().int().nonnegative(), - files: z.array(fileStateSchema), - effects: z.array(fileEffectSchema), - truncated: z.boolean(), - }), - ), - shim_events: z.array( - z.object({ - sequence: z.number().int().nonnegative(), - at_ms: z.number().int().nonnegative(), - command: z.string(), - route_index: z.number().int().nonnegative().nullable(), - arguments: z.array(z.string()), - working_directory: z.string(), - outcome: z.enum(["matched", "unmatched", "exhausted"]), - }), - ), - protocol_events: z.array( - z.object({ - sequence: z.number().int().nonnegative(), - at_ms: z.number().int().nonnegative(), - protocol: z.enum(["http", "websocket"]), - direction: z.enum(["request", "response", "received", "sent"]), - method: z.string().nullable(), - path: z.string().nullable(), - data: z.string(), - outcome: z.enum([ - "matched", - "unmatched", - "script_exhausted", - "disconnected", - "invalid_state", - "guard_failed", - "transition_exhausted", - "invalid_capture", - "unexpected_reconnect", - "limit_exhausted", - ]), - }), - ), - replay_transitions: z - .array( + normalization: normalizationSchema, + frames: z.array( z.object({ sequence: z.number().int().nonnegative(), at_ms: z.number().int().nonnegative(), - transition_id: z.string().min(1).max(64), - state_before: z.string().min(1).max(64), - state_after: z.string().min(1).max(64), - sensitive_aliases: z.array(z.string().min(1).max(64)).max(32), + data: z.string(), }), - ) - .default([]), - reactive_run: z - .object({ - status: z.enum(["running", "finished"]), - outcome: z - .enum([ - "passed", - "predicate_timeout", - "scenario_deadline", - "ambiguous_match", - "action_rejected", - "target_lost", - "capture_incomplete", - "cancelled", - "cleanup_failed", - ]) - .nullable(), - active_state: z.string().min(1).max(64), - controls: z - .array( - z.object({ - sequence: z.number().int().nonnegative(), - kind: z.enum([ - "state_deadline", - "scenario_deadline", - "target_lost", - "cancelled", - "cleanup_failed", - ]), - after_capture_order: z.number().int().min(-1), - }), - ) - .default([]), - transitions: z - .array( - z.object({ - sequence: z.number().int().nonnegative(), - transition_id: z.string().min(1).max(64), - state_before: z.string().min(1).max(64), - state_after: z.string().min(1).max(64).nullable(), - outcome: z - .enum([ - "passed", - "predicate_timeout", - "scenario_deadline", - "ambiguous_match", - "action_rejected", - "target_lost", - "capture_incomplete", - "cancelled", - "cleanup_failed", - ]) - .nullable(), - trigger_event_ids: z - .array(z.string().min(1)) - .max(PROCESS_REACTIVE_LIMITS.predicates), - action_event_ids: z - .array(z.string().min(1)) - .max(PROCESS_REACTIVE_LIMITS.actionsPerTransition), - action_types: z - .array( - z.enum([ - "send_input", - "resize", - "close_stdin", - "send_signal", - "checkpoint", - ]), - ) - .max(PROCESS_REACTIVE_LIMITS.actionsPerTransition), - }), - ) - .max(PROCESS_REACTIVE_LIMITS.transitions), - }) - .nullable() - .default(null), - event_journal: z - .array( + ), + rendered_frames: z.array( z.object({ - capture_order: z.number().int().nonnegative(), - collection: z.enum(PROCESS_CAPTURE_EVENT_COLLECTIONS), - index: z.number().int().nonnegative(), + sequence: z.number().int().nonnegative(), + at_ms: z.number().int().nonnegative(), + columns: z.number().int().positive(), + rows: z.number().int().positive(), + cursor_x: z.number().int().nonnegative(), + cursor_y: z.number().int().nonnegative(), + active_buffer: z.enum(["normal", "alternate"]), + lines: z.array(z.string()), + serialized_state: z.string(), }), - ) - .default([]), - files_before: z.array(fileStateSchema), - files_after: z.array(fileStateSchema), - filesystem_effects: z.array(fileEffectSchema), - truncated: z.boolean(), - limitations: z.array(z.string()), - residual_unknowns: z.array( - z.object({ - scope: z.enum([ - "terminal", - "interaction", - "exit", - "process", - "filesystem", - "protocol", - "shim", - "cleanup", - "network", - ]), - reason: z.string(), + ), + interaction_events: z.array( + z.object({ + sequence: z.number().int().nonnegative(), + scheduled_at_ms: z.number().int().nonnegative(), + dispatched_at_ms: z.number().int().nonnegative(), + type: z.enum(["input", "resize", "stdin_close", "signal"]), + data: z.string(), + outcome: z.enum(["dispatched", "target_exited", "failed"]), + }), + ), + exit: z.object({ + code: z.number().int().nullable(), + signal: z.number().int().nullable(), + reason: z.enum(["exited", "timeout", "idle_timeout"]), }), - ), - cleanup: z.object({ - owned_process_group: z.literal("verified"), - temporary_root: z.literal("removed"), - }), -}); + settlement: z.discriminatedUnion("state", [ + z.object({ + state: z.literal("quiesced"), + elapsed_ms: z.number().int().nonnegative(), + cleanup_outcome: z.literal("not_required"), + }), + z.object({ + state: z.enum(["alive_at_deadline", "unverifiable"]), + elapsed_ms: z.number().int().nonnegative(), + cleanup_outcome: z.enum(["cleaned", "failed"]), + }), + ]), + process_samples: z.array( + z.object({ + at_ms: z.number().int().nonnegative(), + pid: z.number().int().positive(), + parent_pid: z.number().int().nonnegative(), + command: z.string(), + process_group_id: z.number().int().positive().nullable(), + session_id: z.number().int().nonnegative().nullable(), + }), + ), + filesystem_checkpoints: z.array( + z.object({ + name: z.string(), + at_ms: z.number().int().nonnegative(), + files: z.array(fileStateSchema), + effects: z.array(fileEffectSchema), + truncated: z.boolean(), + }), + ), + shim_events: z.array( + z.object({ + sequence: z.number().int().nonnegative(), + at_ms: z.number().int().nonnegative(), + command: z.string(), + route_index: z.number().int().nonnegative().nullable(), + arguments: z.array(z.string()), + working_directory: z.string(), + outcome: z.enum(["matched", "unmatched", "exhausted"]), + }), + ), + protocol_events: z.array( + z.object({ + sequence: z.number().int().nonnegative(), + at_ms: z.number().int().nonnegative(), + protocol: z.enum(["http", "websocket"]), + direction: z.enum(["request", "response", "received", "sent"]), + method: z.string().nullable(), + path: z.string().nullable(), + data: z.string(), + outcome: z.enum([ + "matched", + "unmatched", + "script_exhausted", + "disconnected", + "invalid_state", + "guard_failed", + "transition_exhausted", + "invalid_capture", + "unexpected_reconnect", + "limit_exhausted", + ]), + }), + ), + replay_transitions: z + .array( + z.object({ + sequence: z.number().int().nonnegative(), + at_ms: z.number().int().nonnegative(), + transition_id: z.string().min(1).max(64), + state_before: z.string().min(1).max(64), + state_after: z.string().min(1).max(64), + sensitive_aliases: z.array(z.string().min(1).max(64)).max(32), + }), + ) + .default([]), + reactive_run: processReactiveRunSchema.nullable().default(null), + event_journal: z + .array( + z.object({ + capture_order: z.number().int().nonnegative(), + collection: z.enum(PROCESS_CAPTURE_EVENT_COLLECTIONS), + index: z.number().int().nonnegative(), + }), + ) + .default([]), + files_before: z.array(fileStateSchema), + files_after: z.array(fileStateSchema), + filesystem_effects: z.array(fileEffectSchema), + truncated: z.boolean(), + limitations: z.array(z.string()), + residual_unknowns: z.array( + z.object({ + scope: z.enum([ + "terminal", + "interaction", + "exit", + "process", + "filesystem", + "protocol", + "shim", + "cleanup", + "network", + ]), + reason: z.string(), + }), + ), + cleanup: z.object({ + owned_process_group: z.literal("verified"), + temporary_root: z.literal("removed"), + }), + }, +); -export { validateProcessCapture } from "./processCaptureValidation.js"; -import { validateProcessCapture } from "./processCaptureValidation.js"; +/** Exact serialized shape plus all Process Capture v4 semantic invariants. */ +export const processCaptureSchema = processCaptureShapeSchema.superRefine( + (capture, context) => { + for (const issue of collectProcessCaptureIssues(capture)) + context.addIssue({ + code: "custom", + path: issue.path.split("."), + message: issue.message, + }); + }, +); -/** Parse unknown input as v4 and reject invalid commitments or semantics. */ -export const parseProcessCapture = (input: unknown): ProcessCapture => { - if ( - typeof input === "object" && - input !== null && - "schema_version" in input && - input.schema_version === 3 - ) - throw new TypeError(LEGACY_PROCESS_CAPTURE_MESSAGE); - const capture = processCaptureSchema.parse(input); - const issues = validateProcessCapture(capture); - if (issues.length > 0) - throw new TypeError( - `Invalid Process Capture v4: ${issues.map(({ path, message }) => `${path}: ${message}`).join("; ")}`, - ); - return capture; -}; +export { parseProcessCapture } from "./processCaptureParsing.js"; +export type { ProcessCapture } from "./processCaptureParsing.js"; export { compareProcessCaptures, diff --git a/src/domain/processCaptureParsing.ts b/src/domain/processCaptureParsing.ts new file mode 100644 index 0000000000..e3e3ca5195 --- /dev/null +++ b/src/domain/processCaptureParsing.ts @@ -0,0 +1,47 @@ +import { + LEGACY_PROCESS_CAPTURE_MESSAGE, + processCaptureSchema, + type UnverifiedProcessCapture, +} from "./processCapture.js"; + +declare class ProcessCaptureProof { + private readonly verified: never; +} + +/** Semantically verified Process Capture v4 value. */ +export type ProcessCapture = UnverifiedProcessCapture & ProcessCaptureProof; + +const verifiedCaptures = new WeakSet(); + +const isVerifiedCapture = ( + capture: UnverifiedProcessCapture, +): capture is ProcessCapture => verifiedCaptures.has(capture); + +const attachProof = (capture: UnverifiedProcessCapture): ProcessCapture => { + verifiedCaptures.add(capture); + if (isVerifiedCapture(capture)) return capture; + throw new TypeError("Process Capture proof ownership failed"); +}; + +/** Parse unknown input as v4 and reject invalid commitments or semantics. */ +export const parseProcessCapture = (input: unknown): ProcessCapture => { + if ( + typeof input === "object" && + input !== null && + "schema_version" in input && + input.schema_version === 3 + ) + throw new TypeError(LEGACY_PROCESS_CAPTURE_MESSAGE); + const parsed = processCaptureSchema.safeParse(input); + if (parsed.success) return attachProof(parsed.data); + const issues = parsed.error.issues.flatMap((issue) => + issue.code === "custom" + ? [{ path: issue.path.join("."), message: issue.message }] + : [], + ); + if (issues.length > 0) + throw new TypeError( + `Invalid Process Capture v4: ${issues.map(({ path, message }) => `${path}: ${message}`).join("; ")}`, + ); + throw parsed.error; +}; diff --git a/src/domain/processCaptureReactiveSchema.ts b/src/domain/processCaptureReactiveSchema.ts new file mode 100644 index 0000000000..dfbfa5c6c1 --- /dev/null +++ b/src/domain/processCaptureReactiveSchema.ts @@ -0,0 +1,87 @@ +import { z } from "zod"; + +import { PROCESS_REACTIVE_LIMITS } from "./processReactiveScenario.js"; + +const processReactiveOutcomeSchema = z.enum([ + "passed", + "predicate_timeout", + "scenario_deadline", + "ambiguous_match", + "action_rejected", + "target_lost", + "capture_incomplete", + "cancelled", + "cleanup_failed", +]); + +const processReactiveTransitionShape = { + sequence: z.number().int().nonnegative(), + transition_id: z.string().min(1).max(64), + state_before: z.string().min(1).max(64), + trigger_event_ids: z + .array(z.string().min(1)) + .max(PROCESS_REACTIVE_LIMITS.predicates), + action_event_ids: z + .array(z.string().min(1)) + .max(PROCESS_REACTIVE_LIMITS.actionsPerTransition), + action_types: z + .array( + z.enum([ + "send_input", + "resize", + "close_stdin", + "send_signal", + "checkpoint", + ]), + ) + .max(PROCESS_REACTIVE_LIMITS.actionsPerTransition), +}; + +const processReactiveTransitionSchema = z.union([ + z.object({ + ...processReactiveTransitionShape, + state_after: z.string().min(1).max(64), + outcome: z.null(), + }), + z.object({ + ...processReactiveTransitionShape, + state_after: z.null(), + outcome: z.literal("passed"), + }), +]); + +const processReactiveRunShape = { + active_state: z.string().min(1).max(64), + controls: z + .array( + z.object({ + sequence: z.number().int().nonnegative(), + kind: z.enum([ + "state_deadline", + "scenario_deadline", + "target_lost", + "cancelled", + "cleanup_failed", + ]), + after_capture_order: z.number().int().min(-1), + }), + ) + .default([]), + transitions: z + .array(processReactiveTransitionSchema) + .max(PROCESS_REACTIVE_LIMITS.transitions), +}; + +/** Serialized reactive reducer state admitted by Process Capture v4. */ +export const processReactiveRunSchema = z.discriminatedUnion("status", [ + z.object({ + status: z.literal("running"), + outcome: z.null(), + ...processReactiveRunShape, + }), + z.object({ + status: z.literal("finished"), + outcome: processReactiveOutcomeSchema, + ...processReactiveRunShape, + }), +]); diff --git a/src/domain/processCaptureReactiveValidation.ts b/src/domain/processCaptureReactiveValidation.ts index 62a5a791c4..7da2c24471 100644 --- a/src/domain/processCaptureReactiveValidation.ts +++ b/src/domain/processCaptureReactiveValidation.ts @@ -1,6 +1,6 @@ import canonicalize from "canonicalize"; -import type { ProcessCapture } from "./processCapture.js"; +import type { UnverifiedProcessCapture } from "./processCapture.js"; import { projectProcessObservation, type ProcessObservation, @@ -23,12 +23,12 @@ type RequireInvariant = ( path: string, message: string, ) => void; -type ReactiveRun = NonNullable; +type ReactiveRun = NonNullable; type ReactiveTransition = ReactiveRun["transitions"][number]; const admittedCollection = ( collection: NonNullable< - ProcessCapture["event_journal"] + UnverifiedProcessCapture["event_journal"] >[number]["collection"], ): boolean => [ @@ -41,7 +41,7 @@ const admittedCollection = ( ].includes(collection); const reactiveObservations = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, ): readonly ProcessObservation[] => (capture.event_journal ?? []).flatMap((location) => { if (!admittedCollection(location.collection)) return []; @@ -249,7 +249,7 @@ const validateControls = ( /** Validate one capture's reactive journal by replaying the production reducer. */ export const validateProcessCaptureReactiveRun = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, require: RequireInvariant, ): void => { const declared = capture.manifest.scenario["reactive"]; diff --git a/src/domain/processCaptureValidation.ts b/src/domain/processCaptureValidation.ts index 5a5d818ed3..7a3709f625 100644 --- a/src/domain/processCaptureValidation.ts +++ b/src/domain/processCaptureValidation.ts @@ -1,4 +1,4 @@ -import type { ProcessCapture } from "./processCapture.js"; +import type { UnverifiedProcessCapture } from "./processCapture.js"; import { validateProcessCaptureReactiveRun } from "./processCaptureReactiveValidation.js"; import { replayMachineSchema, type ReplayMachine } from "./replayMachine.js"; import { digestProcessCommitment } from "./processScenario.js"; @@ -24,13 +24,13 @@ const orderedTimestamps = ( }); const transitionsAreContiguous = ( - previous: ProcessCapture["replay_transitions"][number] | undefined, - current: ProcessCapture["replay_transitions"][number], + previous: UnverifiedProcessCapture["replay_transitions"][number] | undefined, + current: UnverifiedProcessCapture["replay_transitions"][number], ): boolean => previous !== undefined && previous.state_after === current.state_before; const validateCommitments = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, require: RequireInvariant, ): void => { const { manifest } = capture; @@ -54,7 +54,7 @@ const validateCommitments = ( }; const validateOrdering = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, require: RequireInvariant, ): void => { for (const [name, values] of [ @@ -81,10 +81,12 @@ const validateOrdering = ( }; const journalCollectionSizes = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, ): Readonly< Record< - NonNullable[number]["collection"], + NonNullable< + UnverifiedProcessCapture["event_journal"] + >[number]["collection"], number > > => ({ @@ -100,7 +102,7 @@ const journalCollectionSizes = ( }); const validateEventJournal = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, require: RequireInvariant, ): void => { const journal = capture.event_journal ?? []; @@ -129,7 +131,7 @@ const validateEventJournal = ( }; const validateLifecycle = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, require: RequireInvariant, ): void => { const checkpointNames = capture.filesystem_checkpoints.map( @@ -146,15 +148,9 @@ const validateLifecycle = ( require(capture.exit.reason === "exited" || capture.exit.code === null, "exit", "deadline termination cannot declare a normal exit code"); - require(capture.settlement.state !== "quiesced" || - capture.settlement.cleanup_outcome === - "not_required", "settlement.cleanup_outcome", "quiesced settlement cannot require cleanup"); - require(capture.settlement.state === "quiesced" || - capture.settlement.cleanup_outcome !== - "not_required", "settlement.cleanup_outcome", "non-quiesced settlement must report cleanup"); }; -const shimPlans = (capture: ProcessCapture) => +const shimPlans = (capture: UnverifiedProcessCapture) => capture.manifest.shim_plan.flatMap((shim) => typeof shim === "object" && shim !== null && @@ -171,7 +167,7 @@ const shimPlans = (capture: ProcessCapture) => ); const validateShimEvents = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, require: RequireInvariant, ): void => { const plans = shimPlans(capture); @@ -215,7 +211,7 @@ const machinePlan = ( const matchesHttpPlan = ( value: unknown, - event: ProcessCapture["protocol_events"][number], + event: UnverifiedProcessCapture["protocol_events"][number], ): boolean => { if (!isRecord(value)) return false; const route = isRecord(value["trigger"]) ? value["trigger"] : value; @@ -227,7 +223,7 @@ const matchesHttpPlan = ( }; const validateMatchedHttpEvents = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, plans: readonly unknown[], require: RequireInvariant, ): void => { @@ -245,7 +241,7 @@ const validateMatchedHttpEvents = ( }; const validateReplayEvents = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, require: RequireInvariant, ): void => { const replayPlan = capture.manifest.replay_plan; @@ -312,8 +308,8 @@ const validateReplayEvents = ( }; /** Recompute v4 commitments and cross-field invariants without side effects. */ -export const validateProcessCapture = ( - capture: ProcessCapture, +export const collectProcessCaptureIssues = ( + capture: UnverifiedProcessCapture, ): readonly ProcessCaptureValidationIssue[] => { const issues: ProcessCaptureValidationIssue[] = []; const require: RequireInvariant = (condition, path, message) => { diff --git a/src/domain/processComparison.ts b/src/domain/processComparison.ts index 6639afa545..ab5848fc59 100644 --- a/src/domain/processComparison.ts +++ b/src/domain/processComparison.ts @@ -2,7 +2,6 @@ import canonicalize from "canonicalize"; import { z } from "zod"; import type { ProcessCapture } from "./processCapture.js"; -import { validateProcessCapture } from "./processCapture.js"; import { jsonValueSchema } from "./jsonValue.js"; import { compareProcessTraces, @@ -244,13 +243,6 @@ const assertComparable = ( right: ProcessCapture, options: { readonly maxCaptureAgeMs?: number; readonly now?: () => number }, ): void => { - const invalid = [ - ...validateProcessCapture(left), - ...validateProcessCapture(right), - ]; - const firstInvalid = invalid.at(0); - if (firstInvalid !== undefined) - throw new TypeError(`Invalid Process Capture v4: ${firstInvalid.path}`); if ( left.schema_version !== right.schema_version || left.manifest.comparison_contract_sha256 !== diff --git a/src/domain/processObservation.ts b/src/domain/processObservation.ts index a0a135d259..568719e3b4 100644 --- a/src/domain/processObservation.ts +++ b/src/domain/processObservation.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { jsonValueSchema, type JsonValue } from "./jsonValue.js"; -import type { ProcessCapture } from "./processCapture.js"; +import type { UnverifiedProcessCapture } from "./processCapture.js"; /** Process-capture observation families shared by live drivers and trace assertions. */ export const processObservationSourceSchema = z.enum([ @@ -136,7 +136,7 @@ export const processObservationSubject = ( }; const projectedRecord = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, location: ProcessObservationLocation, ): ProjectedRecord | null => { const projected = (() => { @@ -208,7 +208,7 @@ const projectedRecord = ( /** Project one validated capture-journal reference into the shared observation shape. */ export const projectProcessObservation = ( - capture: ProcessCapture, + capture: UnverifiedProcessCapture, location: ProcessObservationLocation, ): ProcessObservation | null => { const projected = projectedRecord(capture, location); diff --git a/tests/composition/process-capture/processReactiveRuntime.test.ts b/src/domain/processReactiveRuntime.test.ts similarity index 97% rename from tests/composition/process-capture/processReactiveRuntime.test.ts rename to src/domain/processReactiveRuntime.test.ts index 642433f93c..f512fc53d2 100644 --- a/tests/composition/process-capture/processReactiveRuntime.test.ts +++ b/src/domain/processReactiveRuntime.test.ts @@ -2,17 +2,17 @@ import { describe, expect, it } from "vitest"; import { createProcessObservation, type ProcessObservationSource, -} from "../../../src/domain/processObservation.js"; +} from "./processObservation.js"; import { commitProcessReactiveProposal, createProcessReactiveSnapshot, reduceProcessReactiveScenario, -} from "../../../src/domain/processReactiveRuntime.js"; +} from "./processReactiveRuntime.js"; import { processReactiveScenarioSchema, type ProcessReactiveAction, type ProcessReactiveScenario, -} from "../../../src/domain/processReactiveScenario.js"; +} from "./processReactiveScenario.js"; const terminalTrigger = (literal = "Ready") => ({ kind: "terminal_text" as const, view: "decoded" as const, diff --git a/src/domain/processReactiveRuntime.ts b/src/domain/processReactiveRuntime.ts index 38e85576c8..ce8993b3ee 100644 --- a/src/domain/processReactiveRuntime.ts +++ b/src/domain/processReactiveRuntime.ts @@ -19,18 +19,30 @@ export type ProcessReactiveOutcome = | "cancelled" | "cleanup_failed"; -/** One deterministic scenario transition suitable for later Evidence projection. */ -export interface ProcessReactiveTransitionRecord { +/** Lifecycle state shared by the reducer snapshot and its durable projection. */ +export type ProcessReactiveStatus = + | { readonly status: "running"; readonly outcome: null } + | { + readonly status: "finished"; + readonly outcome: ProcessReactiveOutcome; + }; + +interface ProcessReactiveTransitionState { readonly sequence: number; readonly transition_id: string; readonly state_before: string; - readonly state_after: string | null; - readonly outcome: ProcessReactiveOutcome | null; readonly trigger_event_ids: readonly string[]; readonly action_event_ids: readonly string[]; readonly action_types: readonly ProcessReactiveAction["type"][]; } +/** One deterministic scenario transition suitable for later Evidence projection. */ +export type ProcessReactiveTransitionRecord = ProcessReactiveTransitionState & + ( + | { readonly state_after: string; readonly outcome: null } + | { readonly state_after: null; readonly outcome: "passed" } + ); + interface Counter { readonly id: string; readonly count: number; @@ -42,10 +54,7 @@ interface ReactiveCheckpoint { readonly capture_order: number; } -/** Immutable reducer state owned by one validated reactive scenario run. */ -export interface ProcessReactiveSnapshot { - readonly status: "running" | "finished"; - readonly outcome: ProcessReactiveOutcome | null; +interface ProcessReactiveSnapshotState { readonly active_state: string; readonly state_entry_capture_order: number; readonly observations: readonly ProcessObservation[]; @@ -56,6 +65,10 @@ export interface ProcessReactiveSnapshot { readonly transitions: readonly ProcessReactiveTransitionRecord[]; } +/** Immutable reducer state owned by one validated reactive scenario run. */ +export type ProcessReactiveSnapshot = ProcessReactiveSnapshotState & + ProcessReactiveStatus; + /** External fact offered to the pure reducer. */ export type ProcessReactiveInput = | { readonly kind: "observation"; readonly observation: ProcessObservation } diff --git a/tests/composition/process-capture/processReactiveRuntimePart2.test.ts b/src/domain/processReactiveRuntimePart2.test.ts similarity index 97% rename from tests/composition/process-capture/processReactiveRuntimePart2.test.ts rename to src/domain/processReactiveRuntimePart2.test.ts index f4f9bb331f..6599eb7a69 100644 --- a/tests/composition/process-capture/processReactiveRuntimePart2.test.ts +++ b/src/domain/processReactiveRuntimePart2.test.ts @@ -2,17 +2,17 @@ import { describe, expect, it } from "vitest"; import { createProcessObservation, type ProcessObservationSource, -} from "../../../src/domain/processObservation.js"; +} from "./processObservation.js"; import { commitProcessReactiveProposal, createProcessReactiveSnapshot, reduceProcessReactiveScenario, -} from "../../../src/domain/processReactiveRuntime.js"; +} from "./processReactiveRuntime.js"; import { processReactiveScenarioSchema, type ProcessReactiveAction, type ProcessReactiveScenario, -} from "../../../src/domain/processReactiveScenario.js"; +} from "./processReactiveScenario.js"; const terminalTrigger = (literal = "Ready") => ({ kind: "terminal_text" as const, view: "decoded" as const, diff --git a/tests/composition/process-capture/processReactiveRuntimePart3.test.ts b/src/domain/processReactiveRuntimePart3.test.ts similarity index 97% rename from tests/composition/process-capture/processReactiveRuntimePart3.test.ts rename to src/domain/processReactiveRuntimePart3.test.ts index 60c6c3d9b0..68310e05d0 100644 --- a/tests/composition/process-capture/processReactiveRuntimePart3.test.ts +++ b/src/domain/processReactiveRuntimePart3.test.ts @@ -3,18 +3,18 @@ import { describe, expect, it } from "vitest"; import { createProcessObservation, type ProcessObservationSource, -} from "../../../src/domain/processObservation.js"; +} from "./processObservation.js"; import { commitProcessReactiveProposal, createProcessReactiveSnapshot, reduceProcessReactiveScenario, -} from "../../../src/domain/processReactiveRuntime.js"; +} from "./processReactiveRuntime.js"; import { PROCESS_REACTIVE_LIMITS, processReactiveScenarioSchema, type ProcessReactiveAction, type ProcessReactiveScenario, -} from "../../../src/domain/processReactiveScenario.js"; +} from "./processReactiveScenario.js"; const terminalTrigger = (literal = "Ready") => ({ kind: "terminal_text" as const, diff --git a/tests/composition/process-capture/processReactiveRuntimePredicates.test.ts b/src/domain/processReactiveRuntimePredicates.test.ts similarity index 97% rename from tests/composition/process-capture/processReactiveRuntimePredicates.test.ts rename to src/domain/processReactiveRuntimePredicates.test.ts index cb3edddba7..e8b145e325 100644 --- a/tests/composition/process-capture/processReactiveRuntimePredicates.test.ts +++ b/src/domain/processReactiveRuntimePredicates.test.ts @@ -2,17 +2,17 @@ import { describe, expect, it } from "vitest"; import { createProcessObservation, type ProcessObservationSource, -} from "../../../src/domain/processObservation.js"; +} from "./processObservation.js"; import { commitProcessReactiveProposal, createProcessReactiveSnapshot, reduceProcessReactiveScenario, -} from "../../../src/domain/processReactiveRuntime.js"; +} from "./processReactiveRuntime.js"; import { processReactiveScenarioSchema, type ProcessReactiveAction, type ProcessReactiveScenario, -} from "../../../src/domain/processReactiveScenario.js"; +} from "./processReactiveScenario.js"; const terminalTrigger = (literal = "Ready") => ({ kind: "terminal_text" as const, view: "decoded" as const, diff --git a/tests/composition/process-capture/processReactiveRuntimePredicatesPart2.test.ts b/src/domain/processReactiveRuntimePredicatesPart2.test.ts similarity index 97% rename from tests/composition/process-capture/processReactiveRuntimePredicatesPart2.test.ts rename to src/domain/processReactiveRuntimePredicatesPart2.test.ts index 61e8beb394..45df2f6ddf 100644 --- a/tests/composition/process-capture/processReactiveRuntimePredicatesPart2.test.ts +++ b/src/domain/processReactiveRuntimePredicatesPart2.test.ts @@ -2,17 +2,17 @@ import { describe, expect, it } from "vitest"; import { createProcessObservation, type ProcessObservationSource, -} from "../../../src/domain/processObservation.js"; +} from "./processObservation.js"; import { commitProcessReactiveProposal, createProcessReactiveSnapshot, reduceProcessReactiveScenario, -} from "../../../src/domain/processReactiveRuntime.js"; +} from "./processReactiveRuntime.js"; import { processReactiveScenarioSchema, type ProcessReactiveAction, type ProcessReactiveScenario, -} from "../../../src/domain/processReactiveScenario.js"; +} from "./processReactiveScenario.js"; const terminalTrigger = (literal = "Ready") => ({ kind: "terminal_text" as const, view: "decoded" as const, diff --git a/tests/composition/process-capture/processReactiveScenario.test.ts b/src/domain/processReactiveScenario.test.ts similarity index 99% rename from tests/composition/process-capture/processReactiveScenario.test.ts rename to src/domain/processReactiveScenario.test.ts index 74cd030b2d..8bf9213128 100644 --- a/tests/composition/process-capture/processReactiveScenario.test.ts +++ b/src/domain/processReactiveScenario.test.ts @@ -3,7 +3,7 @@ import { describe, expect, it } from "vitest"; import { PROCESS_REACTIVE_LIMITS, processReactiveScenarioSchema, -} from "../../../src/domain/processReactiveScenario.js"; +} from "./processReactiveScenario.js"; const terminalTrigger = () => ({ kind: "terminal_text" as const, diff --git a/src/domain/processReactiveTransition.ts b/src/domain/processReactiveTransition.ts index f231f0d241..f86d8df040 100644 --- a/src/domain/processReactiveTransition.ts +++ b/src/domain/processReactiveTransition.ts @@ -10,6 +10,40 @@ import type { ProcessReactiveScenario } from "./processReactiveScenario.js"; type ReactiveTransition = ProcessReactiveScenario["states"][number]["on"][number]; +type SuccessfulEffectResult = Extract< + ProcessReactiveEffectResult, + { readonly status: "succeeded" } +>; + +const createTransitionRecord = (input: { + readonly sequence: number; + readonly stateBefore: string; + readonly transition: ReactiveTransition; + readonly triggerEventIds: readonly string[]; + readonly effectResults: readonly SuccessfulEffectResult[]; +}): ProcessReactiveTransitionRecord => { + const state = { + sequence: input.sequence, + transition_id: input.transition.id, + state_before: input.stateBefore, + trigger_event_ids: input.triggerEventIds, + action_event_ids: input.effectResults.map( + ({ observation }) => observation.event_id, + ), + action_types: input.transition.actions.map(({ type }) => type), + }; + return input.transition.target.kind === "finish" + ? { + ...state, + state_after: null, + outcome: input.transition.target.outcome, + } + : { + ...state, + state_after: input.transition.target.state, + outcome: null, + }; +}; const counterValue = ( counters: readonly { readonly id: string; readonly count: number }[], @@ -37,36 +71,22 @@ const applyProcessReactiveTransition = (input: { readonly transition: ReactiveTransition; readonly triggerEventIds: readonly string[]; readonly consumeEventIds: readonly string[]; - readonly effectResults: readonly Extract< - ProcessReactiveEffectResult, - { readonly status: "succeeded" } - >[]; + readonly effectResults: readonly SuccessfulEffectResult[]; readonly evaluations: readonly ProcessReactiveEvaluation[]; }): ProcessReactiveDecision => { if (input.effectResults.length !== input.transition.actions.length) throw new TypeError( "Reactive transition effects do not match the admitted actions", ); - const outcome = - input.transition.target.kind === "finish" - ? input.transition.target.outcome - : null; - const stateAfter = - input.transition.target.kind === "goto" - ? input.transition.target.state - : null; - const record: ProcessReactiveTransitionRecord = { + const record = createTransitionRecord({ sequence: input.snapshot.transitions.length, - transition_id: input.transition.id, - state_before: input.snapshot.active_state, - state_after: stateAfter, - outcome, - trigger_event_ids: input.triggerEventIds, - action_event_ids: input.effectResults.map( - ({ observation }) => observation.event_id, - ), - action_types: input.transition.actions.map(({ type }) => type), - }; + stateBefore: input.snapshot.active_state, + transition: input.transition, + triggerEventIds: input.triggerEventIds, + effectResults: input.effectResults, + }); + const outcome = record.outcome; + const stateAfter = record.state_after; const consumed = new Set(input.snapshot.consumed_event_ids); for (const eventId of input.consumeEventIds) consumed.add(eventId); const checkpoints = [...input.snapshot.checkpoints]; @@ -85,10 +105,8 @@ const applyProcessReactiveTransition = (input: { input.observation.capture_order, ...input.effectResults.map(({ observation }) => observation.capture_order), ); - let next: ProcessReactiveSnapshot = { + const nextState = { ...input.snapshot, - status: outcome === null ? "running" : "finished", - outcome, active_state: stateAfter ?? input.snapshot.active_state, state_entry_capture_order: stateAfter === null @@ -106,6 +124,10 @@ const applyProcessReactiveTransition = (input: { checkpoints, transitions: [...input.snapshot.transitions, record], }; + let next: ProcessReactiveSnapshot = + outcome === null + ? { ...nextState, status: "running", outcome: null } + : { ...nextState, status: "finished", outcome }; if (stateAfter !== null) { const nextState = input.scenario.states.find(({ id }) => id === stateAfter); if ( diff --git a/tests/composition/process-capture/processTraceAdapters.test.ts b/src/domain/processTraceAdapters.test.ts similarity index 94% rename from tests/composition/process-capture/processTraceAdapters.test.ts rename to src/domain/processTraceAdapters.test.ts index 8e2ab10f8a..83f0566312 100644 --- a/tests/composition/process-capture/processTraceAdapters.test.ts +++ b/src/domain/processTraceAdapters.test.ts @@ -1,11 +1,11 @@ import { describe, expect, it } from "vitest"; -import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../../../src/contracts/processCaptureExample.js"; +import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../contracts/processCaptureExample.js"; import { compareProcessCaptures, - processCaptureSchema, -} from "../../../src/domain/processCapture.js"; -import type { ProcessTraceSpecification } from "../../../src/domain/processTraceComparison.js"; + parseProcessCapture, +} from "./processCapture.js"; +import type { ProcessTraceSpecification } from "./processTraceComparison.js"; const beforeCheckpoint = { name: "before", at_ms: 0, @@ -99,7 +99,7 @@ describe("declared trace comparison adapters", () => { { sequence: 0, at_ms: 1, ...websocketPayload }, { sequence: 1, at_ms: 2, ...httpPayload }, ]; - return processCaptureSchema.parse({ + return parseProcessCapture({ ...capture, protocol_events: protocolEvents, event_journal: [ @@ -189,7 +189,7 @@ describe("declared trace comparison coverage", () => { outcome: "matched" as const, }); const withProtocol = (data: string) => - processCaptureSchema.parse({ + parseProcessCapture({ ...capture, protocol_events: [http, websocket(data)], event_journal: [ @@ -239,7 +239,7 @@ describe("declared trace comparison coverage", () => { describe("declared trace comparison nonconformance", () => { it("does not call identical captures changed when both violate the language", () => { - const parsedCapture = processCaptureSchema.parse(capture); + const parsedCapture = parseProcessCapture(capture); const specification: ProcessTraceSpecification = { ...traceSpecification, language: { @@ -265,7 +265,7 @@ describe("declared trace comparison nonconformance", () => { it("does not mask distinct payloads when both traces are nonconforming", () => { const withTerminal = (data: string) => - processCaptureSchema.parse({ + parseProcessCapture({ ...capture, frames: [{ sequence: 0, at_ms: 1, data }], event_journal: [ diff --git a/tests/composition/process-capture/processTraceComparison.test.ts b/src/domain/processTraceComparison.test.ts similarity index 83% rename from tests/composition/process-capture/processTraceComparison.test.ts rename to src/domain/processTraceComparison.test.ts index e8b00756fd..699343e148 100644 --- a/tests/composition/process-capture/processTraceComparison.test.ts +++ b/src/domain/processTraceComparison.test.ts @@ -1,14 +1,11 @@ import { describe, expect, it } from "vitest"; -import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../../../src/contracts/processCaptureExample.js"; -import { - processCaptureSchema, - type ProcessCapture, -} from "../../../src/domain/processCapture.js"; +import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../contracts/processCaptureExample.js"; +import { parseProcessCapture, type ProcessCapture } from "./processCapture.js"; import { compareProcessTraces, type ProcessTraceSpecification, -} from "../../../src/domain/processTraceComparison.js"; -const emptyCapture = processCaptureSchema.parse(EMPTY_PROCESS_CAPTURE_EXAMPLE); +} from "./processTraceComparison.js"; +const emptyCapture = parseProcessCapture(EMPTY_PROCESS_CAPTURE_EXAMPLE); const capture = ( values: Pick< ProcessCapture, @@ -24,42 +21,43 @@ const capture = ( readonly truncated?: boolean; readonly residualUnknowns?: ProcessCapture["residual_unknowns"]; } = {}, -): ProcessCapture => ({ - ...emptyCapture, - frames: values.frames, - process_samples: values.process_samples, - filesystem_checkpoints: emptyCapture.filesystem_checkpoints, - shim_events: values.shim_events, - protocol_events: values.protocol_events, - event_journal: [ - { - capture_order: 0, - collection: "filesystem_checkpoints", - index: 0, - }, - ...values.event_journal.map((entry) => ({ - ...entry, - capture_order: entry.capture_order + 1, - })), - { - capture_order: values.event_journal.length + 1, - collection: "lifecycle", - index: 0, - }, - { - capture_order: values.event_journal.length + 2, - collection: "lifecycle", - index: 1, - }, - { - capture_order: values.event_journal.length + 3, - collection: "filesystem_checkpoints", - index: 1, - }, - ], - truncated: options.truncated ?? false, - residual_unknowns: options.residualUnknowns ?? [], -}); +): ProcessCapture => + parseProcessCapture({ + ...emptyCapture, + frames: values.frames, + process_samples: values.process_samples, + filesystem_checkpoints: emptyCapture.filesystem_checkpoints, + shim_events: values.shim_events, + protocol_events: values.protocol_events, + event_journal: [ + { + capture_order: 0, + collection: "filesystem_checkpoints", + index: 0, + }, + ...values.event_journal.map((entry) => ({ + ...entry, + capture_order: entry.capture_order + 1, + })), + { + capture_order: values.event_journal.length + 1, + collection: "lifecycle", + index: 0, + }, + { + capture_order: values.event_journal.length + 2, + collection: "lifecycle", + index: 1, + }, + { + capture_order: values.event_journal.length + 3, + collection: "filesystem_checkpoints", + index: 1, + }, + ], + truncated: options.truncated ?? false, + residual_unknowns: options.residualUnknowns ?? [], + }); const terminal = { sequence: 0, at_ms: 900, data: "Ready" }; const processStarted = { at_ms: 1, diff --git a/src/domain/processTraceComparison.ts b/src/domain/processTraceComparison.ts index 874616eac7..0fc6bffa35 100644 --- a/src/domain/processTraceComparison.ts +++ b/src/domain/processTraceComparison.ts @@ -1,5 +1,4 @@ import type { ProcessCapture } from "./processCapture.js"; -import { validateProcessCapture } from "./processCaptureValidation.js"; import { evaluateProcessTraceSide, processTraceComparisonResultSchema, @@ -28,15 +27,6 @@ export const compareProcessTraces = ( right: ProcessCapture, specificationInput: ProcessTraceSpecification, ): ProcessTraceComparisonResult => { - const captureIssues = [ - ...validateProcessCapture(left), - ...validateProcessCapture(right), - ]; - const firstCaptureIssue = captureIssues.at(0); - if (firstCaptureIssue !== undefined) - throw new TypeError( - `Invalid Process Capture v4: ${firstCaptureIssue.path}`, - ); const specification = processTraceSpecificationSchema.parse(specificationInput); const leftEvaluation = evaluateProcessTraceSide(left, specification); diff --git a/tests/composition/process-capture/processTraceComparisonPart2.test.ts b/src/domain/processTraceComparisonPart2.test.ts similarity index 79% rename from tests/composition/process-capture/processTraceComparisonPart2.test.ts rename to src/domain/processTraceComparisonPart2.test.ts index 29f1f835ec..b28d0cd470 100644 --- a/tests/composition/process-capture/processTraceComparisonPart2.test.ts +++ b/src/domain/processTraceComparisonPart2.test.ts @@ -1,14 +1,11 @@ import { describe, expect, it } from "vitest"; -import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../../../src/contracts/processCaptureExample.js"; -import { - processCaptureSchema, - type ProcessCapture, -} from "../../../src/domain/processCapture.js"; +import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../contracts/processCaptureExample.js"; +import { parseProcessCapture, type ProcessCapture } from "./processCapture.js"; import { compareProcessTraces, type ProcessTraceSpecification, -} from "../../../src/domain/processTraceComparison.js"; -const emptyCapture = processCaptureSchema.parse(EMPTY_PROCESS_CAPTURE_EXAMPLE); +} from "./processTraceComparison.js"; +const emptyCapture = parseProcessCapture(EMPTY_PROCESS_CAPTURE_EXAMPLE); const capture = ( values: Pick< ProcessCapture, @@ -24,42 +21,43 @@ const capture = ( readonly truncated?: boolean; readonly residualUnknowns?: ProcessCapture["residual_unknowns"]; } = {}, -): ProcessCapture => ({ - ...emptyCapture, - frames: values.frames, - process_samples: values.process_samples, - filesystem_checkpoints: emptyCapture.filesystem_checkpoints, - shim_events: values.shim_events, - protocol_events: values.protocol_events, - event_journal: [ - { - capture_order: 0, - collection: "filesystem_checkpoints", - index: 0, - }, - ...values.event_journal.map((entry) => ({ - ...entry, - capture_order: entry.capture_order + 1, - })), - { - capture_order: values.event_journal.length + 1, - collection: "lifecycle", - index: 0, - }, - { - capture_order: values.event_journal.length + 2, - collection: "lifecycle", - index: 1, - }, - { - capture_order: values.event_journal.length + 3, - collection: "filesystem_checkpoints", - index: 1, - }, - ], - truncated: options.truncated ?? false, - residual_unknowns: options.residualUnknowns ?? [], -}); +): ProcessCapture => + parseProcessCapture({ + ...emptyCapture, + frames: values.frames, + process_samples: values.process_samples, + filesystem_checkpoints: emptyCapture.filesystem_checkpoints, + shim_events: values.shim_events, + protocol_events: values.protocol_events, + event_journal: [ + { + capture_order: 0, + collection: "filesystem_checkpoints", + index: 0, + }, + ...values.event_journal.map((entry) => ({ + ...entry, + capture_order: entry.capture_order + 1, + })), + { + capture_order: values.event_journal.length + 1, + collection: "lifecycle", + index: 0, + }, + { + capture_order: values.event_journal.length + 2, + collection: "lifecycle", + index: 1, + }, + { + capture_order: values.event_journal.length + 3, + collection: "filesystem_checkpoints", + index: 1, + }, + ], + truncated: options.truncated ?? false, + residual_unknowns: options.residualUnknowns ?? [], + }); const terminal = { sequence: 0, at_ms: 900, data: "Ready" }; const processStarted = { at_ms: 1, @@ -241,7 +239,10 @@ describe("process trace comparison", () => { expect( compareProcessTraces(complete, unknown, partialSpecification()).verdict, ).toBe("unknown"); - const noJournal = { ...complete, event_journal: [] }; + const noJournal = parseProcessCapture({ + ...complete, + event_journal: [], + }); const comparison = compareProcessTraces( complete, noJournal, @@ -255,8 +256,8 @@ describe("process trace comparison", () => { ...complete, event_journal: (complete.event_journal ?? []).slice(1), }; - expect(() => - compareProcessTraces(complete, incompleteJournal, partialSpecification()), - ).toThrow("Invalid Process Capture v4: event_journal.0.capture_order"); + expect(() => parseProcessCapture(incompleteJournal)).toThrow( + "Invalid Process Capture v4: event_journal.0.capture_order", + ); }); }); diff --git a/tests/composition/process-capture/processTraceSpecification.test.ts b/src/domain/processTraceSpecification.test.ts similarity index 98% rename from tests/composition/process-capture/processTraceSpecification.test.ts rename to src/domain/processTraceSpecification.test.ts index 61f903dc5d..428a93c4fd 100644 --- a/tests/composition/process-capture/processTraceSpecification.test.ts +++ b/src/domain/processTraceSpecification.test.ts @@ -2,7 +2,7 @@ import { describe, expect, it } from "vitest"; import { processTraceSpecificationSchema, type ProcessTraceSpecification, -} from "../../../src/domain/processTraceComparison.js"; +} from "./processTraceComparison.js"; const terminal = { sequence: 0, at_ms: 900, data: "Ready" }; const processStarted = { at_ms: 1, diff --git a/src/domain/reconstructionCoverage.fixture.ts b/src/domain/reconstructionCoverage.fixture.ts new file mode 100644 index 0000000000..734d8365b2 --- /dev/null +++ b/src/domain/reconstructionCoverage.fixture.ts @@ -0,0 +1,148 @@ +import { createEvidence } from "./evidence.js"; +import { createEvidenceBundle } from "./evidenceBundle.js"; +import { + createReconstructionCoverageWorkspace, + createReconstructionVerifierContract, +} from "./reconstructionCoverage.js"; + +const digest = (character: string): string => character.repeat(64); + +const EVIDENCE_RECORDS = ["1", "2", "3", "4", "5"].map((character) => + createEvidence( + undefined, + { id: "fixture", name: "Fixture", version: "1" }, + { + predicateType: "rea.coverage-fixture/v1", + operation: `fixture-${character}`, + parameters: {}, + result: { character }, + }, + ), +); + +/** Fixed evaluation time used by reconstruction-coverage tests. */ +export const RECONSTRUCTION_COVERAGE_NOW = Date.parse( + "2026-07-16T12:00:00.000Z", +); + +/** Resolve the stable Evidence identifier for one fixture record. */ +export const reconstructionCoverageEvidenceId = (character: string): string => { + const record = EVIDENCE_RECORDS.find( + ({ operation }) => operation === `fixture-${character}`, + ); + if (record === undefined) throw new Error("Missing fixture Evidence"); + return record.evidence_id; +}; + +/** Build one fully closed reconstruction-coverage workspace. */ +export const completeReconstructionCoverageWorkspace = () => { + const contract = createReconstructionVerifierContract({ + verifier_id: "verify.cli.help", + claim_ids: ["claim.cli.help"], + dimensions: ["output", "exit"], + authority: "controlled-replay", + max_age_ms: 86_400_000, + minimum_repeats: 2, + normalization_sha256: digest("4"), + normalization_removes_dimensions: false, + }); + return createReconstructionCoverageWorkspace({ + name: "fixture", + revision: 1, + previous_revision_sha256: null, + evidence_bundle: createEvidenceBundle(EVIDENCE_RECORDS), + artifacts: [ + { + artifact_id: "authority.v1", + artifact_sha256: digest("1"), + version: "1.0.0", + environment_sha256: digest("2"), + evidence_ids: [reconstructionCoverageEvidenceId("1")], + }, + ], + surfaces: [ + { + surface_id: "cli.help", + family: "cli-command", + artifact_id: "authority.v1", + occurrence_id: "occ-help", + location: "bin/app --help", + authority: "observed", + dependency_surface_ids: [], + evidence_ids: [reconstructionCoverageEvidenceId("2")], + }, + ], + owners: [ + { + surface_id: "cli.help", + ownership: { + disposition: "implemented", + owner_path: "src/cli.ts", + owner_export: "registerHelp", + owner_sha256: digest("3"), + path_state: "present", + package_state: "distributed", + authority_route: "none", + }, + }, + ], + claims: [ + { + claim_id: "claim.cli.help", + title: "Help output and exit behavior match", + kind: "behavioral", + surface_ids: ["cli.help"], + required_dimensions: ["output", "exit"], + required_authority: "controlled-replay", + }, + ], + verifier_contracts: [contract], + verifier_results: [ + { + verifier_id: contract.verifier_id, + contract_sha256: contract.contract_sha256, + observed_at: "2026-07-16T11:00:00.000Z", + status: "pass", + covered_claim_ids: ["claim.cli.help"], + covered_dimensions: ["output", "exit"], + artifact_sha256s: [digest("1")], + owner_sha256s: [digest("3")], + normalization_sha256: digest("4"), + repeats: 2, + evidence_ids: [reconstructionCoverageEvidenceId("3")], + }, + ], + residual_unknown_ids: [], + contradictions: [], + package_proofs: [ + { + proof_id: "proof.clean-install", + kind: "clean-install", + status: "pass", + artifact_sha256s: [digest("1")], + evidence_ids: [reconstructionCoverageEvidenceId("4")], + }, + { + proof_id: "proof.authority-independence", + kind: "authority-independence", + status: "pass", + artifact_sha256s: [digest("1")], + evidence_ids: [reconstructionCoverageEvidenceId("5")], + }, + ], + boundaries: [ + { + boundary_id: "replacement.cli", + title: "CLI replacement", + required_surface_ids: ["cli.help"], + required_claim_ids: ["claim.cli.help"], + required_package_proof_kinds: [ + "clean-install", + "authority-independence", + ], + allowed_dispositions: [], + allowed_unknown_ids: [], + }, + ], + }); +}; diff --git a/src/domain/reconstructionCoverage.test.ts b/src/domain/reconstructionCoverage.test.ts new file mode 100644 index 0000000000..a3dc796d2d --- /dev/null +++ b/src/domain/reconstructionCoverage.test.ts @@ -0,0 +1,265 @@ +import { describe, expect, it } from "vitest"; + +import { + completeReconstructionCoverageWorkspace, + RECONSTRUCTION_COVERAGE_NOW, + reconstructionCoverageEvidenceId, +} from "./reconstructionCoverage.fixture.js"; +import { + createReconstructionCoverageWorkspace, + evaluateReconstructionClosure, + parseReconstructionCoverageWorkspace, +} from "./reconstructionCoverage.js"; + +const digest = (character: string): string => character.repeat(64); + +describe("reconstruction coverage closure", () => { + it("returns ready only when ownership, verification, package, and authority closure pass", () => { + const workspace = completeReconstructionCoverageWorkspace(); + + expect( + evaluateReconstructionClosure( + workspace, + "replacement.cli", + RECONSTRUCTION_COVERAGE_NOW, + ), + ).toMatchObject({ + status: "ready", + summary: { required_surfaces: 1, required_claims: 1, reasons: 0 }, + evidence_ids: [ + reconstructionCoverageEvidenceId("2"), + reconstructionCoverageEvidenceId("3"), + reconstructionCoverageEvidenceId("4"), + reconstructionCoverageEvidenceId("5"), + ].sort(), + }); + expect(parseReconstructionCoverageWorkspace(workspace)).toEqual(workspace); + }); + + it("keeps an incomplete inventory partial despite every registered verifier passing", () => { + const workspace = completeReconstructionCoverageWorkspace(); + const { + revision_sha256: _revisionSha256, + workspace_id: _workspaceId, + schema_version: _schemaVersion, + ...semantic + } = workspace; + const boundary = workspace.boundaries[0]; + if (boundary === undefined) throw new Error("Expected fixture boundary"); + const incomplete = createReconstructionCoverageWorkspace({ + ...semantic, + revision: 2, + previous_revision_sha256: workspace.revision_sha256, + boundaries: [ + { + ...boundary, + required_surface_ids: ["cli.help", "cli.version"], + }, + ], + }); + + expect( + evaluateReconstructionClosure( + incomplete, + "replacement.cli", + RECONSTRUCTION_COVERAGE_NOW, + ), + ).toMatchObject({ + status: "partial", + reasons: [ + expect.objectContaining({ + code: "surface-missing", + subject_id: "cli.version", + }), + ], + recommended_probes: [ + { + operation: "update_authoritative_inventory", + subject_id: "cli.version", + rationale: + "Required surface is absent from the authoritative inventory.", + }, + ], + }); + }); + + it("invalidates stale verifier contracts and detected authority routing", () => { + const workspace = completeReconstructionCoverageWorkspace(); + const owner = workspace.owners[0]; + if (owner === undefined || owner.ownership.disposition !== "implemented") + throw new Error("Expected implemented fixture owner"); + const { + revision_sha256: _revisionSha256, + workspace_id: _workspaceId, + schema_version: _schemaVersion, + ...semantic + } = workspace; + const changed = createReconstructionCoverageWorkspace({ + ...semantic, + revision: 2, + previous_revision_sha256: workspace.revision_sha256, + owners: [ + { + ...owner, + ownership: { + ...owner.ownership, + owner_sha256: digest("9"), + path_state: "present", + package_state: "distributed", + authority_route: "detected", + }, + }, + ], + }); + + const result = evaluateReconstructionClosure( + changed, + "replacement.cli", + RECONSTRUCTION_COVERAGE_NOW, + ); + expect(result.status).toBe("failed"); + expect(result.reasons).toEqual( + expect.arrayContaining([ + expect.objectContaining({ code: "authority-routing-detected" }), + expect.objectContaining({ code: "verifier-result-incompatible" }), + ]), + ); + }); + + it("never lets mock-strength or stale results satisfy stronger current claims", () => { + const workspace = completeReconstructionCoverageWorkspace(); + const { + revision_sha256: _revisionSha256, + workspace_id: _workspaceId, + schema_version: _schemaVersion, + ...semantic + } = workspace; + const stale = createReconstructionCoverageWorkspace({ + ...semantic, + revision: 2, + previous_revision_sha256: workspace.revision_sha256, + verifier_results: workspace.verifier_results.map((result) => ({ + ...result, + observed_at: "2026-07-01T00:00:00.000Z", + })), + }); + + expect( + evaluateReconstructionClosure( + stale, + "replacement.cli", + RECONSTRUCTION_COVERAGE_NOW, + ), + ).toMatchObject({ + status: "unknown", + reasons: [expect.objectContaining({ code: "verifier-result-stale" })], + }); + }); +}); + +describe("reconstruction coverage verifier observations", () => { + it("orders offset-bearing verifier timestamps chronologically", () => { + const workspace = completeReconstructionCoverageWorkspace(); + const result = workspace.verifier_results[0]; + if (result === undefined) + throw new Error("Expected fixture verifier result"); + const { + revision_sha256: _revisionSha256, + workspace_id: _workspaceId, + schema_version: _schemaVersion, + ...semantic + } = workspace; + const changed = createReconstructionCoverageWorkspace({ + ...semantic, + revision: 2, + previous_revision_sha256: workspace.revision_sha256, + verifier_results: [ + { ...result, observed_at: "2026-07-16T08:00:00.000Z" }, + { + ...result, + observed_at: "2026-07-16T04:00:00.000-05:00", + status: "fail", + }, + ], + }); + + expect( + evaluateReconstructionClosure( + changed, + "replacement.cli", + RECONSTRUCTION_COVERAGE_NOW, + ), + ).toMatchObject({ + status: "failed", + reasons: [expect.objectContaining({ code: "verifier-failed" })], + }); + }); + + it("rejects verifier observations from the future", () => { + const workspace = completeReconstructionCoverageWorkspace(); + const result = workspace.verifier_results[0]; + if (result === undefined) + throw new Error("Expected fixture verifier result"); + const { + revision_sha256: _revisionSha256, + workspace_id: _workspaceId, + schema_version: _schemaVersion, + ...semantic + } = workspace; + const changed = createReconstructionCoverageWorkspace({ + ...semantic, + revision: 2, + previous_revision_sha256: workspace.revision_sha256, + verifier_results: [ + { ...result, observed_at: "2026-07-17T12:00:00.000Z" }, + ], + }); + + expect( + evaluateReconstructionClosure( + changed, + "replacement.cli", + RECONSTRUCTION_COVERAGE_NOW, + ), + ).toMatchObject({ + status: "unknown", + reasons: [expect.objectContaining({ code: "verifier-result-stale" })], + }); + }); + + it("rejects green results and package proofs that omit current commitments", () => { + const workspace = completeReconstructionCoverageWorkspace(); + const { + revision_sha256: _revisionSha256, + workspace_id: _workspaceId, + schema_version: _schemaVersion, + ...semantic + } = workspace; + const incomplete = createReconstructionCoverageWorkspace({ + ...semantic, + revision: 2, + previous_revision_sha256: workspace.revision_sha256, + verifier_results: workspace.verifier_results.map((result) => ({ + ...result, + owner_sha256s: [], + })), + package_proofs: workspace.package_proofs.map((proof) => ({ + ...proof, + artifact_sha256s: [digest("8")], + })), + }); + + const result = evaluateReconstructionClosure( + incomplete, + "replacement.cli", + RECONSTRUCTION_COVERAGE_NOW, + ); + expect(result.status).toBe("unknown"); + expect(result.reasons).toEqual( + expect.arrayContaining([ + expect.objectContaining({ code: "verifier-result-incompatible" }), + expect.objectContaining({ code: "package-proof-unknown" }), + ]), + ); + }); +}); diff --git a/tests/composition/evidence-investigations/reconstructionReadiness.test.ts b/src/domain/reconstructionReadiness.test.ts similarity index 94% rename from tests/composition/evidence-investigations/reconstructionReadiness.test.ts rename to src/domain/reconstructionReadiness.test.ts index 9c6b276c74..644fde8db7 100644 --- a/tests/composition/evidence-investigations/reconstructionReadiness.test.ts +++ b/src/domain/reconstructionReadiness.test.ts @@ -1,8 +1,8 @@ import { describe, expect, it } from "vitest"; -import { RECONSTRUCTION_READINESS_EXAMPLE } from "../../../src/contracts/reconstructionReadinessExample.js"; -import { createReconstructionReadinessReport } from "../../../src/domain/reconstructionReadiness.js"; -import type { ReconstructionReadinessInput } from "../../../src/domain/reconstructionReadinessSchemas.js"; +import { RECONSTRUCTION_READINESS_EXAMPLE } from "../contracts/reconstructionReadinessExample.js"; +import { createReconstructionReadinessReport } from "./reconstructionReadiness.js"; +import type { ReconstructionReadinessInput } from "./reconstructionReadinessSchemas.js"; const input = ( overrides: Partial = {}, diff --git a/tests/composition/evidence-investigations/reconstructionVerification.test.ts b/src/domain/reconstructionVerification.test.ts similarity index 95% rename from tests/composition/evidence-investigations/reconstructionVerification.test.ts rename to src/domain/reconstructionVerification.test.ts index f0e5f047d4..e7b59272eb 100644 --- a/tests/composition/evidence-investigations/reconstructionVerification.test.ts +++ b/src/domain/reconstructionVerification.test.ts @@ -1,15 +1,15 @@ import { describe, expect, it } from "vitest"; -import { createEvidence, type Evidence } from "../../../src/domain/evidence.js"; -import { createEvidenceBundle } from "../../../src/domain/evidenceBundle.js"; +import { createEvidence, type Evidence } from "./evidence.js"; +import { createEvidenceBundle } from "./evidenceBundle.js"; import { reconstructionVerificationResultSchema, verifyReconstruction, -} from "../../../src/domain/reconstructionVerification.js"; -import type { JsonValue } from "../../../src/domain/jsonValue.js"; -import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../../../src/contracts/processCaptureExample.js"; -import { ARTIFACT_COMPARISON_EXAMPLE } from "../../../src/contracts/artifactComparisonExample.js"; -import { createResidualUnknown } from "../../../src/domain/residualUnknown.js"; +} from "./reconstructionVerification.js"; +import type { JsonValue } from "./jsonValue.js"; +import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../contracts/processCaptureExample.js"; +import { ARTIFACT_COMPARISON_EXAMPLE } from "../contracts/artifactComparisonExample.js"; +import { createResidualUnknown } from "./residualUnknown.js"; const environment = { id: "fixture-linux", diff --git a/tests/composition/javascript-applications/referenceSourceGraph.test.ts b/src/domain/referenceSourceGraph.test.ts similarity index 99% rename from tests/composition/javascript-applications/referenceSourceGraph.test.ts rename to src/domain/referenceSourceGraph.test.ts index 0aa98cc2d9..d68d249f3b 100644 --- a/tests/composition/javascript-applications/referenceSourceGraph.test.ts +++ b/src/domain/referenceSourceGraph.test.ts @@ -9,7 +9,7 @@ import { parseHistoricalSourceGraph, parseHistoricalSourceManifest, type HistoricalSourceGraphInput, -} from "../../../src/domain/referenceSourceGraph.js"; +} from "./referenceSourceGraph.js"; const HASH_A = "a".repeat(64); const HASH_B = "b".repeat(64); diff --git a/tests/composition/runtime-observation/replayMachine.test.ts b/src/domain/replayMachine.test.ts similarity index 99% rename from tests/composition/runtime-observation/replayMachine.test.ts rename to src/domain/replayMachine.test.ts index 47bcec71e2..c54845a441 100644 --- a/tests/composition/runtime-observation/replayMachine.test.ts +++ b/src/domain/replayMachine.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; -import { replayMachineSchema } from "../../../src/domain/replayMachine.js"; +import { replayMachineSchema } from "./replayMachine.js"; const loginMachine = () => ({ initial_state: "waiting_for_login", diff --git a/tests/composition/runtime-observation/runtimeCharacterization.test.ts b/src/domain/runtimeCharacterization.test.ts similarity index 97% rename from tests/composition/runtime-observation/runtimeCharacterization.test.ts rename to src/domain/runtimeCharacterization.test.ts index 0dec2ea61e..0d93c65182 100644 --- a/tests/composition/runtime-observation/runtimeCharacterization.test.ts +++ b/src/domain/runtimeCharacterization.test.ts @@ -3,7 +3,7 @@ import { describe, expect, it } from "vitest"; import { createRuntimeCharacterizationPlan, parseRuntimeCharacterizationPlan, -} from "../../../src/domain/runtimeCharacterization.js"; +} from "./runtimeCharacterization.js"; const digest = (character: string): string => character.repeat(64); diff --git a/src/domain/runtimeIdentification.ts b/src/domain/runtimeIdentification.ts index 32755db8c6..456cc13bba 100644 --- a/src/domain/runtimeIdentification.ts +++ b/src/domain/runtimeIdentification.ts @@ -22,6 +22,31 @@ const observationSchema = z.strictObject({ sha256: digestSchema, format: z.string().min(1).max(100), }); +const runtimeObservationShape = { + family: runtimeFamilySchema, + observations: z.array(observationSchema), + omitted_observations: z.number().int().min(0), +}; +const identifiedRuntimeSchema = z.discriminatedUnion("inspection", [ + z.strictObject({ + ...runtimeObservationShape, + inspection: z.literal("available"), + provider_id: z.string().min(1).max(200), + reason: z.null(), + }), + z.strictObject({ + ...runtimeObservationShape, + inspection: z.literal("provider-missing"), + provider_id: z.null(), + reason: z.string().min(1).max(1_000), + }), + z.strictObject({ + ...runtimeObservationShape, + inspection: z.literal("provider-selection-required"), + provider_id: z.null(), + reason: z.string().min(1).max(1_000), + }), +]); /** Authenticated artifact inventory pages to classify by runtime family. */ const runtimeIdentificationInputSchema = z.strictObject({ @@ -40,20 +65,7 @@ export const runtimeIdentificationResultSchema = z.strictObject({ root_sha256: digestSchema, root_format: z.string().min(1).max(100), source_evidence_ids: z.array(evidenceIdSchema).min(1).max(100), - runtimes: z.array( - z.strictObject({ - family: runtimeFamilySchema, - inspection: z.enum([ - "available", - "provider-missing", - "provider-selection-required", - ]), - provider_id: z.string().min(1).max(200).nullable(), - reason: z.string().min(1).max(1_000).nullable(), - observations: z.array(observationSchema), - omitted_observations: z.number().int().min(0), - }), - ), + runtimes: z.array(identifiedRuntimeSchema), coverage: z.strictObject({ status: z.enum(["complete-within-inventory", "partial", "truncated"]), inventory_complete: z.boolean(), @@ -70,14 +82,17 @@ export type RuntimeIdentificationResult = z.infer< >; type RuntimeFamily = z.infer; type Observation = z.infer; -type RuntimeProvider = { - readonly inspection: - | "available" - | "provider-missing" - | "provider-selection-required"; - readonly id: string | null; - readonly reason: string | null; -}; +type RuntimeProvider = + | { + readonly inspection: "available"; + readonly id: string; + readonly reason: null; + } + | { + readonly inspection: "provider-missing" | "provider-selection-required"; + readonly id: null; + readonly reason: string; + }; const PROVIDERS: Readonly> = { android: { @@ -164,9 +179,7 @@ export const identifyRuntimes = ( const provider = providerFor(family, inventory.manifest.root_format); return { family, - inspection: provider.inspection, - provider_id: provider.id, - reason: provider.reason, + ...runtimeInspection(provider), observations, omitted_observations: omittedObservations, }; @@ -221,6 +234,19 @@ const providerFor = ( } : PROVIDERS[family]; +const runtimeInspection = (provider: RuntimeProvider) => + provider.inspection === "available" + ? { + inspection: provider.inspection, + provider_id: provider.id, + reason: null, + } + : { + inspection: provider.inspection, + provider_id: null, + reason: provider.reason, + }; + const familiesFor = (format: string, path: string): RuntimeFamily[] => { const families = new Set(); if ( diff --git a/tests/composition/javascript-applications/sourceToBundleComparison.test.ts b/src/domain/sourceToBundleComparison.test.ts similarity index 95% rename from tests/composition/javascript-applications/sourceToBundleComparison.test.ts rename to src/domain/sourceToBundleComparison.test.ts index a6ea99e80e..fe30fed12a 100644 --- a/tests/composition/javascript-applications/sourceToBundleComparison.test.ts +++ b/src/domain/sourceToBundleComparison.test.ts @@ -3,11 +3,11 @@ import { describe, expect, it } from "vitest"; import { createJavaScriptApplicationGraph, createJavaScriptApplicationNode, -} from "../../../src/domain/javascriptApplicationGraph.js"; -import { createHistoricalSourceGraph } from "../../../src/domain/referenceSourceGraph.js"; -import { compareSourceToBundle } from "../../../src/domain/sourceToBundleComparison.js"; -import { sourceToBundleComparisonResultSchema } from "../../../src/domain/sourceToBundleComparisonSchemas.js"; -import { artifactEvidence } from "../../fixtures/javascriptApplicationGraph.js"; +} from "./javascriptApplicationGraph.js"; +import { createHistoricalSourceGraph } from "./referenceSourceGraph.js"; +import { compareSourceToBundle } from "./sourceToBundleComparison.js"; +import { sourceToBundleComparisonResultSchema } from "./sourceToBundleComparisonSchemas.js"; +import { artifactEvidence } from "./javascriptApplicationGraph.fixture.js"; const HASH = { artifact: "1".repeat(64), diff --git a/tests/composition/runtime-observation/staticRuntimeCorrelation.test.ts b/src/domain/staticRuntimeCorrelation.test.ts similarity index 96% rename from tests/composition/runtime-observation/staticRuntimeCorrelation.test.ts rename to src/domain/staticRuntimeCorrelation.test.ts index ca510fc7f4..7c48a6546f 100644 --- a/tests/composition/runtime-observation/staticRuntimeCorrelation.test.ts +++ b/src/domain/staticRuntimeCorrelation.test.ts @@ -1,12 +1,12 @@ import { describe, expect, it } from "vitest"; -import { INVESTIGATION_EXAMPLES } from "../../../src/contracts/investigationExamples.js"; -import { createEvidence, type Evidence } from "../../../src/domain/evidence.js"; -import type { JsonValue } from "../../../src/domain/jsonValue.js"; +import { INVESTIGATION_EXAMPLES } from "../contracts/investigationExamples.js"; +import { createEvidence, type Evidence } from "./evidence.js"; +import type { JsonValue } from "./jsonValue.js"; import { correlateStaticAndRuntime, staticRuntimeCorrelationResultSchema, -} from "../../../src/domain/staticRuntimeCorrelation.js"; +} from "./staticRuntimeCorrelation.js"; const staticComparison = INVESTIGATION_EXAMPLES.find_changed_behavior.comparisons[0]; diff --git a/tests/composition/javascript-applications/webBundleAnalyzer.test.ts b/src/domain/webBundleAnalyzer.test.ts similarity index 96% rename from tests/composition/javascript-applications/webBundleAnalyzer.test.ts rename to src/domain/webBundleAnalyzer.test.ts index 324f73149b..4940e3aa78 100644 --- a/tests/composition/javascript-applications/webBundleAnalyzer.test.ts +++ b/src/domain/webBundleAnalyzer.test.ts @@ -3,13 +3,13 @@ import { describe, expect, it } from "vitest"; import { inspectWebPageInputSchema, webPageInspectionSchema, -} from "../../../src/domain/browserObservation.js"; -import { analyzeCapturedWebBundle } from "../../../src/domain/webBundleAnalyzer.js"; +} from "./browserObservation.js"; +import { analyzeCapturedWebBundle } from "./webBundleAnalyzer.js"; import { analyzeWebBundleInputSchema, webBundleAnalysisSchema, -} from "../../../src/domain/webBundleAnalysis.js"; -import { createWebTextArtifact } from "../../../src/domain/webContentArtifact.js"; +} from "./webBundleAnalysis.js"; +import { createWebTextArtifact } from "./webContentArtifact.js"; const origin = "https://app.example.test"; diff --git a/tests/composition/javascript-applications/webInventory.test.ts b/src/domain/webInventory.test.ts similarity index 97% rename from tests/composition/javascript-applications/webInventory.test.ts rename to src/domain/webInventory.test.ts index e3bcb50c1b..b52e244926 100644 --- a/tests/composition/javascript-applications/webInventory.test.ts +++ b/src/domain/webInventory.test.ts @@ -5,11 +5,11 @@ import { reconcileWebScript, stableWebResources, stableWebScriptKey, -} from "../../../src/domain/webInventory.js"; +} from "./webInventory.js"; import { createWebTextArtifact, webTextArtifactSchema, -} from "../../../src/domain/webContentArtifact.js"; +} from "./webContentArtifact.js"; describe("web content artifacts", () => { it("binds UTF-8 content, size, digest, and URI", () => { diff --git a/src/domain/webScreenshot.ts b/src/domain/webScreenshot.ts index d55007275a..28e7818f56 100644 --- a/src/domain/webScreenshot.ts +++ b/src/domain/webScreenshot.ts @@ -96,9 +96,8 @@ export type CompareWebScreenshotsInput = z.infer< >; /** Value-only visual difference metrics; no OCR or image mutation. */ -export const webScreenshotDiffSchema = z.object({ +const webScreenshotDiffContextShape = { schema_version: z.literal(1), - status: z.enum(["identical", "different", "dimension_mismatch"]), before: z.object({ width: z.number().int().min(1), height: z.number().int().min(1), @@ -108,13 +107,59 @@ export const webScreenshotDiffSchema = z.object({ height: z.number().int().min(1), }), channel_threshold: z.number().int().min(0).max(255), - compared_pixels: z.number().int().min(0), - changed_pixels: z.number().int().min(0).nullable(), - changed_ratio: z.number().min(0).max(1).nullable(), - maximum_channel_delta: z.number().int().min(0).max(255).nullable(), - mean_absolute_channel_delta: z.number().min(0).max(255).nullable(), limitations: z.array(z.string()), -}); +}; + +export const webScreenshotDiffSchema = z + .discriminatedUnion("status", [ + z.object({ + ...webScreenshotDiffContextShape, + status: z.literal("identical"), + compared_pixels: z.number().int().positive(), + changed_pixels: z.literal(0), + changed_ratio: z.literal(0), + maximum_channel_delta: z.number().int().min(0).max(255), + mean_absolute_channel_delta: z.number().min(0).max(255), + }), + z.object({ + ...webScreenshotDiffContextShape, + status: z.literal("different"), + compared_pixels: z.number().int().positive(), + changed_pixels: z.number().int().positive(), + changed_ratio: z.number().positive().max(1), + maximum_channel_delta: z.number().int().positive().max(255), + mean_absolute_channel_delta: z.number().positive().max(255), + }), + z.object({ + ...webScreenshotDiffContextShape, + status: z.literal("dimension_mismatch"), + compared_pixels: z.literal(0), + changed_pixels: z.null(), + changed_ratio: z.null(), + maximum_channel_delta: z.null(), + mean_absolute_channel_delta: z.null(), + }), + ]) + .superRefine((diff, context) => { + const sameDimensions = + diff.before.width === diff.after.width && + diff.before.height === diff.after.height; + if (sameDimensions !== (diff.status !== "dimension_mismatch")) + context.addIssue({ + code: "custom", + path: ["status"], + message: "Screenshot comparison status must match viewport dimensions", + }); + if ( + diff.status !== "dimension_mismatch" && + diff.compared_pixels !== diff.before.width * diff.before.height + ) + context.addIssue({ + code: "custom", + path: ["compared_pixels"], + message: "Compared pixel count must match the shared dimensions", + }); + }); export type WebScreenshotDiff = z.infer; /** Create a content-addressed PNG artifact from already bounded bytes. */ diff --git a/src/generatedMcpToolCatalog.ts b/src/generatedMcpToolCatalog.ts index d4dc98f9e5..25a44ab328 100644 --- a/src/generatedMcpToolCatalog.ts +++ b/src/generatedMcpToolCatalog.ts @@ -30,7 +30,7 @@ interface GeneratedPayload { } const GENERATED_PAYLOAD_JSON = - '{"auxiliaryProviders":[{"capabilities":[{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["DMG child inventory is macOS-only and requires per-call approval plus operator policy; PKG remains root-hash-only.","ASAR files discovered in filesystem-backed inventories are expanded without bulk extraction; other nested containers remain recorded only."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":120000},"operation":"inventory_artifact","outputContractVersion":1,"pagination":"offset","provider":{"id":"rea-artifact-graph","name":"REA safe artifact graph provider","version":"1"},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["DMG child inventory is macOS-only and requires per-call approval plus operator policy; PKG remains root-hash-only.","ASAR files discovered in filesystem-backed inventories are expanded without bulk extraction; other nested containers remain recorded only."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":120000},"operation":"inspect_artifact","outputContractVersion":1,"pagination":"none","provider":{"id":"rea-artifact-graph","name":"REA safe artifact graph provider","version":"1"},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":true,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["DMG child inventory is macOS-only and requires per-call approval plus operator policy; PKG remains root-hash-only.","ASAR files discovered in filesystem-backed inventories are expanded without bulk extraction; other nested containers remain recorded only."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":120000},"operation":"extract_artifact","outputContractVersion":1,"pagination":"offset","provider":{"id":"rea-artifact-graph","name":"REA safe artifact graph provider","version":"1"},"reason":null}],"identity":{"id":"rea-artifact-graph","name":"REA safe artifact graph provider","version":"1"}},{"capabilities":[{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["Availability and textual formats depend on the installed macOS/Xcode toolchain."],"limits":{"maxPayloadBytes":4194304,"maxResults":null,"timeoutMs":30000},"operation":"inspect_macho","outputContractVersion":1,"pagination":"none","provider":{"id":"native-macos","name":"macOS native inspection utilities","version":null},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":true,"inputContractVersion":1,"limitations":["Availability and textual formats depend on the installed macOS/Xcode toolchain."],"limits":{"maxPayloadBytes":4194304,"maxResults":null,"timeoutMs":30000},"operation":"inspect_signature","outputContractVersion":1,"pagination":"none","provider":{"id":"native-macos","name":"macOS native inspection utilities","version":null},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":true,"inputContractVersion":1,"limitations":["Availability and textual formats depend on the installed macOS/Xcode toolchain."],"limits":{"maxPayloadBytes":4194304,"maxResults":null,"timeoutMs":30000},"operation":"inspect_plist","outputContractVersion":1,"pagination":"none","provider":{"id":"native-macos","name":"macOS native inspection utilities","version":null},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":true,"inputContractVersion":1,"limitations":["Availability and textual formats depend on the installed macOS/Xcode toolchain."],"limits":{"maxPayloadBytes":4194304,"maxResults":null,"timeoutMs":30000},"operation":"list_architectures","outputContractVersion":1,"pagination":"none","provider":{"id":"native-macos","name":"macOS native inspection utilities","version":null},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":true,"inputContractVersion":1,"limitations":["Availability and textual formats depend on the installed macOS/Xcode toolchain."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":30000},"operation":"demangle_swift","outputContractVersion":1,"pagination":"none","provider":{"id":"native-macos","name":"macOS native inspection utilities","version":null},"reason":null}],"identity":{"id":"native-macos","name":"macOS native inspection utilities","version":null}},{"capabilities":[{"available":true,"effects":{"changesPermissions":false,"launchesProcess":false,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["This capability inventories PE/CLI identity only; inspect_managed_members admits bounded metadata members, signatures, and CIL anchors.","It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":null},"operation":"inspect_managed_artifact","outputContractVersion":1,"pagination":"offset","provider":{"id":"rea-dotnet-static","name":"REA managed static analysis provider","version":"1"},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":false,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["This capability decodes bounded PE/CLI metadata members, signatures, and file-backed method bodies; decompiled C# and cross-build matching are separate future contracts.","It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":null},"operation":"inspect_managed_members","outputContractVersion":1,"pagination":"offset","provider":{"id":"rea-dotnet-static","name":"REA managed static analysis provider","version":"1"},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":false,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["This capability inventories managed declarations for native boundaries only; native exports, thunks, and addresses require separate native-provider evidence.","It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":null},"operation":"inspect_managed_native_boundaries","outputContractVersion":1,"pagination":"offset","provider":{"id":"rea-dotnet-static","name":"REA managed static analysis provider","version":"1"},"reason":null}],"identity":{"id":"rea-dotnet-static","name":"REA managed static analysis provider","version":"1"}}],"catalog":[{"analysisOperation":"address_name","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Resolve the primary analyzed name at a code or data address. Headless providers require an explicit address; GUI providers may default to their current cursor. Null means the provider has no primary name at that address.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"address_name","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Address Name"},{"analysisOperation":"comment","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Read the regular analysis comment at an address, defaulting to the current cursor. This is read-only and returns null when no comment exists; use set_comment to persist a finding.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"comment","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Comment"},{"analysisOperation":"current_address","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return Hopper\'s current cursor address for the selected document. Use only for interactive navigation state; prefer explicit addresses in reproducible investigations.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"current_address","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Current Address"},{"analysisOperation":"current_procedure","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the analyzed procedure containing Hopper\'s current cursor. Use procedure_info or analyze_function next; this depends on GUI cursor state and is not an exhaustive lookup.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"current_procedure","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Current Procedure"},{"analysisOperation":"current_document","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the document currently selected by REA\'s Hopper bridge. Use list_documents before switching when several documents are open.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"current_document","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Current Document"},{"analysisOperation":"goto_address","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Move Hopper\'s GUI cursor to a hexadecimal address and return the resolved address. This changes navigation state but not analysis data; use explicit-address tools for headless workflows.","effects":{"accessesNetwork":false,"changesUiState":true,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"goto_address","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Goto Address"},{"analysisOperation":"inline_comment","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Read the inline instruction comment at an address, defaulting to the current cursor. Returns null when absent; use set_inline_comment to write one.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"inline_comment","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inline Comment"},{"analysisOperation":"list_bookmarks","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"List every bookmark in the selected Hopper document as address and name pairs. Use bookmarks as analyst-authored navigation aids; this does not discover code references.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_bookmarks","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Bookmarks"},{"analysisOperation":"list_documents","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"List provider program or document identities. Hopper may expose several documents; a Ghidra headless session contains exactly its one imported Program.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_documents","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"type":"string"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Documents"},{"analysisOperation":"list_names","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Page through analyzed memory and external symbols as address/value pairs. Provider metadata distinguishes Ghidra primary, dynamic, external, type, and source facts when available; follow next_offset before claiming exhaustive coverage.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"limit":100,"offset":0}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_names","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"procedure":{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target"],"type":"object"},"string":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"encoding":{"type":"string"},"termination":{"enum":["missing","present_or_not_required"],"type":"string"}},"required":["encoding","termination","byte_length"],"type":"object"},"symbol":{"additionalProperties":false,"properties":{"dynamic":{"type":"boolean"},"external":{"type":"boolean"},"primary":{"type":"boolean"},"source":{"enum":["default","analysis","ai","imported","user_defined"],"type":"string"},"type":{"type":"string"}},"required":["primary","dynamic","external","type","source"],"type":"object"},"value":{"type":"string"},"value_truncated":{"type":"boolean"}},"required":["address","value"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Names"},{"analysisOperation":"list_procedures","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Page through analyzed procedures as address/value pairs after provider analysis. Ghidra metadata distinguishes thunks and external functions; follow next_offset for exhaustive coverage and use returned addresses in later function operations.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"limit":100,"offset":0}],"properties":{"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_procedures","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"procedure":{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target"],"type":"object"},"string":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"encoding":{"type":"string"},"termination":{"enum":["missing","present_or_not_required"],"type":"string"}},"required":["encoding","termination","byte_length"],"type":"object"},"symbol":{"additionalProperties":false,"properties":{"dynamic":{"type":"boolean"},"external":{"type":"boolean"},"primary":{"type":"boolean"},"source":{"enum":["default","analysis","ai","imported","user_defined"],"type":"string"},"type":{"type":"string"}},"required":["primary","dynamic","external","type","source"],"type":"object"},"value":{"type":"string"},"value_truncated":{"type":"boolean"}},"required":["address","value"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Procedures"},{"analysisOperation":"list_segments","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"List segments or memory blocks using exclusive end addresses. Ghidra reports block permissions, address space, image base, initialization, and overlay facts; Hopper marks unavailable permissions explicitly.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_segments","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"additionalProperties":false,"properties":{"address_space":{"type":"string"},"end":{"type":"string"},"executable":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"image_base":{"type":"string"},"initialized":{"type":"boolean"},"name":{"type":"string"},"overlay":{"type":"boolean"},"permissions":{"anyOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"source":{"const":"ghidra-memory-block","type":"string"}},"required":["available","source"],"type":"object"}]},"provenance":{"enum":["hopper-public-python-api","ghidra-memory-block"],"type":"string"},"readable":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"sections":{"items":{"additionalProperties":false,"properties":{"address_space":{"type":"string"},"end":{"type":"string"},"executable":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"image_base":{"type":"string"},"initialized":{"type":"boolean"},"name":{"type":"string"},"overlay":{"type":"boolean"},"permissions":{"anyOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"source":{"const":"ghidra-memory-block","type":"string"}},"required":["available","source"],"type":"object"}]},"provenance":{"enum":["hopper-public-python-api","ghidra-memory-block"],"type":"string"},"readable":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"start":{"type":"string"},"writable":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["name","start","end","readable","writable","executable","permissions","provenance"],"type":"object"},"type":"array"},"start":{"type":"string"},"writable":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["name","start","end","readable","writable","executable","permissions","provenance","sections"],"type":"object"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Segments"},{"analysisOperation":"list_strings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Page through provider-defined strings, or filter to one address, as address/value pairs. Ghidra reports charset, missing-terminator status, byte length, and explicit value truncation; follow next_offset for exhaustive results.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"limit":100,"offset":0}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_strings","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"procedure":{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target"],"type":"object"},"string":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"encoding":{"type":"string"},"termination":{"enum":["missing","present_or_not_required"],"type":"string"}},"required":["encoding","termination","byte_length"],"type":"object"},"symbol":{"additionalProperties":false,"properties":{"dynamic":{"type":"boolean"},"external":{"type":"boolean"},"primary":{"type":"boolean"},"source":{"enum":["default","analysis","ai","imported","user_defined"],"type":"string"},"type":{"type":"string"}},"required":["primary","dynamic","external","type","source"],"type":"object"},"value":{"type":"string"},"value_truncated":{"type":"boolean"}},"required":["address","value"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Strings"},{"analysisOperation":"next_address","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the next analyzed object address after an explicit address or current cursor. This is a navigation primitive, not instruction-flow or CFG analysis.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"next_address","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Next Address"},{"analysisOperation":"prev_address","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the previous analyzed instruction start before an explicit address or current cursor. This is a navigation primitive and may fail at document boundaries.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"prev_address","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Prev Address"},{"analysisOperation":"procedure_address","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Resolve an unambiguous procedure symbol name or provider-normalized address to its canonical entry address. External address spaces remain explicit; use the result before xrefs, assembly, or decompilation.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_address","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Address"},{"analysisOperation":"procedure_assembly","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return assembly for one analyzed procedure identified by symbol or hexadecimal address. Use when pseudocode loses calling-convention or instruction-level detail; output is currently returned as one unpaginated string.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_assembly","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Assembly"},{"analysisOperation":"procedure_callees","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the provider\'s resolved direct callees for one procedure identified by symbol or address. Unresolved indirect calls may be absent; use analyze_function and typed references to preserve available edge uncertainty.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_callees","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"type":"string"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Callees"},{"analysisOperation":"procedure_callers","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the provider\'s resolved direct callers for one procedure identified by symbol or address. Results reflect completed static analysis and may omit unresolved indirect references.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_callers","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"type":"string"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Callers"},{"analysisOperation":"procedure_info","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return bounded metadata for one procedure identified by symbol or address: entrypoint, signature, locals, size, and block count. Follow with decompilation or assembly for behavior.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_info","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"basicblock_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"entrypoint":{"type":"string"},"length":{"minimum":0,"type":"number"},"locals":{"items":{"additionalProperties":false,"properties":{"description":{"type":"string"},"provenance":{"minLength":1,"type":"string"}},"required":["description","provenance"],"type":"object"},"type":"array"},"name":{"type":"string"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","entrypoint","basicblock_count","length","signature","locals","classification"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Info"},{"analysisOperation":"read_function_instructions","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Read one offset-paginated window of raw instructions for an analyzed procedure without decompilation, caller discovery, or whole-program string/name scans. Use this fast path for instruction-level orientation; follow next_offset when truncated.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"limit":64,"offset":0,"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"limit":{"default":64,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":100000,"minimum":0,"type":"integer"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"read_function_instructions","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"instruction_scan_truncated":{"type":"boolean"},"instructions":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"type":"string"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"type":"string"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"instructions_scanned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"}},"required":["procedure","instructions","instructions_scanned","instruction_scan_truncated","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Read Function Instructions"},{"analysisOperation":"read_bytes","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Read at most 4,096 analyzed bytes from one provider-normalized virtual address. The hexadecimal payload reports the exact returned length; incomplete reads remain explicit and unsupported provider APIs return typed capability unavailability.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000","length":16}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"length":{"default":256,"description":"Value for length.","maximum":4096,"minimum":1,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"read_bytes","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"address":{"type":"string"},"bytes_hex":{"pattern":"^(?:[a-f0-9]{2})*$","type":"string"},"complete":{"type":"boolean"},"requested_bytes":{"maximum":4096,"minimum":1,"type":"integer"},"returned_bytes":{"maximum":4096,"minimum":0,"type":"integer"}},"required":["address","requested_bytes","returned_bytes","bytes_hex","complete"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Read Bytes"},{"analysisOperation":"address_to_file_offset","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Map one provider-normalized virtual address to its original nonnegative file offset. Unmapped addresses fail explicitly, and providers without an authoritative mapping API return typed capability unavailability.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"address_to_file_offset","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"address":{"type":"string"},"file_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["address","file_offset"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Address To File Offset"},{"analysisOperation":"procedure_references","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return a bounded set of raw incoming or outgoing reference edges for one procedure. Endpoint procedures are resolved only from provider containment; Ghidra preserves observed reference kinds while providers without kind authority mark them unavailable.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"direction":"outgoing","limit":100,"max_instructions":500,"offset":0,"procedure":"main"}],"properties":{"direction":{"default":"outgoing","description":"Direction in which to traverse or compare relationships.","enum":["incoming","outgoing"],"type":"string"},"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"max_instructions":{"default":500,"description":"Maximum permitted instructions for this operation.","maximum":5000,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_references","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"direction":{"enum":["incoming","outgoing"],"type":"string"},"instruction_scan_truncated":{"type":"boolean"},"instructions_scanned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"references":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]}},"required":["procedure","direction","references","instructions_scanned","instruction_scan_truncated"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure References"},{"analysisOperation":"procedure_pseudo_code","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Decompile one analyzed procedure by symbol name or provider-normalized address. Returns provider-specific pseudocode, never original source or cross-provider text equivalence, and may return null; request procedure_assembly when instruction precision matters.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_pseudo_code","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Pseudo Code"},{"analysisOperation":"resolve_containing_procedure","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Resolve an arbitrary address, including an interior instruction or exact external entry, to its provider-analyzed containing procedure. A negative result distinguishes outside segments from not in a procedure and is never guessed from nearby symbols.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"resolve_containing_procedure","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"oneOf":[{"additionalProperties":false,"properties":{"found":{"const":true,"type":"boolean"},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"query_address":{"type":"string"}},"required":["query_address","found","procedure"],"type":"object"},{"additionalProperties":false,"properties":{"found":{"const":false,"type":"boolean"},"procedure":{"type":"null"},"query_address":{"type":"string"},"reason":{"enum":["outside_segments","not_in_procedure"],"type":"string"}},"required":["query_address","found","procedure","reason"],"type":"object"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Resolve Containing Procedure"},{"analysisOperation":"search_procedures","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Search analyzed procedure names using literal matching by default or regex opt-in. Providers bound search work and reject regex constructs, paths, candidates, or cumulative work outside their finite budgets. Results are deterministic and offset-paginated.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"case_sensitive":false,"limit":100,"mode":"literal","offset":0,"pattern":"main"}],"properties":{"case_sensitive":{"default":false,"description":"Whether to match case","type":"boolean"},"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"mode":{"default":"literal","description":"Operation mode that selects the requested behavior.","enum":["literal","regex"],"type":"string"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"pattern":{"description":"The literal text or bounded regex pattern to search for","maxLength":256,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["pattern"],"type":"object"},"kind":"official-proxy","name":"search_procedures","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"value":{"type":"string"},"value_truncated":{"type":"boolean"}},"required":["address","value","value_truncated"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Search Procedures"},{"analysisOperation":"search_strings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Search analyzed strings using literal matching by default or regex opt-in. Providers bound search work and reject regex constructs, paths, candidates, or cumulative work outside their finite budgets. Results are deterministic, offset-paginated, and explicitly truncated.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"case_sensitive":false,"limit":100,"mode":"literal","offset":0,"pattern":"authorization failed"}],"properties":{"case_sensitive":{"default":false,"description":"Whether to match case","type":"boolean"},"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"mode":{"default":"literal","description":"Operation mode that selects the requested behavior.","enum":["literal","regex"],"type":"string"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"pattern":{"description":"The literal text or bounded regex pattern to search for","maxLength":256,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["pattern"],"type":"object"},"kind":"official-proxy","name":"search_strings","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"value":{"type":"string"},"value_truncated":{"type":"boolean"}},"required":["address","value","value_truncated"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Search Strings"},{"analysisOperation":"set_address_name","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Assign an analyst name to one hexadecimal address and report Hopper\'s boolean result. This mutates analysis metadata; read it back with address_name before relying on it.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000","name":"entry"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"name":{"description":"Exact name used by this operation.","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address","name"],"type":"object"},"kind":"official-proxy","name":"set_address_name","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"boolean"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Address Name"},{"analysisOperation":"set_addresses_names","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Assign analyst names to an address/name map and return per-address success booleans. This mutates analysis metadata; use for bounded batches and verify failures individually.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"names":{"0x1000":"entry"}}],"properties":{"document":{"description":"The document name","type":"string"},"names":{"additionalProperties":{"type":"string"},"description":"Value for names.","propertyNames":{"type":"string"},"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["names"],"type":"object"},"kind":"official-proxy","name":"set_addresses_names","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":{"type":"boolean"},"propertyNames":{"type":"string"},"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Addresses Names"},{"analysisOperation":"set_bookmark","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Create or replace a bookmark at a hexadecimal address. This mutates navigation metadata; verify with list_bookmarks and do not treat bookmarks as binary evidence.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"name":{"description":"Exact name used by this operation.","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"set_bookmark","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"boolean"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Bookmark"},{"analysisOperation":"set_comment","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Write a regular analysis comment at a hexadecimal address and return whether readback matched. This mutates the Hopper document; use comments to record evidence IDs or reasoning.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000","comment":"validated entry point"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"comment":{"description":"Exact analyst comment text to write.","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address","comment"],"type":"object"},"kind":"official-proxy","name":"set_comment","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"boolean"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Comment"},{"analysisOperation":"set_current_document","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Select an already-open Hopper document by exact document name. This changes subsequent default-document routing; call list_documents first and prefer explicit document inputs where reproducibility matters.","effects":{"accessesNetwork":false,"changesUiState":true,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"document":"fixture"}],"properties":{"document":{"description":"Exact provider document or program identity.","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["document"],"type":"object"},"kind":"official-proxy","name":"set_current_document","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Current Document"},{"analysisOperation":"set_inline_comment","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Write an inline instruction comment at a hexadecimal address and return whether readback matched. This mutates analysis metadata; confirm with inline_comment.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000","comment":"calls parser"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"comment":{"description":"Exact analyst comment text to write.","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address","comment"],"type":"object"},"kind":"official-proxy","name":"set_inline_comment","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"boolean"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Inline Comment"},{"analysisOperation":"unset_bookmark","annotations":{"destructiveHint":true,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Remove the bookmark at a hexadecimal address and return whether it is absent. This mutates navigation metadata and does not alter binary bytes.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":true,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"unset_bookmark","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"boolean"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Unset Bookmark"},{"analysisOperation":"xrefs","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return analyzed references to a code or data address, defaulting to the current cursor. Use to connect strings, globals, selectors, and functions; bare addresses are untyped and indirect references may be incomplete.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"xrefs","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"type":"string"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Xrefs"},{"analysisOperation":"swift_classes","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Discover legacy-mangled Swift class procedures after exhaustively paging analyzed procedures. Returns at most 100 entries and scans at most 5,000 symbols; use analyze_swift_types for other Swift kinds.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"pattern":""}],"properties":{"pattern":{"default":"","description":"Text or bounded pattern used to filter matching results.","type":"string"}},"type":"object"},"kind":"enhanced","name":"swift_classes","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"classes":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"},"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["count","classes"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Swift Classes"},{"analysisOperation":"get_objc_classes","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Discover and deduplicate Objective-C class labels after exhaustively paging names, optionally filtering by literal substring. Returns at most 100 classes; inspect matching metadata and references next.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"pattern":""}],"properties":{"pattern":{"default":"","description":"Text or bounded pattern used to filter matching results.","type":"string"}},"type":"object"},"kind":"enhanced","name":"get_objc_classes","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"classes":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"},"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["count","classes"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Get Objc Classes"},{"analysisOperation":"get_objc_protocols","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Discover and deduplicate Objective-C and Swift protocol labels after exhaustively paging names. Returns at most 100 entries; use xrefs or analyze_function to connect a protocol to implementations.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{}],"properties":{},"type":"object"},"kind":"enhanced","name":"get_objc_protocols","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"protocols":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"}},"required":["count","protocols"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Get Objc Protocols"},{"analysisOperation":"batch_decompile","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Decompile up to 20 explicit procedure symbols or addresses concurrently. Returns ordered per-item ok/error variants and aggregate counts; use analyze_function for a richer single-function dossier.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"addresses":[]}],"properties":{"addresses":{"default":[],"description":"Ordered provider-normalized procedure addresses to analyze.","items":{"description":"A provider-normalized procedure address","type":"string"},"maxItems":20,"type":"array"}},"type":"object"},"kind":"enhanced","name":"batch_decompile","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"failed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"pseudocode":{"minLength":1,"type":"string"},"status":{"const":"ok","type":"string"}},"required":["address","status","pseudocode"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"type":"string"},"error":{"oneOf":[{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"invalid_request","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"unreadable_output","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"capability_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_timeout","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cancelled","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_integrity_mismatch","type":"string"},"details":{"additionalProperties":false,"properties":{"calculated_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"declared_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"logical_path":{"type":"string"},"unpacked":{"type":"boolean"}},"required":["logical_path","declared_sha256","calculated_sha256","unpacked"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation","details"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_operation_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"evidence_integrity_mismatch","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"truncated","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"permission_required","type":"string"},"details":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"ceiling":{"anyOf":[{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"},{"type":"null"}]},"missing":{"additionalProperties":false,"properties":{"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"const":true,"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"type":"object"},"requested":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"}},"required":["capability","requested","missing","ceiling"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"process_capture_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cleanup_incomplete","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"revision_conflict","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"outside_approved_root","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"configuration_invalid","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"target_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"execution_failure","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"plan_stale","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"}]},"status":{"const":"error","type":"string"}},"required":["address","status","error"],"type":"object"}]},"type":"array"},"succeeded":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","total","succeeded","failed"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Batch Decompile"},{"analysisOperation":"get_call_graph","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Traverse the bound provider\'s caller or callee relationships from one symbol or address for at most five levels. Every node has an ok/error status and failures use safe typed projections; unresolved indirect calls may be missing and results are not a whole-program CFG.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"address":"0x1000","depth":2,"direction":"forward"}],"properties":{"address":{"description":"A provider-normalized procedure address","type":"string"},"depth":{"default":2,"description":"Value for depth.","maximum":5,"minimum":1,"type":"integer"},"direction":{"default":"forward","description":"Direction in which to traverse or compare relationships.","enum":["forward","backward"],"type":"string"}},"required":["address"],"type":"object"},"kind":"enhanced","name":"get_call_graph","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"calls":{"items":{"type":"string"},"type":"array"},"status":{"const":"ok","type":"string"}},"required":["address","status","calls"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"type":"string"},"error":{"oneOf":[{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"invalid_request","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"unreadable_output","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"capability_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_timeout","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cancelled","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_integrity_mismatch","type":"string"},"details":{"additionalProperties":false,"properties":{"calculated_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"declared_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"logical_path":{"type":"string"},"unpacked":{"type":"boolean"}},"required":["logical_path","declared_sha256","calculated_sha256","unpacked"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation","details"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_operation_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"evidence_integrity_mismatch","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"truncated","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"permission_required","type":"string"},"details":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"ceiling":{"anyOf":[{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"},{"type":"null"}]},"missing":{"additionalProperties":false,"properties":{"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"const":true,"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"type":"object"},"requested":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"}},"required":["capability","requested","missing","ceiling"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"process_capture_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cleanup_incomplete","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"revision_conflict","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"outside_approved_root","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"configuration_invalid","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"target_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"execution_failure","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"plan_stale","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"}]},"status":{"const":"error","type":"string"}},"required":["address","status","error"],"type":"object"}]},"type":"array"},"propertyNames":{"type":"string"},"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Get Call Graph"},{"analysisOperation":"analyze_swift_types","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Categorize exhaustively paged procedure names into Swift classes, structs, enums, protocols, extensions, and other symbols. Scans at most 5,000 names and returns at most 50 entries per category.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{}],"properties":{},"type":"object"},"kind":"enhanced","name":"analyze_swift_types","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"categories":{"additionalProperties":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"}},"required":["count","items"],"type":"object"},"propertyNames":{"type":"string"},"type":"object"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","categories"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Analyze Swift Types"},{"analysisOperation":"find_xrefs_to_name","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Resolve an exact name through the bound provider\'s exhaustively paged name inventory and return a resolved or unresolved result. Unresolved names use the stable name_not_found reason; this compact xref workflow returns address-only projections.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"name":"malloc"}],"properties":{"name":{"description":"Exact name used by this operation.","type":"string"}},"required":["name"],"type":"object"},"kind":"enhanced","name":"find_xrefs_to_name","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"},"status":{"const":"resolved","type":"string"},"xrefs":{"items":{"type":"string"},"type":"array"}},"required":["status","name","address","xrefs"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"type":"string"},"reason":{"const":"name_not_found","type":"string"},"status":{"const":"unresolved","type":"string"}},"required":["status","name","reason"],"type":"object"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Find Xrefs To Name"},{"analysisOperation":"binary_overview","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Use immediately after opening a target to summarize document, exhaustive procedure/string counts, and a bounded segment sample. detail controls segment fields and limit controls only the returned segment sample.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"detail":"concise","limit":10}],"properties":{"detail":{"default":"concise","description":"Requested response detail level.","enum":["concise","detailed"],"type":"string"},"limit":{"default":10,"description":"Maximum number of results to return in this page.","maximum":50,"minimum":1,"type":"integer"}},"type":"object"},"kind":"enhanced","name":"binary_overview","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"detail":{"enum":["concise","detailed"],"type":"string"},"document":{"type":"string"},"procedure_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"segment_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"segments":{"items":{"additionalProperties":false,"properties":{"end":{"type":"string"},"length":{"minimum":0,"type":"number"},"name":{"type":"string"},"start":{"type":"string"}},"required":["name","start","end"],"type":"object"},"type":"array"},"string_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["document","detail","segments","segment_count","procedure_count","string_count"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Binary Overview"},{"analysisOperation":"analyze_function","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Preferred bounded analysis for one procedure symbol or address. Returns identity, provider-specific pseudocode, optional assembly, comments, calls, typed-or-explicitly-unavailable references, referenced strings/names, and local CFG blocks with exact truncation metadata. Providers with a structured decompiler model also expose native API boundary types, confidence, evidence, jump-table data/target addresses, and explicit decompiler-artifact labels.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"assembly_offset":0,"collection_offset":{"basic_blocks":0,"callees":0,"callers":0,"comments":0,"incoming_references":0,"outgoing_references":0,"referenced_names":0,"referenced_strings":0},"include_assembly":false,"limit":100,"max_instructions":500,"max_pseudocode_chars":20000,"procedure":"main","pseudocode_offset":0}],"properties":{"assembly_offset":{"default":0,"description":"Zero-based index of the first assembly to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"collection_offset":{"additionalProperties":false,"default":{"basic_blocks":0,"callees":0,"callers":0,"comments":0,"incoming_references":0,"outgoing_references":0,"referenced_names":0,"referenced_strings":0},"description":"Zero-based index of the first collection to return.","properties":{"basic_blocks":{"default":0,"description":"Value for basic blocks.","maximum":9007199254740991,"minimum":0,"type":"integer"},"callees":{"default":0,"description":"Value for callees.","maximum":9007199254740991,"minimum":0,"type":"integer"},"callers":{"default":0,"description":"Value for callers.","maximum":9007199254740991,"minimum":0,"type":"integer"},"comments":{"default":0,"description":"Value for comments.","maximum":9007199254740991,"minimum":0,"type":"integer"},"incoming_references":{"default":0,"description":"Value for incoming references.","maximum":9007199254740991,"minimum":0,"type":"integer"},"outgoing_references":{"default":0,"description":"Value for outgoing references.","maximum":9007199254740991,"minimum":0,"type":"integer"},"referenced_names":{"default":0,"description":"Value for referenced names.","maximum":9007199254740991,"minimum":0,"type":"integer"},"referenced_strings":{"default":0,"description":"Value for referenced strings.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},"include_assembly":{"default":false,"description":"Whether to include assembly in the result.","type":"boolean"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"max_instructions":{"default":500,"description":"Maximum permitted instructions for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_pseudocode_chars":{"default":20000,"description":"Maximum permitted pseudocode chars for this operation.","maximum":100000,"minimum":1,"type":"integer"},"procedure":{"description":"A procedure name or address","type":"string"},"pseudocode_offset":{"default":0,"description":"Zero-based index of the first pseudocode to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["procedure"],"type":"object"},"kind":"enhanced","name":"analyze_function","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"assembly":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"type":"string"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"type":"string"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"basic_blocks":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"end":{"type":"string"},"start":{"type":"string"},"successors":{"items":{"type":"string"},"type":"array"}},"required":["start","end","successors"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"end":{"type":"string"},"start":{"type":"string"},"successors":{"items":{"type":"string"},"type":"array"}},"required":["start","end","successors"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"callees":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"callers":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"comments":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"kind":{"enum":["comment","inline"],"type":"string"},"text":{"type":"string"}},"required":["address","kind","text"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"kind":{"enum":["comment","inline"],"type":"string"},"text":{"type":"string"}},"required":["address","kind","text"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"incoming_references":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"instruction_scan":{"additionalProperties":false,"properties":{"scanned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"}},"required":["scanned","truncated"],"type":"object"},"limitations":{"default":[],"items":{"type":"string"},"type":"array"},"native_api":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"minLength":1,"type":"string"},"residual_unknowns":{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"}},"required":["available","reason","residual_unknowns"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"calling_convention":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"type":"string"},"type":"array"},"jump_tables":{"items":{"additionalProperties":false,"properties":{"data_sources":{"items":{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"confidence":{"enum":["low","medium","high"],"type":"string"},"entry_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"entry_size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"provenance":{"enum":["ghidra-decompiler-load-table","ghidra-dispatch-block-data-reference"],"type":"string"}},"required":["address","provenance","entry_size_bytes","entry_count","confidence","evidence"],"type":"object"},"type":"array"},"data_sources_truncated":{"type":"boolean"},"dispatch_address":{"minLength":1,"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"mappings":{"items":{"additionalProperties":false,"properties":{"case_value":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"confidence":{"enum":["low","medium","high"],"type":"string"},"data_addresses":{"items":{"minLength":1,"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"target_address":{"minLength":1,"type":"string"}},"required":["case_value","target_address","data_addresses","confidence","evidence"],"type":"object"},"type":"array"},"mappings_truncated":{"type":"boolean"}},"required":["dispatch_address","data_sources","data_sources_truncated","mappings","mappings_truncated","limitations"],"type":"object"},"type":"array"},"jump_tables_truncated":{"type":"boolean"},"limitations":{"items":{"type":"string"},"type":"array"},"parameters":{"items":{"additionalProperties":false,"properties":{"confidence":{"enum":["low","medium","high"],"type":"string"},"data_type":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"name":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"ordinal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"role":{"const":"parameter","type":"string"},"size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"storage":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"required":["ordinal","name","data_type","size_bytes","storage","confidence","evidence","decompiler_artifacts","role"],"type":"object"},"type":"array"},"parameters_truncated":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"pseudocode":{"additionalProperties":false,"properties":{"classification":{"const":"decompiler-generated-non-source","type":"string"},"compilable":{"const":false,"type":"boolean"}},"required":["classification","compilable"],"type":"object"},"return_type":{"additionalProperties":false,"properties":{"confidence":{"enum":["low","medium","high"],"type":"string"},"data_type":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"name":{"type":"null"},"ordinal":{"type":"null"},"role":{"const":"return","type":"string"},"size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"storage":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"required":["ordinal","name","data_type","size_bytes","storage","confidence","evidence","decompiler_artifacts","role"],"type":"object"},"signature_source":{"minLength":1,"type":"string"}},"required":["available","provenance","signature_source","calling_convention","return_type","parameters","parameters_truncated","jump_tables","jump_tables_truncated","pseudocode","decompiler_artifacts","limitations"],"type":"object"}]},{"type":"null"}],"default":null},"outgoing_references":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"locals":{"items":{"additionalProperties":false,"properties":{"description":{"type":"string"},"provenance":{"minLength":1,"type":"string"}},"required":["description","provenance"],"type":"object"},"type":"array"},"name":{"type":"string"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["address","name","classification","signature","locals"],"type":"object"},"pseudocode":{"oneOf":[{"additionalProperties":false,"properties":{"next_offset":{"type":"null"},"returned_chars":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"type":"string"},"total_chars":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"const":false,"type":"boolean"}},"required":["text","total_chars","returned_chars","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned_chars":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"type":"string"},"total_chars":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"const":true,"type":"boolean"}},"required":["text","total_chars","returned_chars","truncated","next_offset"],"type":"object"}]},"referenced_names":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"source_address":{"type":"string"},"value":{"type":"string"}},"required":["address","value","source_address"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"source_address":{"type":"string"},"value":{"type":"string"}},"required":["address","value","source_address"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"referenced_strings":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"source_address":{"type":"string"},"value":{"type":"string"}},"required":["address","value","source_address"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"source_address":{"type":"string"},"value":{"type":"string"}},"required":["address","value","source_address"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]}},"required":["procedure","pseudocode","assembly","comments","callers","callees","incoming_references","outgoing_references","referenced_strings","referenced_names","basic_blocks","instruction_scan","native_api","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Analyze Function"},{"analysisOperation":"inspect_native_api","annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Reconstruct one native function boundary through inspectable substeps. Returns structured inferred return/parameter types with confidence and evidence, jump-table dispatch/data/target mappings, explicit decompiler-artifact labels, unsupported branches, and residual unknowns.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"max_instructions":500,"max_pseudocode_chars":20000,"procedure":"main"}],"properties":{"max_instructions":{"default":500,"description":"Maximum permitted instructions for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_pseudocode_chars":{"default":20000,"description":"Maximum permitted pseudocode chars for this operation.","maximum":100000,"minimum":1,"type":"integer"},"procedure":{"description":"A procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record unsupported native API branches durably","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"enhanced","name":"inspect_native_api","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"boundary":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"minLength":1,"type":"string"},"residual_unknowns":{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"}},"required":["available","reason","residual_unknowns"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"calling_convention":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"type":"string"},"type":"array"},"jump_tables":{"items":{"additionalProperties":false,"properties":{"data_sources":{"items":{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"confidence":{"enum":["low","medium","high"],"type":"string"},"entry_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"entry_size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"provenance":{"enum":["ghidra-decompiler-load-table","ghidra-dispatch-block-data-reference"],"type":"string"}},"required":["address","provenance","entry_size_bytes","entry_count","confidence","evidence"],"type":"object"},"type":"array"},"data_sources_truncated":{"type":"boolean"},"dispatch_address":{"minLength":1,"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"mappings":{"items":{"additionalProperties":false,"properties":{"case_value":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"confidence":{"enum":["low","medium","high"],"type":"string"},"data_addresses":{"items":{"minLength":1,"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"target_address":{"minLength":1,"type":"string"}},"required":["case_value","target_address","data_addresses","confidence","evidence"],"type":"object"},"type":"array"},"mappings_truncated":{"type":"boolean"}},"required":["dispatch_address","data_sources","data_sources_truncated","mappings","mappings_truncated","limitations"],"type":"object"},"type":"array"},"jump_tables_truncated":{"type":"boolean"},"limitations":{"items":{"type":"string"},"type":"array"},"parameters":{"items":{"additionalProperties":false,"properties":{"confidence":{"enum":["low","medium","high"],"type":"string"},"data_type":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"name":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"ordinal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"role":{"const":"parameter","type":"string"},"size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"storage":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"required":["ordinal","name","data_type","size_bytes","storage","confidence","evidence","decompiler_artifacts","role"],"type":"object"},"type":"array"},"parameters_truncated":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"pseudocode":{"additionalProperties":false,"properties":{"classification":{"const":"decompiler-generated-non-source","type":"string"},"compilable":{"const":false,"type":"boolean"}},"required":["classification","compilable"],"type":"object"},"return_type":{"additionalProperties":false,"properties":{"confidence":{"enum":["low","medium","high"],"type":"string"},"data_type":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"name":{"type":"null"},"ordinal":{"type":"null"},"role":{"const":"return","type":"string"},"size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"storage":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"required":["ordinal","name","data_type","size_bytes","storage","confidence","evidence","decompiler_artifacts","role"],"type":"object"},"signature_source":{"minLength":1,"type":"string"}},"required":["available","provenance","signature_source","calling_convention","return_type","parameters","parameters_truncated","jump_tables","jump_tables_truncated","pseudocode","decompiler_artifacts","limitations"],"type":"object"}]},"procedure":{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["address","name"],"type":"object"},"residual_unknowns":{"items":{"minLength":1,"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"substeps":{"items":{"additionalProperties":false,"properties":{"observations":{"items":{"minLength":1,"type":"string"},"type":"array"},"operation":{"enum":["analyze_function","project_native_api_boundary","preserve_residual_unknowns"],"type":"string"},"status":{"enum":["completed","unsupported"],"type":"string"}},"required":["operation","status","observations"],"type":"object"},"maxItems":3,"minItems":3,"type":"array"},"unsupported_branches":{"items":{"minLength":1,"type":"string"},"type":"array"}},"required":["schema_version","procedure","boundary","substeps","unsupported_branches","residual_unknowns"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Native Api"},{"analysisOperation":"trace_feature","annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Trace a bounded literal feature query through matching strings and procedures, xrefs, and truthful containing-procedure resolution. Returns the operation budget, truncation, and residual unknowns; unknown_registry_approved: true records them durably without inferring reference kinds.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"case_sensitive":false,"limit":20,"max_operations":20,"query":"license"}],"properties":{"case_sensitive":{"default":false,"description":"Whether text matching distinguishes uppercase and lowercase.","type":"boolean"},"limit":{"default":20,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"max_operations":{"default":20,"description":"Maximum permitted operations for this operation.","maximum":100,"minimum":1,"type":"integer"},"query":{"description":"Non-empty feature or text query to investigate.","minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residuals durably","type":"boolean"}},"required":["query"],"type":"object"},"kind":"enhanced","name":"trace_feature","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"matches":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"type":{"enum":["string","procedure"],"type":"string"},"value":{"type":"string"}},"required":["type","address","value"],"type":"object"},"type":"array"},"operation_budget":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"operations_used":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"query":{"type":"string"},"references":{"items":{"additionalProperties":false,"properties":{"containing_procedure":{"oneOf":[{"additionalProperties":false,"properties":{"found":{"const":true,"type":"boolean"},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"query_address":{"type":"string"}},"required":["query_address","found","procedure"],"type":"object"},{"additionalProperties":false,"properties":{"found":{"const":false,"type":"boolean"},"procedure":{"type":"null"},"query_address":{"type":"string"},"reason":{"enum":["outside_segments","not_in_procedure"],"type":"string"}},"required":["query_address","found","procedure","reason"],"type":"object"}]},"source_address":{"type":"string"},"target_address":{"type":"string"}},"required":["target_address","source_address","containing_procedure"],"type":"object"},"type":"array"},"residual_unknowns":{"items":{"type":"string"},"type":"array"},"search_mode":{"const":"literal","type":"string"},"truncated":{"type":"boolean"}},"required":["query","search_mode","operations_used","operation_budget","matches","references","truncated","residual_unknowns"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Trace Feature"},{"analysisOperation":"find_code_for_string","annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Resolve one literal string query to bounded analyzed string entries, xrefs, and truthful containing-procedure candidates. Returns an Evidence ID, exact operation budget, truncation, and residual unknowns; it never infers reference kinds or runtime reachability.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"case_sensitive":false,"limit":20,"max_operations":20,"query":"authorization failed"}],"properties":{"case_sensitive":{"default":false,"description":"Whether text matching distinguishes uppercase and lowercase.","type":"boolean"},"limit":{"default":20,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"max_operations":{"default":20,"description":"Maximum permitted operations for this operation.","maximum":100,"minimum":1,"type":"integer"},"query":{"description":"Non-empty feature or text query to investigate.","minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residuals durably","type":"boolean"}},"required":["query"],"type":"object"},"kind":"enhanced","name":"find_code_for_string","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"matches":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"type":{"enum":["string","procedure"],"type":"string"},"value":{"type":"string"}},"required":["type","address","value"],"type":"object"},"type":"array"},"operation_budget":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"operations_used":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"query":{"type":"string"},"references":{"items":{"additionalProperties":false,"properties":{"containing_procedure":{"oneOf":[{"additionalProperties":false,"properties":{"found":{"const":true,"type":"boolean"},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"query_address":{"type":"string"}},"required":["query_address","found","procedure"],"type":"object"},{"additionalProperties":false,"properties":{"found":{"const":false,"type":"boolean"},"procedure":{"type":"null"},"query_address":{"type":"string"},"reason":{"enum":["outside_segments","not_in_procedure"],"type":"string"}},"required":["query_address","found","procedure","reason"],"type":"object"}]},"source_address":{"type":"string"},"target_address":{"type":"string"}},"required":["target_address","source_address","containing_procedure"],"type":"object"},"type":"array"},"residual_unknowns":{"items":{"type":"string"},"type":"array"},"search_mode":{"const":"literal","type":"string"},"truncated":{"type":"boolean"}},"required":["query","search_mode","operations_used","operation_budget","matches","references","truncated","residual_unknowns"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Find Code For String"},{"analysisOperation":"trace_call_path","annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Trace a deterministic bounded caller or callee path from one exact procedure address, optionally stopping at a goal. Returns visited nodes, direct-call edges, one shortest traversal path, failures, frontier, consumed limits, an Evidence ID, and explicit residual unknowns without claiming unresolved indirect calls are absent.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"direction":"forward","goal":"0x1100","max_depth":5,"max_nodes":100,"max_operations":100,"start":"0x1000"}],"properties":{"direction":{"default":"forward","description":"Direction in which to traverse or compare relationships.","enum":["forward","backward"],"type":"string"},"goal":{"description":"An optional provider-normalized destination address","type":"string"},"max_depth":{"default":5,"description":"Maximum permitted depth for this operation.","maximum":10,"minimum":1,"type":"integer"},"max_nodes":{"default":100,"description":"Maximum permitted nodes for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_operations":{"default":100,"description":"Maximum permitted operations for this operation.","maximum":500,"minimum":1,"type":"integer"},"start":{"description":"A provider-normalized procedure address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residuals durably","type":"boolean"}},"required":["start"],"type":"object"},"kind":"enhanced","name":"trace_call_path","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"direction":{"enum":["forward","backward"],"type":"string"},"edges":{"items":{"additionalProperties":false,"properties":{"discovery_depth":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"source_address":{"type":"string"},"target_address":{"type":"string"}},"required":["source_address","target_address","discovery_depth"],"type":"object"},"type":"array"},"failures":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"error":{"oneOf":[{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"invalid_request","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"unreadable_output","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"capability_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_timeout","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cancelled","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_integrity_mismatch","type":"string"},"details":{"additionalProperties":false,"properties":{"calculated_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"declared_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"logical_path":{"type":"string"},"unpacked":{"type":"boolean"}},"required":["logical_path","declared_sha256","calculated_sha256","unpacked"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation","details"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_operation_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"evidence_integrity_mismatch","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"truncated","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"permission_required","type":"string"},"details":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"ceiling":{"anyOf":[{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"},{"type":"null"}]},"missing":{"additionalProperties":false,"properties":{"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"const":true,"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"type":"object"},"requested":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"}},"required":["capability","requested","missing","ceiling"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"process_capture_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cleanup_incomplete","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"revision_conflict","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"outside_approved_root","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"configuration_invalid","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"target_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"execution_failure","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"plan_stale","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"}]}},"required":["address","error"],"type":"object"},"type":"array"},"frontier":{"items":{"type":"string"},"type":"array"},"goal":{"anyOf":[{"type":"string"},{"type":"null"}]},"goal_status":{"enum":["not_requested","reached","not_reached"],"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_depth":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_nodes":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_operations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"nodes_visited":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"operations_used":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["max_depth","max_nodes","max_operations","nodes_visited","operations_used"],"type":"object"},"nodes":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"depth":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["address","depth"],"type":"object"},"type":"array"},"residual_unknowns":{"items":{"type":"string"},"type":"array"},"start":{"type":"string"},"traversal_path":{"items":{"type":"string"},"type":"array"},"truncated":{"type":"boolean"}},"required":["start","goal","direction","goal_status","nodes","edges","traversal_path","failures","frontier","limits","truncated","residual_unknowns","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Trace Call Path"},{"analysisOperation":"inspect_macho","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Inspect Mach-O slices, load commands, imports, exports, dependencies, build metadata, segments, sections, permissions, and exact command provenance without launching Hopper.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{},"type":"object"},"kind":"native-provider","name":"inspect_macho","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"architectures":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"alignment":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"cpu_subtype":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpu_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"name":{"type":"string"},"size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["name","cpu_type","cpu_subtype","file_offset","size","alignment"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"build_metadata":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"minimum_os":{"anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"anyOf":[{"type":"string"},{"type":"null"}]},"sdk":{"anyOf":[{"type":"string"},{"type":"null"}]},"tools":{"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"version":{"type":"string"}},"required":["name","version"],"type":"object"},"type":"array"}},"required":["platform","minimum_os","sdk","tools"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"dependencies":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"compatibility_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"current_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"type":"string"},"path":{"type":"string"}},"required":["path","kind","current_version","compatibility_version"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"endian":{"anyOf":[{"enum":["little","big"],"type":"string"},{"type":"null"}]},"entrypoints":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"file_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["file_offset"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"exports":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"pattern":"^0x[a-fA-F0-9]+$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"reexport":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"weak":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["name","address","weak","reexport","source"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"file_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"flags":{"items":{"type":"string"},"type":"array"},"format":{"const":"mach-o","type":"string"},"imports":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"pattern":"^0x[a-fA-F0-9]+$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"reexport":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"weak":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["name","address","weak","reexport","source"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"load_commands":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"fields":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}]},"propertyNames":{"type":"string"},"type":"object"},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"type":"string"}},"required":["index","kind","file_offset","fields"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"provenance":{"items":{"additionalProperties":false,"properties":{"command":{"items":{"type":"string"},"type":"array"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","signal"],"type":"object"},"stderr_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stderr_truncated":{"type":"boolean"},"stdout_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stdout_truncated":{"type":"boolean"},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","command","tool_version","version_reason","executable_sha256","exit","stdout_bytes","stderr_bytes","stdout_truncated","stderr_truncated"],"type":"object"},"type":"array"},"segments":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"file_size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"initial_permissions":{"additionalProperties":false,"properties":{"execute":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"raw":{"anyOf":[{"type":"string"},{"type":"null"}]},"read":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"write":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["read","write","execute","raw"],"type":"object"},"maximum_permissions":{"additionalProperties":false,"properties":{"execute":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"raw":{"anyOf":[{"type":"string"},{"type":"null"}]},"read":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"write":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["read","write","execute","raw"],"type":"object"},"name":{"type":"string"},"sections":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"pattern":"^0x[a-fA-F0-9]+$","type":"string"},{"type":"null"}]},"alignment":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"flags":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"},"segment":{"type":"string"},"size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["segment","name","address","size","file_offset","alignment","flags"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"vm_address":{"anyOf":[{"pattern":"^0x[a-fA-F0-9]+$","type":"string"},{"type":"null"}]},"vm_size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["name","vm_address","vm_size","file_offset","file_size","maximum_permissions","initial_permissions","sections"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"uuid":{"anyOf":[{"type":"string"},{"type":"null"}]},"word_size":{"anyOf":[{"anyOf":[{"const":32,"type":"number"},{"const":64,"type":"number"}]},{"type":"null"}]}},"required":["format","endian","word_size","file_type","flags","uuid","entrypoints","architectures","build_metadata","load_commands","dependencies","imports","exports","segments","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Macho"},{"analysisOperation":"inspect_signature","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Inspect the active artifact\'s code-signing identity, hashes, authorities, requirements, entitlements, hardened-runtime state, and bounded command provenance.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{},"type":"object"},"kind":"native-provider","name":"inspect_signature","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"authorities":{"items":{"type":"string"},"type":"array"},"cdhashes":{"items":{"type":"string"},"type":"array"},"designated_requirement":{"anyOf":[{"type":"string"},{"type":"null"}]},"entitlements":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"format":{"anyOf":[{"type":"string"},{"type":"null"}]},"hardened_runtime":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"hash_algorithms":{"items":{"type":"string"},"type":"array"},"identifier":{"anyOf":[{"type":"string"},{"type":"null"}]},"limitations":{"items":{"type":"string"},"type":"array"},"provenance":{"items":{"additionalProperties":false,"properties":{"command":{"items":{"type":"string"},"type":"array"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","signal"],"type":"object"},"stderr_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stderr_truncated":{"type":"boolean"},"stdout_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stdout_truncated":{"type":"boolean"},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","command","tool_version","version_reason","executable_sha256","exit","stdout_bytes","stderr_bytes","stdout_truncated","stderr_truncated"],"type":"object"},"type":"array"},"signed":{"type":"boolean"},"team_identifier":{"anyOf":[{"type":"string"},{"type":"null"}]},"timestamp":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["signed","identifier","team_identifier","format","cdhashes","hash_algorithms","authorities","designated_requirement","entitlements","timestamp","hardened_runtime","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Signature"},{"analysisOperation":"inspect_plist","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Parse a plist at a bounded relative path beneath the active artifact container. Symlink and traversal escapes are rejected; output is normalized JSON rather than plutil text.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"relative_path":"Contents/Info.plist"}],"properties":{"relative_path":{"default":"Contents/Info.plist","description":"Local filesystem path for relative.","maxLength":1024,"minLength":1,"type":"string"}},"type":"object"},"kind":"native-provider","name":"inspect_plist","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"bundle":{"additionalProperties":false,"properties":{"executable":{"anyOf":[{"type":"string"},{"type":"null"}]},"identifier":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"short_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["identifier","executable","name","version","short_version"],"type":"object"},"format":{"enum":["xml","binary","json","unknown"],"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"provenance":{"items":{"additionalProperties":false,"properties":{"command":{"items":{"type":"string"},"type":"array"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","signal"],"type":"object"},"stderr_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stderr_truncated":{"type":"boolean"},"stdout_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stdout_truncated":{"type":"boolean"},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","command","tool_version","version_reason","executable_sha256","exit","stdout_bytes","stderr_bytes","stdout_truncated","stderr_truncated"],"type":"object"},"type":"array"},"source_path":{"type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["format","value","bundle","source_path","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Plist"},{"analysisOperation":"list_architectures","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"List thin or universal Mach-O slices with offsets, sizes, alignment, explicit coverage, and bounded native-tool provenance.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{},"type":"object"},"kind":"native-provider","name":"list_architectures","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"architectures":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"alignment":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"cpu_subtype":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpu_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"name":{"type":"string"},"size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["name","cpu_type","cpu_subtype","file_offset","size","alignment"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"provenance":{"items":{"additionalProperties":false,"properties":{"command":{"items":{"type":"string"},"type":"array"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","signal"],"type":"object"},"stderr_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stderr_truncated":{"type":"boolean"},"stdout_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stdout_truncated":{"type":"boolean"},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","command","tool_version","version_reason","executable_sha256","exit","stdout_bytes","stderr_bytes","stdout_truncated","stderr_truncated"],"type":"object"},"type":"array"}},"required":["architectures","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Architectures"},{"analysisOperation":"demangle_swift","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Demangle an ordered bounded batch of Swift symbols without requiring Hopper. Each input returns demangled, unchanged, or invalid status.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"symbols":["$s4Test3fooyyF"]}],"properties":{"symbols":{"description":"Ordered bounded Swift symbols to demangle.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":500,"minItems":1,"type":"array"}},"required":["symbols"],"type":"object"},"kind":"native-provider","name":"demangle_swift","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"limitations":{"items":{"type":"string"},"type":"array"},"provenance":{"items":{"additionalProperties":false,"properties":{"command":{"items":{"type":"string"},"type":"array"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","signal"],"type":"object"},"stderr_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stderr_truncated":{"type":"boolean"},"stdout_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stdout_truncated":{"type":"boolean"},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","command","tool_version","version_reason","executable_sha256","exit","stdout_bytes","stderr_bytes","stdout_truncated","stderr_truncated"],"type":"object"},"type":"array"},"symbols":{"items":{"additionalProperties":false,"properties":{"input":{"type":"string"},"output":{"type":"string"},"status":{"enum":["demangled","unchanged","invalid"],"type":"string"}},"required":["input","output","status"],"type":"object"},"type":"array"}},"required":["symbols","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Demangle Swift"},{"analysisOperation":"inventory_artifact","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"After open_binary binds a local archive, application package, or other artifact—or when one is already active—inventory it as a deterministic, content-addressed artifact graph. This tool accepts no path; in a target-free session open the target first. Returns bounded node and edge pages without extracting or mounting by default.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"properties":{"edge_limit":{"default":100,"description":"Maximum number of edge entries to return.","maximum":500,"minimum":1,"type":"integer"},"edge_offset":{"default":0,"description":"Zero-based index of the first edge to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"integrity_continue_approved":{"const":false,"default":false,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"fail","default":"fail","description":"Value for integrity policy.","type":"string"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"native_mount_approved":{"default":false,"description":"Explicit operator approval for native mount.","type":"boolean"},"node_limit":{"default":100,"description":"Maximum number of node entries to return.","maximum":500,"minimum":1,"type":"integer"},"node_offset":{"default":0,"description":"Zero-based index of the first node to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"occurrence_limit":{"default":100,"description":"Maximum number of occurrence entries to return.","maximum":500,"minimum":1,"type":"integer"},"occurrence_offset":{"default":0,"description":"Zero-based index of the first occurrence to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},{"properties":{"edge_limit":{"default":100,"description":"Maximum number of edge entries to return.","maximum":500,"minimum":1,"type":"integer"},"edge_offset":{"default":0,"description":"Zero-based index of the first edge to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"integrity_continue_approved":{"const":true,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"record-and-continue","description":"Value for integrity policy.","type":"string"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"native_mount_approved":{"default":false,"description":"Explicit operator approval for native mount.","type":"boolean"},"node_limit":{"default":100,"description":"Maximum number of node entries to return.","maximum":500,"minimum":1,"type":"integer"},"node_offset":{"default":0,"description":"Zero-based index of the first node to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"occurrence_limit":{"default":100,"description":"Maximum number of occurrence entries to return.","maximum":500,"minimum":1,"type":"integer"},"occurrence_offset":{"default":0,"description":"Zero-based index of the first occurrence to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["integrity_policy","integrity_continue_approved"],"type":"object"}],"examples":[{}],"type":"object"},"kind":"artifact-provider","name":"inventory_artifact","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"edges":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"child_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"edge_id":{"pattern":"^edge_[a-f0-9]{64}$","type":"string"},"logical_path":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]},"occurrence_id":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"ordinal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parent_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"producer":{"anyOf":[{"additionalProperties":false,"properties":{"arguments":{"items":{"maxLength":4096,"type":"string"},"maxItems":1024,"type":"array"},"effects":{"items":{"enum":["read","write","mount"],"type":"string"},"maxItems":3,"type":"array"},"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"exit_code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","arguments","tool_version","executable_sha256","exit_code","effects"],"type":"object"},{"type":"null"}]},"relation":{"enum":["contains","extracts","slice-of","embeds","loads","maps-source","derived-from"],"type":"string"}},"required":["edge_id","ordinal","parent_artifact_id","child_artifact_id","relation","occurrence_id","logical_path","producer"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"integrity_contradictions":{"default":[],"items":{"additionalProperties":false,"properties":{"contradiction_id":{"pattern":"^ic_[a-f0-9]{64}$","type":"string"},"declared_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"entry_kind":{"enum":["file","slice"],"type":"string"},"limitations":{"items":{"type":"string"},"minItems":1,"type":"array"},"logical_path":{"maxLength":4096,"minLength":1,"type":"string"},"observed_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"occurrence_id":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"parent_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"provenance":{"const":"container-integrity-metadata-versus-observed-bytes","type":"string"},"trust":{"const":"observed-untrusted","type":"string"},"unpacked":{"type":"boolean"}},"required":["contradiction_id","occurrence_id","parent_artifact_id","logical_path","declared_sha256","observed_sha256","entry_kind","unpacked","trust","provenance","limitations"],"type":"object"},"maxItems":100,"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_compression_ratio":{"maximum":100000,"minimum":1,"type":"number"},"max_depth":{"maximum":100,"minimum":0,"type":"integer"},"max_entries":{"maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_path_bytes":{"maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["max_entries","max_total_bytes","max_entry_bytes","max_compression_ratio","max_depth","max_path_bytes"],"type":"object"},"manifest":{"additionalProperties":false,"properties":{"edge_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"occurrence_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"root_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"root_format":{"enum":["dmg","zip","pkg","asar","javascript-bundle","source-map","mach-o-universal","mach-o","elf","pe","hopper","analysis-database","ipa","apk","msix","appx","plist","entitlements","directory","file","unknown"],"type":"string"},"root_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","manifest_id","root_artifact_id","root_sha256","root_format","graph_sha256","node_count","occurrence_count","edge_count"],"type":"object"},"nodes":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"content_state":{"enum":["materialized","embedded","virtual"],"type":"string"},"executable":{"type":"boolean"},"format":{"enum":["dmg","zip","pkg","asar","javascript-bundle","source-map","mach-o-universal","mach-o","elf","pe","hopper","analysis-database","ipa","apk","msix","appx","plist","entitlements","directory","file","unknown"],"type":"string"},"kind":{"enum":["container","executable","dynamic-library","framework","native-addon","javascript","source-map","plist","entitlements","resource","universal-slice","package-metadata","unknown"],"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"media_type":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["artifact_id","kind","format","sha256","size","media_type","architecture","executable","content_state","limitations"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"occurrences":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"artifact_id":{"anyOf":[{"pattern":"^art_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"compressed_size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"declared_size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"encrypted":{"type":"boolean"},"entry_kind":{"enum":["file","directory","symlink","slice"],"type":"string"},"executable":{"type":"boolean"},"hash_status":{"enum":["verified","mismatched","not-hashed-limit","unavailable"],"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"logical_path":{"maxLength":4096,"minLength":1,"type":"string"},"occurrence_id":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"parent_occurrence_id":{"anyOf":[{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"source_location":{"anyOf":[{"additionalProperties":false,"properties":{"length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["offset","length"],"type":"object"},{"type":"null"}]}},"required":["occurrence_id","artifact_id","parent_occurrence_id","logical_path","entry_kind","declared_size","compressed_size","executable","encrypted","hash_status","source_location","limitations"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"provenance":{"items":{"additionalProperties":false,"properties":{"arguments":{"items":{"maxLength":4096,"type":"string"},"maxItems":1024,"type":"array"},"effects":{"items":{"enum":["read","write","mount"],"type":"string"},"maxItems":3,"type":"array"},"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"exit_code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","arguments","tool_version","executable_sha256","exit_code","effects"],"type":"object"},"maxItems":256,"type":"array"}},"required":["manifest","nodes","occurrences","edges","limits","provenance","integrity_contradictions","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inventory Artifact"},{"analysisOperation":"inspect_artifact","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"After open_binary binds a local archive, application package, or other artifact—or when one is already active—inspect it through one bounded, cancellable inventory substep. This tool accepts no path; in a target-free session open the target first. Returns the full substep Evidence and its ID, observations, derived relationships, hypotheses, contradictions, unexplored branches, limitations, and format-specific next probes. Any substep failure fails the whole call.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"properties":{"integrity_continue_approved":{"const":false,"default":false,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"fail","default":"fail","description":"Value for integrity policy.","type":"string"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_hypotheses":{"default":20,"description":"Maximum permitted hypotheses for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_next_probes":{"default":20,"description":"Maximum permitted next probes for this operation.","maximum":50,"minimum":1,"type":"integer"},"max_observations":{"default":100,"description":"Maximum permitted observations for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_relationships":{"default":100,"description":"Maximum permitted relationships for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_substeps":{"const":1,"default":1,"description":"Maximum permitted substeps for this operation.","type":"number"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_unexplored_branches":{"default":20,"description":"Maximum permitted unexplored branches for this operation.","maximum":100,"minimum":1,"type":"integer"},"native_mount_approved":{"default":false,"description":"Explicit operator approval for native mount.","type":"boolean"}},"type":"object"},{"properties":{"integrity_continue_approved":{"const":true,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"record-and-continue","description":"Value for integrity policy.","type":"string"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_hypotheses":{"default":20,"description":"Maximum permitted hypotheses for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_next_probes":{"default":20,"description":"Maximum permitted next probes for this operation.","maximum":50,"minimum":1,"type":"integer"},"max_observations":{"default":100,"description":"Maximum permitted observations for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_relationships":{"default":100,"description":"Maximum permitted relationships for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_substeps":{"const":1,"default":1,"description":"Maximum permitted substeps for this operation.","type":"number"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_unexplored_branches":{"default":20,"description":"Maximum permitted unexplored branches for this operation.","maximum":100,"minimum":1,"type":"integer"},"native_mount_approved":{"default":false,"description":"Explicit operator approval for native mount.","type":"boolean"}},"required":["integrity_policy","integrity_continue_approved"],"type":"object"}],"examples":[{}],"type":"object"},"kind":"artifact-provider","name":"inspect_artifact","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"contradictions":{"items":{"additionalProperties":false,"properties":{"contradiction_id":{"pattern":"^aic_[a-f0-9]{64}$","type":"string"},"declared_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"observed_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"occurrence_id":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"statement":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["contradiction_id","statement","occurrence_id","declared_sha256","observed_sha256","evidence_id"],"type":"object"},"maxItems":100,"type":"array"},"coverage":{"additionalProperties":false,"properties":{"hypotheses_omitted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"hypotheses_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"next_probes_omitted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"next_probes_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observations_omitted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observations_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relationships_omitted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relationships_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete-within-substeps","partial","truncated"],"type":"string"},"substeps_completed":{"const":1,"type":"number"},"unexplored_branches_omitted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unexplored_branches_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","substeps_completed","observations_retained","observations_omitted","relationships_retained","relationships_omitted","hypotheses_retained","hypotheses_omitted","unexplored_branches_retained","unexplored_branches_omitted","next_probes_retained","next_probes_omitted"],"type":"object"},"derived_relationships":{"items":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"logical_path":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]},"occurrence_id":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"relation":{"enum":["contains","extracts","slice-of","embeds","loads","maps-source","derived-from"],"type":"string"},"relationship_id":{"pattern":"^air_[a-f0-9]{64}$","type":"string"},"source_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"target_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"}},"required":["relationship_id","relation","source_artifact_id","target_artifact_id","occurrence_id","logical_path","evidence_id"],"type":"object"},"maxItems":500,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1,"minItems":1,"type":"array"},"hypotheses":{"items":{"additionalProperties":false,"properties":{"basis_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":8,"minItems":1,"type":"array"},"confidence":{"enum":["medium","low"],"type":"string"},"hypothesis_id":{"pattern":"^aih_[a-f0-9]{64}$","type":"string"},"limitation":{"maxLength":4096,"minLength":1,"type":"string"},"statement":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["hypothesis_id","statement","confidence","basis_evidence_ids","limitation"],"type":"object"},"maxItems":100,"type":"array"},"inspection_id":{"pattern":"^ai_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"next_probes":{"items":{"additionalProperties":false,"properties":{"authority":{"enum":["artifact-bytes","managed-static-analysis","native-analysis-provider","ast-static-analysis"],"type":"string"},"operation":{"maxLength":128,"minLength":1,"type":"string"},"rationale":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["operation","rationale","authority"],"type":"object"},"maxItems":50,"type":"array"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"enum":["root-manifest","artifact","occurrence","integrity"],"type":"string"},"observation_id":{"pattern":"^aio_[a-f0-9]{64}$","type":"string"},"subject":{"maxLength":4096,"minLength":1,"type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["observation_id","kind","subject","value","evidence_id"],"type":"object"},"maxItems":500,"type":"array"},"schema_version":{"const":1,"type":"number"},"subject":{"additionalProperties":false,"properties":{"manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"root_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"root_format":{"maxLength":128,"minLength":1,"type":"string"},"root_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["manifest_id","root_artifact_id","root_sha256","root_format"],"type":"object"},"substeps":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"operation":{"const":"inventory_artifact","type":"string"},"status":{"const":"completed","type":"string"},"substep_id":{"pattern":"^ais_[a-f0-9]{64}$","type":"string"}},"required":["substep_id","operation","status","evidence_id","evidence"],"type":"object"},"maxItems":1,"minItems":1,"type":"array"},"unexplored_branches":{"items":{"additionalProperties":false,"properties":{"branch_id":{"pattern":"^aib_[a-f0-9]{64}$","type":"string"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"next_probe":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"enum":["artifact-bytes","managed-static-analysis","native-analysis-provider","ast-static-analysis"],"type":"string"},"operation":{"maxLength":128,"minLength":1,"type":"string"},"rationale":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["operation","rationale","authority"],"type":"object"},{"type":"null"}]},"reason":{"enum":["page-limit","format-specific-analysis-required","unknown-format"],"type":"string"}},"required":["branch_id","reason","detail","next_probe","evidence_id"],"type":"object"},"maxItems":100,"type":"array"}},"required":["schema_version","inspection_id","subject","substeps","observations","derived_relationships","hypotheses","contradictions","unexplored_branches","next_probes","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Artifact"},{"analysisOperation":"extract_artifact","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Extract selected graph artifacts beneath an explicit output root. Requires approval, rejects traversal and symlink escapes, never overwrites, enforces bomb limits, and verifies cleanup.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"approved":true,"occurrence_ids":["occ_0000000000000000000000000000000000000000000000000000000000000000"],"output_root":"/tmp/rea-extracted"}],"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"occurrence_ids":{"description":"Value for occurrence ids.","items":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"maxItems":500,"minItems":1,"type":"array"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"output_root":{"description":"Approved canonical filesystem output root.","maxLength":4096,"minLength":1,"type":"string"}},"required":["approved","output_root","occurrence_ids"],"type":"object"},"kind":"artifact-provider","name":"extract_artifact","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"artifacts":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"bytes_written":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"created":{"type":"boolean"},"relative_path":{"maxLength":4096,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["artifact_id","relative_path","sha256","bytes_written","created"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"cleanup":{"additionalProperties":false,"properties":{"attempted":{"type":"boolean"},"residual_paths":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":500,"type":"array"},"verified":{"type":"boolean"}},"required":["attempted","verified","residual_paths"],"type":"object"},"containment_verified":{"type":"boolean"},"extraction_manifest":{"additionalProperties":false,"properties":{"extraction_id":{"pattern":"^aex_[a-f0-9]{64}$","type":"string"},"files_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"output_root_alias":{"const":"$OUTPUT_ROOT","type":"string"},"schema_version":{"const":1,"type":"number"},"selected_occurrence_ids":{"items":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"maxItems":500,"minItems":1,"type":"array"},"source_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"}},"required":["schema_version","extraction_id","source_manifest_id","selected_occurrence_ids","files_sha256","output_root_alias"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_compression_ratio":{"maximum":100000,"minimum":1,"type":"number"},"max_depth":{"maximum":100,"minimum":0,"type":"integer"},"max_entries":{"maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_path_bytes":{"maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["max_entries","max_total_bytes","max_entry_bytes","max_compression_ratio","max_depth","max_path_bytes"],"type":"object"},"manifest":{"additionalProperties":false,"properties":{"edge_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"occurrence_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"root_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"root_format":{"enum":["dmg","zip","pkg","asar","javascript-bundle","source-map","mach-o-universal","mach-o","elf","pe","hopper","analysis-database","ipa","apk","msix","appx","plist","entitlements","directory","file","unknown"],"type":"string"},"root_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","manifest_id","root_artifact_id","root_sha256","root_format","graph_sha256","node_count","occurrence_count","edge_count"],"type":"object"},"output_root":{"minLength":1,"type":"string"},"provenance":{"items":{"additionalProperties":false,"properties":{"arguments":{"items":{"maxLength":4096,"type":"string"},"maxItems":1024,"type":"array"},"effects":{"items":{"enum":["read","write","mount"],"type":"string"},"maxItems":3,"type":"array"},"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"exit_code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","arguments","tool_version","executable_sha256","exit_code","effects"],"type":"object"},"maxItems":256,"type":"array"}},"required":["manifest","extraction_manifest","output_root","artifacts","containment_verified","cleanup","limits","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Extract Artifact"},{"analysisOperation":"inspect_managed_artifact","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Open and classify an explicit managed PE/CLI path, or inspect the active managed target, then inventory exact assembly/module identity, target framework evidence, references, resources, and custom attributes without loading or executing target code. Returns bounded pages and explicit partial or malformed coverage.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"path":"/tmp/Example.dll"}],"properties":{"attribute_limit":{"default":100,"description":"Maximum number of attribute entries to return.","maximum":500,"minimum":1,"type":"integer"},"attribute_offset":{"default":0,"description":"Zero-based index of the first attribute to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"max_file_bytes":{"default":268435456,"description":"Maximum permitted file bytes for this operation.","maximum":1073741824,"minimum":4096,"type":"integer"},"max_heap_item_bytes":{"default":1048576,"description":"Maximum permitted heap item bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_metadata_bytes":{"default":67108864,"description":"Maximum permitted metadata bytes for this operation.","maximum":268435456,"minimum":256,"type":"integer"},"max_table_rows":{"default":100000,"description":"Maximum permitted table rows for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"path":{"description":"Managed PE/CLI path to open before inspection; omit only when a managed target is already active","minLength":1,"type":"string"},"reference_limit":{"default":100,"description":"Maximum number of reference entries to return.","maximum":500,"minimum":1,"type":"integer"},"reference_offset":{"default":0,"description":"Zero-based index of the first reference to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"resource_limit":{"default":100,"description":"Maximum number of resource entries to return.","maximum":500,"minimum":1,"type":"integer"},"resource_offset":{"default":0,"description":"Zero-based index of the first resource to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},"kind":"managed-provider","name":"inspect_managed_artifact","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"format":{"const":"pe","type":"string"},"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","sha256","byte_length","format"],"type":"object"},"assembly":{"anyOf":[{"additionalProperties":false,"properties":{"culture":{"anyOf":[{"type":"string"},{"type":"null"}]},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"hash_algorithm":{"maximum":4294967295,"minimum":0,"type":"integer"},"name":{"type":"string"},"public_key":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"enum":["none","public-key","public-key-token"],"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"token":{"anyOf":[{"pattern":"^[a-f0-9]{16}$","type":"string"},{"type":"null"}]}},"required":["kind","byte_length","sha256","token"],"type":"object"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"version":{"pattern":"^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+$","type":"string"}},"required":["name","version","culture","flags","hash_algorithm","public_key","token","row_offset"],"type":"object"},{"type":"null"}]},"attributes":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"constructor_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"decoded_fixed_string":{"anyOf":[{"type":"string"},{"type":"null"}]},"parent_token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"type_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"value_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"value_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["parent_token","constructor_token","type_name","value_length","value_sha256","decoded_fixed_string","token","row_offset"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"classification":{"additionalProperties":false,"properties":{"container":{"const":"pe","type":"string"},"evidence":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"detail":{"minLength":1,"type":"string"},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["code","detail","file_offset"],"type":"object"},"type":"array"},"implementation":{"enum":["cil","cil-and-ready-to-run","cpp-cli-mixed","metadata-only","not-managed","unknown"],"type":"string"},"managed_architecture":{"enum":["anycpu","anycpu-prefer-32","x86","x86_64","arm","arm64","unknown"],"type":"string"},"runtime_family":{"enum":["dotnet-framework","modern-dotnet","unity-mono","mixed-clr-native","unknown"],"type":"string"},"status":{"enum":["managed","not-managed","malformed"],"type":"string"}},"required":["status","container","runtime_family","implementation","managed_architecture","evidence"],"type":"object"},"coverage":{"additionalProperties":false,"properties":{"issues":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["invalid-cli-header","invalid-directory","invalid-metadata-root","invalid-stream","missing-stream","invalid-tables","invalid-row","invalid-heap-index","invalid-string","invalid-blob","invalid-guid","invalid-resource","limit-exceeded"],"type":"string"},"detail":{"minLength":1,"type":"string"},"offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"scope":{"minLength":1,"type":"string"}},"required":["code","scope","offset","detail"],"type":"object"},"type":"array"},"state":{"enum":["complete","partial","unavailable"],"type":"string"}},"required":["state","issues"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"metadata":{"additionalProperties":false,"properties":{"status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"stream_names":{"items":{"type":"string"},"type":"array"},"table_row_counts":{"additionalProperties":{"maximum":4294967295,"minimum":0,"type":"integer"},"propertyNames":{"type":"string"},"type":"object"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["status","version","stream_names","table_row_counts"],"type":"object"},"module":{"anyOf":[{"additionalProperties":false,"properties":{"enc_base_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"enc_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"generation":{"maximum":65535,"minimum":0,"type":"integer"},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["name","generation","mvid","enc_id","enc_base_id","token","row_offset"],"type":"object"},{"type":"null"}]},"pe":{"additionalProperties":false,"properties":{"architecture":{"enum":["x86","x86_64","arm","arm64"],"type":"string"},"characteristics":{"maximum":65535,"minimum":0,"type":"integer"},"cli":{"anyOf":[{"additionalProperties":false,"properties":{"entry_point":{"additionalProperties":false,"properties":{"kind":{"enum":["metadata-token","native-rva","none"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","value"],"type":"object"},"flag_names":{"items":{"type":"string"},"type":"array"},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"header_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"header_size":{"maximum":9007199254740991,"minimum":72,"type":"integer"},"managed_native_header_rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"managed_native_header_size":{"maximum":4294967295,"minimum":0,"type":"integer"},"metadata_rva":{"maximum":4294967295,"minimum":1,"type":"integer"},"metadata_size":{"maximum":4294967295,"minimum":1,"type":"integer"},"ready_to_run_signature":{"type":"boolean"},"resources_rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"resources_size":{"maximum":4294967295,"minimum":0,"type":"integer"},"runtime_version":{"type":"string"},"strong_name_rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"strong_name_size":{"maximum":4294967295,"minimum":0,"type":"integer"}},"required":["header_offset","header_size","runtime_version","flags","flag_names","entry_point","metadata_rva","metadata_size","resources_rva","resources_size","strong_name_rva","strong_name_size","managed_native_header_rva","managed_native_header_size","ready_to_run_signature"],"type":"object"},{"type":"null"}]},"machine":{"maximum":65535,"minimum":0,"type":"integer"},"machine_hex":{"pattern":"^0x[0-9a-f]{4}$","type":"string"},"optional_header":{"enum":["pe32","pe32-plus"],"type":"string"},"section_count":{"maximum":96,"minimum":1,"type":"integer"}},"required":["machine","machine_hex","architecture","optional_header","section_count","characteristics","cli"],"type":"object"},"references":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"culture":{"anyOf":[{"type":"string"},{"type":"null"}]},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"hash_value_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"hash_value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"public_key_or_token":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"enum":["none","public-key","public-key-token"],"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"token":{"anyOf":[{"pattern":"^[a-f0-9]{16}$","type":"string"},{"type":"null"}]}},"required":["kind","byte_length","sha256","token"],"type":"object"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"version":{"pattern":"^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+$","type":"string"}},"required":["name","version","culture","flags","public_key_or_token","hash_value_sha256","hash_value_length","token","row_offset"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"resources":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"data_length":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"data_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"declared_offset":{"maximum":4294967295,"minimum":0,"type":"integer"},"embedded":{"type":"boolean"},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"implementation_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"visibility":{"enum":["public","private","unknown"],"type":"string"}},"required":["name","flags","visibility","implementation_token","embedded","declared_offset","data_length","data_sha256","token","row_offset"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"schema_version":{"const":1,"type":"number"},"target_frameworks":{"items":{"type":"string"},"type":"array"}},"required":["schema_version","artifact","pe","classification","metadata","module","assembly","target_frameworks","references","resources","attributes","coverage","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Managed Artifact"},{"analysisOperation":"inspect_managed_members","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Inspect bounded PE/CLI metadata members, signatures, raw CIL hashes, limited member-result-v1 decoded-instruction-tuple hashes, separately reported exception regions, call edges, and field-access anchors without loading or executing target code. Metadata tokens are reported as build-local coordinates bound to the artifact SHA-256 and MVID; the v1 tuple hash does not resolve them or fully commit control flow.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"edge_limit":100,"method_limit":25}],"properties":{"edge_limit":{"default":250,"description":"Maximum number of edge entries to return.","maximum":1000,"minimum":1,"type":"integer"},"edge_offset":{"default":0,"description":"Zero-based index of the first edge to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"field_limit":{"default":100,"description":"Maximum number of field entries to return.","maximum":500,"minimum":1,"type":"integer"},"field_offset":{"default":0,"description":"Zero-based index of the first field to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"instruction_anchor_limit":{"default":100,"description":"Maximum number of instruction anchor entries to return.","maximum":500,"minimum":0,"type":"integer"},"max_file_bytes":{"default":268435456,"description":"Maximum permitted file bytes for this operation.","maximum":1073741824,"minimum":4096,"type":"integer"},"max_heap_item_bytes":{"default":1048576,"description":"Maximum permitted heap item bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_metadata_bytes":{"default":67108864,"description":"Maximum permitted metadata bytes for this operation.","maximum":268435456,"minimum":256,"type":"integer"},"max_method_body_bytes":{"default":1048576,"description":"Maximum permitted method body bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_method_instructions":{"default":10000,"description":"Maximum permitted method instructions for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_table_rows":{"default":100000,"description":"Maximum permitted table rows for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"member_ref_limit":{"default":100,"description":"Maximum number of member ref entries to return.","maximum":500,"minimum":1,"type":"integer"},"member_ref_offset":{"default":0,"description":"Zero-based index of the first member ref to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"method_limit":{"default":100,"description":"Maximum number of method entries to return.","maximum":500,"minimum":1,"type":"integer"},"method_offset":{"default":0,"description":"Zero-based index of the first method to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"type_limit":{"default":100,"description":"Maximum number of type entries to return.","maximum":500,"minimum":1,"type":"integer"},"type_offset":{"default":0,"description":"Zero-based index of the first type to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},"kind":"managed-provider","name":"inspect_managed_members","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"format":{"const":"pe","type":"string"},"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","sha256","byte_length","format"],"type":"object"},"call_edges":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"caller":{"anyOf":[{"type":"string"},{"type":"null"}]},"caller_token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"opcode":{"type":"string"},"target_kind":{"enum":["method-def","member-ref","method-spec","unknown"],"type":"string"},"target_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"target_token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["caller_token","caller","opcode","target_token","target_kind","target_name"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"coverage":{"additionalProperties":false,"properties":{"issues":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["invalid-cli-header","invalid-directory","invalid-metadata-root","invalid-stream","missing-stream","invalid-tables","invalid-row","invalid-heap-index","invalid-string","invalid-blob","invalid-guid","invalid-resource","limit-exceeded"],"type":"string"},"detail":{"minLength":1,"type":"string"},"offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"scope":{"minLength":1,"type":"string"}},"required":["code","scope","offset","detail"],"type":"object"},"type":"array"},"state":{"enum":["complete","partial","unavailable"],"type":"string"}},"required":["state","issues"],"type":"object"},"field_accesses":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"field_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"field_token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"method":{"anyOf":[{"type":"string"},{"type":"null"}]},"method_token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"opcode":{"type":"string"}},"required":["method_token","method","opcode","field_token","field_name"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"fields":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"declaring_type_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"flags":{"maximum":65535,"minimum":0,"type":"integer"},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"signature":{"additionalProperties":false,"properties":{"calling_convention":{"anyOf":[{"type":"string"},{"type":"null"}]},"field_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"generic_parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"issue":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"enum":["method","field","unknown"],"type":"string"},"parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"parameter_types":{"items":{"type":"string"},"type":"array"},"parse_status":{"enum":["decoded","partial","unsupported","malformed"],"type":"string"},"raw_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"raw_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"return_type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["raw_length","raw_sha256","kind","parse_status","calling_convention","generic_parameter_count","parameter_count","return_type","parameter_types","field_type","issue"],"type":"object"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","declaring_type_token","declaring_type","name","flags","signature"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"identity_scope":{"additionalProperties":false,"properties":{"requires_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"requires_mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"token_identity":{"const":"build-local","type":"string"}},"required":["token_identity","requires_artifact_sha256","requires_mvid"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"member_refs":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"parent_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"signature":{"additionalProperties":false,"properties":{"calling_convention":{"anyOf":[{"type":"string"},{"type":"null"}]},"field_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"generic_parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"issue":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"enum":["method","field","unknown"],"type":"string"},"parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"parameter_types":{"items":{"type":"string"},"type":"array"},"parse_status":{"enum":["decoded","partial","unsupported","malformed"],"type":"string"},"raw_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"raw_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"return_type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["raw_length","raw_sha256","kind","parse_status","calling_convention","generic_parameter_count","parameter_count","return_type","parameter_types","field_type","issue"],"type":"object"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","parent_token","name","signature"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"metadata":{"additionalProperties":false,"properties":{"status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"table_row_counts":{"additionalProperties":{"maximum":4294967295,"minimum":0,"type":"integer"},"propertyNames":{"type":"string"},"type":"object"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["status","version","table_row_counts"],"type":"object"},"methods":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"properties":{"anchors":{"items":{"additionalProperties":false,"properties":{"il_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"opcode":{"minLength":1,"type":"string"},"operand":{"anyOf":[{"type":"string"},{"type":"null"}]},"operand_kind":{"enum":["none","branch","constant","field","method","signature","string","switch","token","type","variable","unknown"],"type":"string"}},"required":["il_offset","opcode","operand_kind","operand"],"type":"object"},"type":"array"},"decoded_instruction_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exception_regions":{"items":{"additionalProperties":false,"properties":{"class_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"filter_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"handler_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"handler_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"try_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"try_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["flags","try_offset","try_length","handler_offset","handler_length","class_token","filter_offset"],"type":"object"},"type":"array"},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"header_format":{"enum":["tiny","fat","none","unknown"],"type":"string"},"il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"SHA-256 of exactly the raw il_size CIL bytes; excludes the method header, locals signature, alignment, and extra sections"},"il_size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"init_locals":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"instruction_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"issue":{"anyOf":[{"type":"string"},{"type":"null"}]},"local_var_sig_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"max_stack":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Member-result-v1 SHA-256 of UTF-8 JSON [opcode, operand_kind, operand] tuples for a complete decode; retains build-local tokens, omits switch targets, and excludes headers, locals, and exception regions"},"opcode_counts":{"additionalProperties":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"propertyNames":{"type":"string"},"type":"object"},"rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"status":{"enum":["present","partial","absent","malformed","too-large"],"type":"string"},"truncated_instructions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","header_format","rva","file_offset","max_stack","init_locals","local_var_sig_token","il_size","il_sha256","normalized_il_sha256","instruction_count","decoded_instruction_count","truncated_instructions","opcode_counts","anchors","exception_regions","issue"],"type":"object"},"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"declaring_type_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"flags":{"maximum":65535,"minimum":0,"type":"integer"},"impl_flags":{"maximum":65535,"minimum":0,"type":"integer"},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"signature":{"additionalProperties":false,"properties":{"calling_convention":{"anyOf":[{"type":"string"},{"type":"null"}]},"field_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"generic_parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"issue":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"enum":["method","field","unknown"],"type":"string"},"parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"parameter_types":{"items":{"type":"string"},"type":"array"},"parse_status":{"enum":["decoded","partial","unsupported","malformed"],"type":"string"},"raw_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"raw_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"return_type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["raw_length","raw_sha256","kind","parse_status","calling_convention","generic_parameter_count","parameter_count","return_type","parameter_types","field_type","issue"],"type":"object"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","declaring_type_token","declaring_type","name","rva","impl_flags","flags","signature","body"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"module":{"anyOf":[{"additionalProperties":false,"properties":{"enc_base_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"enc_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"generation":{"maximum":65535,"minimum":0,"type":"integer"},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["name","generation","mvid","enc_id","enc_base_id","token","row_offset"],"type":"object"},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"types":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"extends_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"field_list":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"first_row":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"last_row":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["first_row","last_row","count"],"type":"object"},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"full_name":{"type":"string"},"method_list":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"first_row":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"last_row":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["first_row","last_row","count"],"type":"object"},"name":{"type":"string"},"namespace":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","namespace","name","full_name","flags","extends_token","field_list","method_list"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"}},"required":["schema_version","artifact","module","metadata","identity_scope","types","fields","methods","member_refs","call_edges","field_accesses","coverage","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Managed Members"},{"analysisOperation":"inspect_managed_native_boundaries","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Inspect PE/CLI ModuleRef, ImplMap/PInvoke declarations, CLI native-header indicators, and non-IL method implementation flags without loading or executing target code. Results are managed declarations and degraded native-boundary observations, not verified native exports or addresses.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"implementation_limit":50,"import_limit":50}],"properties":{"implementation_limit":{"default":100,"description":"Maximum number of implementation entries to return.","maximum":500,"minimum":1,"type":"integer"},"implementation_offset":{"default":0,"description":"Zero-based index of the first implementation to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"import_limit":{"default":100,"description":"Maximum number of import entries to return.","maximum":500,"minimum":1,"type":"integer"},"import_offset":{"default":0,"description":"Zero-based index of the first import to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"max_file_bytes":{"default":268435456,"description":"Maximum permitted file bytes for this operation.","maximum":1073741824,"minimum":4096,"type":"integer"},"max_heap_item_bytes":{"default":1048576,"description":"Maximum permitted heap item bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_metadata_bytes":{"default":67108864,"description":"Maximum permitted metadata bytes for this operation.","maximum":268435456,"minimum":256,"type":"integer"},"max_table_rows":{"default":100000,"description":"Maximum permitted table rows for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"module_ref_limit":{"default":100,"description":"Maximum number of module ref entries to return.","maximum":500,"minimum":1,"type":"integer"},"module_ref_offset":{"default":0,"description":"Zero-based index of the first module ref to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},"kind":"managed-provider","name":"inspect_managed_native_boundaries","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"format":{"const":"pe","type":"string"},"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","sha256","byte_length","format"],"type":"object"},"cli_native":{"additionalProperties":false,"properties":{"il_only":{"type":"boolean"},"managed_native_header_rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"managed_native_header_size":{"maximum":4294967295,"minimum":0,"type":"integer"},"native_entry_point":{"type":"boolean"},"ready_to_run_signature":{"type":"boolean"},"requires_32bit":{"type":"boolean"},"strong_name_signed":{"type":"boolean"}},"required":["il_only","requires_32bit","strong_name_signed","native_entry_point","ready_to_run_signature","managed_native_header_rva","managed_native_header_size"],"type":"object"},"coverage":{"additionalProperties":false,"properties":{"issues":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["invalid-cli-header","invalid-directory","invalid-metadata-root","invalid-stream","missing-stream","invalid-tables","invalid-row","invalid-heap-index","invalid-string","invalid-blob","invalid-guid","invalid-resource","limit-exceeded"],"type":"string"},"detail":{"minLength":1,"type":"string"},"offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"scope":{"minLength":1,"type":"string"}},"required":["code","scope","offset","detail"],"type":"object"},"type":"array"},"state":{"enum":["complete","partial","unavailable"],"type":"string"}},"required":["state","issues"],"type":"object"},"identity_scope":{"additionalProperties":false,"properties":{"requires_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"requires_mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"token_identity":{"const":"build-local","type":"string"}},"required":["token_identity","requires_artifact_sha256","requires_mvid"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"metadata":{"additionalProperties":false,"properties":{"status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"table_row_counts":{"additionalProperties":{"maximum":4294967295,"minimum":0,"type":"integer"},"propertyNames":{"type":"string"},"type":"object"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["status","version","table_row_counts"],"type":"object"},"module":{"anyOf":[{"additionalProperties":false,"properties":{"enc_base_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"enc_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"generation":{"maximum":65535,"minimum":0,"type":"integer"},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["name","generation","mvid","enc_id","enc_base_id","token","row_offset"],"type":"object"},{"type":"null"}]},"module_refs":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","name"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"native_implementations":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"body_interpretation":{"enum":["managed-cil","native-or-runtime","not-file-backed","unknown"],"type":"string"},"boundary_kind":{"enum":["pinvoke","native-body","runtime-provided","unmanaged-method","mixed-or-unknown"],"type":"string"},"code_type":{"enum":["il","native","optil","runtime","unknown"],"type":"string"},"flags":{"maximum":65535,"minimum":0,"type":"integer"},"impl_flags":{"maximum":65535,"minimum":0,"type":"integer"},"managed_kind":{"enum":["managed","unmanaged","unknown"],"type":"string"},"name":{"type":"string"},"pinvoke_declared":{"type":"boolean"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","name","rva","flags","impl_flags","code_type","managed_kind","pinvoke_declared","boundary_kind","body_interpretation"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"pinvoke_imports":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"best_fit":{"enum":["assembly-default","enabled","disabled","unknown"],"type":"string"},"call_convention":{"enum":["not-specified","winapi","cdecl","stdcall","thiscall","fastcall","unknown"],"type":"string"},"char_set":{"enum":["not-specified","ansi","unicode","auto","unknown"],"type":"string"},"import_name":{"type":"string"},"import_scope_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"import_scope_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"mapping_flags":{"maximum":65535,"minimum":0,"type":"integer"},"mapping_flags_hex":{"pattern":"^0x[0-9a-f]{4}$","type":"string"},"member_kind":{"enum":["method","field","unknown"],"type":"string"},"member_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"no_mangle":{"type":"boolean"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"supports_last_error":{"type":"boolean"},"throw_on_unmappable_char":{"enum":["assembly-default","enabled","disabled","unknown"],"type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"verification":{"const":"managed-declaration-only","type":"string"}},"required":["token","row_offset","mapping_flags","mapping_flags_hex","member_token","member_kind","member_name","import_name","import_scope_token","import_scope_name","no_mangle","char_set","call_convention","supports_last_error","best_fit","throw_on_unmappable_char","verification"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"schema_version":{"const":1,"type":"number"},"summary":{"additionalProperties":false,"properties":{"mixed_mode_or_native_header":{"type":"boolean"},"module_ref_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"native_implementation_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pinvoke_import_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ready_to_run":{"type":"boolean"}},"required":["module_ref_count","pinvoke_import_count","native_implementation_count","ready_to_run","mixed_mode_or_native_header"],"type":"object"}},"required":["schema_version","artifact","module","metadata","identity_scope","cli_native","module_refs","pinvoke_imports","native_implementations","summary","coverage","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Managed Native Boundaries"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two authenticated inspect_managed_members Evidence records using unique-only decoded-CIL-v1/signature and structural method-shape tiers. Names are reported as observations but are not used as a matching basis; metadata tokens remain build-local coordinates bound to each artifact SHA-256 and MVID, and the v1 tuple digest does not itself remap them.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"left_evidence_id":"ev_45a77d52db5dc9beaf59a9b8ee062c945fda709bd0d3a91fa4e972d85a848324","limits":{"max_candidates":25,"max_field_matches":50,"max_method_matches":100},"right_evidence_id":"ev_8d6450759b2bb695b3b41b0db8d7ddc4a3e9f64a52b93194bc59d2b564c2285c"}],"properties":{"left_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"limits":{"additionalProperties":false,"default":{"max_candidates":50,"max_field_matches":5000,"max_method_matches":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidates":{"default":50,"description":"Maximum permitted candidates for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_field_matches":{"default":5000,"description":"Maximum permitted field matches for this operation.","maximum":50000,"minimum":0,"type":"integer"},"max_method_matches":{"default":10000,"description":"Maximum permitted method matches for this operation.","maximum":50000,"minimum":1,"type":"integer"}},"type":"object"},"right_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_evidence_id","right_evidence_id"],"type":"object"},"kind":"application","name":"compare_managed_members","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"algorithm":{"additionalProperties":false,"properties":{"name":{"const":"rea-managed-member-comparison","type":"string"},"name_matching":{"const":"not-used","type":"string"},"token_identity":{"const":"build-local","type":"string"},"version":{"const":1,"type":"number"}},"required":["name","version","token_identity","name_matching"],"type":"object"},"comparison_id":{"pattern":"^mmc_[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"left_status":{"enum":["complete","partial","unavailable"],"type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_methods":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"right_status":{"enum":["complete","partial","unavailable"],"type":"string"},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"}},"required":["status","left_status","right_status","omitted_methods","omitted_fields","omitted_candidates"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"fields":{"items":{"additionalProperties":false,"properties":{"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"item_id":{"pattern":"^mmc_field_[a-f0-9]{64}$","type":"string"},"left":{"anyOf":[{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256"],"type":"object"},{"type":"null"}]},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"enum":["exact-il-signature","structural-method-shape","field-signature","none"],"type":"string"},"candidate_left_tokens":{"items":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"maxItems":500,"type":"array"},"candidate_right_tokens":{"items":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"maxItems":500,"type":"array"},"confidence":{"enum":["exact","high","unknown"],"type":"string"},"status":{"enum":["matched","unmatched","ambiguous"],"type":"string"}},"required":["status","basis","confidence","candidate_left_tokens","candidate_right_tokens"],"type":"object"},"right":{"anyOf":[{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256"],"type":"object"},{"type":"null"}]},"status":{"enum":["unchanged","changed","added","removed","unknown"],"type":"string"}},"required":["item_id","status","left","right","match","evidence_links","limitations"],"type":"object"},"maxItems":50000,"type":"array"},"left":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"fields_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"metadata_status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"methods_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]}},"required":["evidence_id","artifact_sha256","mvid","module_name","metadata_status","methods_total","fields_total"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"matching":{"additionalProperties":false,"properties":{"ambiguous":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exact_il_signature":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"field_signature":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"structural_method_shape":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unmatched":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["exact_il_signature","structural_method_shape","field_signature","ambiguous","unmatched"],"type":"object"},"methods":{"items":{"additionalProperties":false,"properties":{"dimensions":{"items":{"enum":["signature","cil","opcode-shape","call-shape","field-shape","exception-shape","availability"],"type":"string"},"maxItems":7,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"item_id":{"pattern":"^mmc_method_[a-f0-9]{64}$","type":"string"},"left":{"anyOf":[{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256","normalized_il_sha256"],"type":"object"},{"type":"null"}]},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"enum":["exact-il-signature","structural-method-shape","field-signature","none"],"type":"string"},"candidate_left_tokens":{"items":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"maxItems":500,"type":"array"},"candidate_right_tokens":{"items":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"maxItems":500,"type":"array"},"confidence":{"enum":["exact","high","unknown"],"type":"string"},"status":{"enum":["matched","unmatched","ambiguous"],"type":"string"}},"required":["status","basis","confidence","candidate_left_tokens","candidate_right_tokens"],"type":"object"},"right":{"anyOf":[{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256","normalized_il_sha256"],"type":"object"},{"type":"null"}]},"status":{"enum":["unchanged","changed","added","removed","unknown"],"type":"string"}},"required":["item_id","status","left","right","match","dimensions","evidence_links","limitations"],"type":"object"},"maxItems":50000,"type":"array"},"right":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"fields_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"metadata_status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"methods_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]}},"required":["evidence_id","artifact_sha256","mvid","module_name","metadata_status","methods_total","fields_total"],"type":"object"},"schema_version":{"const":1,"type":"number"},"summary":{"additionalProperties":false,"properties":{"added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unchanged","changed","added","removed","unknown"],"type":"object"}},"required":["schema_version","comparison_id","algorithm","left","right","summary","matching","methods","fields","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Compare Managed Members"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Verify managed P/Invoke/native-boundary declarations against authenticated native export or function Evidence without executing managed code or translating managed metadata tokens into native addresses. The workflow preserves declaration-only, verified, inferred, contradicted, and unresolved states.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"limits":{"max_candidates_per_import":25,"max_native_observations":20},"managed_boundaries_evidence_id":"ev_5e142d4464b916bcff63fb0835c686152b5b0473a9f1d5f5060d329b1b29739d","native_observation_evidence_ids":["ev_74758ad108882d5752dae4f8fa030c1ed6c7dd62857cb9d2d3a7ce931b52ee7c"]}],"properties":{"limits":{"additionalProperties":false,"default":{"max_candidates_per_import":25,"max_native_observations":20},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidates_per_import":{"default":25,"description":"Maximum permitted candidates per import for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_native_observations":{"default":20,"description":"Maximum permitted native observations for this operation.","maximum":50,"minimum":1,"type":"integer"}},"type":"object"},"managed_boundaries_evidence_id":{"description":"Session-owned inspect_managed_native_boundaries Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"native_observation_evidence_ids":{"description":"Unique session-owned native observation Evidence IDs","items":{"description":"Session-owned inspect_macho or analyze_function Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":50,"minItems":1,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["managed_boundaries_evidence_id","native_observation_evidence_ids"],"type":"object"},"kind":"application","name":"verify_managed_native_boundaries","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"algorithm":{"additionalProperties":false,"properties":{"name":{"const":"rea-managed-native-verification","type":"string"},"token_identity":{"const":"build-local","type":"string"},"token_to_address_mapping":{"const":"not-inferred","type":"string"},"version":{"const":1,"type":"number"}},"required":["name","version","token_identity","token_to_address_mapping"],"type":"object"},"coverage":{"additionalProperties":false,"properties":{"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_native_observations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"}},"required":["status","omitted_native_observations","omitted_candidates"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":51,"minItems":2,"type":"array"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"managed_boundary":{"additionalProperties":false,"properties":{"artifact_path":{"minLength":1,"type":"string"},"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"coverage_state":{"enum":["complete","partial","unavailable"],"type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"metadata_status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"native_implementations_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pinvoke_imports_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["evidence_id","artifact_sha256","artifact_path","mvid","metadata_status","pinvoke_imports_total","native_implementations_total","coverage_state"],"type":"object"},"native_implementations":{"additionalProperties":false,"properties":{"reason":{"maxLength":4096,"minLength":1,"type":"string"},"unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unresolved","reason"],"type":"object"},"native_observations":{"additionalProperties":false,"properties":{"accepted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symbols":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"truncated":{"type":"boolean"},"unsupported":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","accepted","unsupported","symbols","truncated"],"type":"object"},"pinvoke_imports":{"items":{"additionalProperties":false,"properties":{"basis":{"enum":["exact-export-name","exact-function-name","decorated-name-candidate","module-mismatch","no-native-candidate","unsupported-native-evidence"],"type":"string"},"candidates":{"items":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"module_path":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"minLength":1,"type":"string"},"operation":{"minLength":1,"type":"string"},"source":{"enum":["macho-export","function-dossier"],"type":"string"}},"required":["evidence_id","operation","name","address","module_name","module_path","source"],"type":"object"},"maxItems":100,"type":"array"},"confidence":{"enum":["observed","inferred","unknown"],"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":51,"minItems":1,"type":"array"},"item_id":{"pattern":"^mnv_pinvoke_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"managed":{"additionalProperties":false,"properties":{"call_convention":{"enum":["not-specified","winapi","cdecl","stdcall","thiscall","fastcall","unknown"],"type":"string"},"char_set":{"enum":["not-specified","ansi","unicode","auto","unknown"],"type":"string"},"declaration_verification":{"const":"managed-declaration-only","type":"string"},"import_name":{"minLength":1,"type":"string"},"import_scope_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"no_mangle":{"type":"boolean"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","member_token","member_name","import_name","import_scope_name","no_mangle","char_set","call_convention","declaration_verification"],"type":"object"},"matched_native":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"module_path":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"minLength":1,"type":"string"},"operation":{"minLength":1,"type":"string"},"source":{"enum":["macho-export","function-dossier"],"type":"string"}},"required":["evidence_id","operation","name","address","module_name","module_path","source"],"type":"object"},{"type":"null"}]},"status":{"enum":["verified","inferred","unresolved","contradicted"],"type":"string"}},"required":["item_id","managed","status","basis","confidence","matched_native","candidates","evidence_links","limitations"],"type":"object"},"maxItems":50000,"type":"array"},"schema_version":{"const":1,"type":"number"},"summary":{"additionalProperties":false,"properties":{"contradicted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"inferred":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"native_body_unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"verified":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["verified","inferred","unresolved","contradicted","native_body_unresolved"],"type":"object"},"verification_id":{"pattern":"^mnv_[a-f0-9]{64}$","type":"string"}},"required":["schema_version","verification_id","algorithm","managed_boundary","native_observations","summary","pinvoke_imports","native_implementations","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Verify Managed Native Boundaries"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Import decompiler-produced managed reconstruction against authenticated inspect_managed_members Evidence. The workflow locks each method to artifact SHA-256, MVID, metadata token, signature hash, and the limited member-result-v1 decoded-IL tuple hash, records the decompiler identity and options, and marks C# or pseudocode as analyst inference rather than canonical byte observation.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"decompiler":{"executable_sha256":null,"family":"ilspy","name":"ilspycmd","options":["--disable-updatecheck","--type","Example.Program"],"version":"9.1.0.7988"},"methods":[{"normalized_il_sha256":"5555555555555555555555555555555555555555555555555555555555555555","reconstruction":{"end_line":1,"kind":"decompiled-csharp","language":"csharp","source_path":"/examples/Example.Program.cs","start_line":1,"text":"internal static void Main() { }"},"signature_sha256":"3333333333333333333333333333333333333333333333333333333333333333","token":"0x06000001"}],"notes":["Synthetic example only; decompiler output is imported as inference."],"static_members_evidence_id":"ev_4871226711dcb86d73cebb54bc54c6e1d6cf227c94c7cf67685dc5d805511493"}],"properties":{"decompiler":{"additionalProperties":false,"description":"Value for decompiler.","properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of executable."},"family":{"description":"Value for family.","enum":["ilspy","dnspy","dnlib","mono-cecil","other"],"type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":512,"minLength":1,"type":"string"},"options":{"default":[],"description":"Value for options.","items":{"maxLength":512,"type":"string"},"maxItems":50,"type":"array"},"version":{"anyOf":[{"maxLength":128,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["name","version","family","executable_sha256"],"type":"object"},"methods":{"description":"Value for methods.","items":{"additionalProperties":false,"properties":{"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of normalized il."},"reconstruction":{"additionalProperties":false,"description":"Value for reconstruction.","properties":{"end_line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}],"description":"Value for end line."},"kind":{"description":"Value for kind.","enum":["decompiled-csharp","decompiled-il","semantic-pseudocode"],"type":"string"},"language":{"description":"Value for language.","enum":["csharp","il","pseudocode"],"type":"string"},"source_path":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Local filesystem path for source."},"start_line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}],"description":"Value for start line."},"text":{"description":"Value for text.","maxLength":65536,"minLength":1,"type":"string"},"text_sha256":{"description":"Exact SHA-256 digest of text.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["kind","language","text"],"type":"object"},"signature_sha256":{"description":"Exact SHA-256 digest of signature.","pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"description":"Value for token.","pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","signature_sha256","normalized_il_sha256","reconstruction"],"type":"object"},"maxItems":50,"minItems":1,"type":"array"},"notes":{"default":[],"description":"Value for notes.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"static_members_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["decompiler","methods","static_members_evidence_id"],"type":"object"},"kind":"application","name":"import_managed_reconstruction","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"decompiler":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"family":{"enum":["ilspy","dnspy","dnlib","mono-cecil","other"],"type":"string"},"name":{"maxLength":512,"minLength":1,"type":"string"},"options":{"default":[],"items":{"maxLength":512,"type":"string"},"maxItems":50,"type":"array"},"options_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"anyOf":[{"maxLength":128,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["name","version","family","executable_sha256","options","options_sha256"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1,"minItems":1,"type":"array"},"executed":{"const":false,"type":"boolean"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"methods":{"items":{"additionalProperties":false,"properties":{"body_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"il_size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"name":{"type":"string"},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"reconstruction":{"additionalProperties":false,"properties":{"end_line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"kind":{"enum":["decompiled-csharp","decompiled-il","semantic-pseudocode"],"type":"string"},"language":{"enum":["csharp","il","pseudocode"],"type":"string"},"line_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"source_path":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]},"start_line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"text":{"maxLength":65536,"minLength":1,"type":"string"},"text_length":{"maximum":65536,"minimum":1,"type":"integer"},"text_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["kind","language","text","text_sha256","text_length","line_count","source_path","start_line","end_line"],"type":"object"},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"validation":{"additionalProperties":false,"properties":{"canonical_observation":{"const":false,"type":"boolean"},"confidence_floor":{"const":"inference","type":"string"},"exact_build_required":{"const":true,"type":"boolean"},"matched_static_member":{"const":true,"type":"boolean"}},"required":["matched_static_member","exact_build_required","canonical_observation","confidence_floor"],"type":"object"}},"required":["token","declaring_type","name","signature_sha256","normalized_il_sha256","body_sha256","il_size","reconstruction","validation"],"type":"object"},"maxItems":50,"minItems":1,"type":"array"},"notes":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"phase":{"const":"reconstruction-import","type":"string"},"reconstruction_id":{"pattern":"^mre_[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"},"static_observation":{"additionalProperties":false,"properties":{"artifact_path":{"minLength":1,"type":"string"},"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"metadata_status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]}},"required":["evidence_id","artifact_sha256","artifact_path","byte_length","module_name","mvid","metadata_status"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"decompiled_csharp_methods":{"maximum":50,"minimum":0,"type":"integer"},"decompiled_il_methods":{"maximum":50,"minimum":0,"type":"integer"},"imported_methods":{"maximum":50,"minimum":1,"type":"integer"},"pseudocode_methods":{"maximum":50,"minimum":0,"type":"integer"},"total_text_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["imported_methods","decompiled_csharp_methods","decompiled_il_methods","pseudocode_methods","total_text_bytes"],"type":"object"}},"required":["schema_version","reconstruction_id","phase","executed","static_observation","decompiler","summary","methods","notes","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Import Managed Reconstruction"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Prepare a separately authorized managed runtime-correlation admission plan from authenticated inspect_managed_members Evidence. The operation is default-disabled, requires the managed_runtime permission ceiling and grant, locks the exact artifact SHA-256, MVID, method signature, and limited member-result-v1 decoded-IL tuple hash, distinguishes attach/load/debugger/reflection/instrumentation effects, and records that no target code was executed.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"bounds":{"allow_network":false,"allow_ui":false,"max_output_bytes":65536,"max_threads":32,"timeout_ms":5000},"host":{"architecture":"x86_64","clr_family":"dotnet","os":"linux"},"method":{"normalized_il_sha256":"5555555555555555555555555555555555555555555555555555555555555555","signature_sha256":"3333333333333333333333333333333333333333333333333333333333333333","token":"0x06000001"},"requested_effect":"attach","static_members_evidence_id":"ev_4871226711dcb86d73cebb54bc54c6e1d6cf227c94c7cf67685dc5d805511493"}],"properties":{"bounds":{"additionalProperties":false,"default":{"allow_network":false,"allow_ui":false,"max_output_bytes":65536,"max_threads":32,"timeout_ms":5000},"description":"Value for bounds.","properties":{"allow_network":{"const":false,"default":false,"description":"Value for allow network.","type":"boolean"},"allow_ui":{"const":false,"default":false,"description":"Value for allow ui.","type":"boolean"},"max_output_bytes":{"default":65536,"description":"Maximum permitted output bytes for this operation.","maximum":1048576,"minimum":0,"type":"integer"},"max_threads":{"default":32,"description":"Maximum permitted threads for this operation.","maximum":256,"minimum":1,"type":"integer"},"timeout_ms":{"default":5000,"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"type":"object"},"host":{"additionalProperties":false,"description":"Value for host.","properties":{"architecture":{"description":"Value for architecture.","enum":["x86","x86_64","arm","arm64"],"type":"string"},"clr_family":{"description":"Value for clr family.","enum":["dotnet","dotnet-framework","mono","unknown"],"type":"string"},"os":{"description":"Value for os.","enum":["linux","macos","windows"],"type":"string"}},"required":["os","clr_family","architecture"],"type":"object"},"method":{"additionalProperties":false,"description":"Value for method.","properties":{"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of normalized il."},"signature_sha256":{"description":"Exact SHA-256 digest of signature.","pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"description":"Value for token.","pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","signature_sha256","normalized_il_sha256"],"type":"object"},"requested_effect":{"description":"Value for requested effect.","enum":["attach","load","debugger","reflection","instrumentation"],"type":"string"},"static_members_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["method","requested_effect","host","static_members_evidence_id"],"type":"object"},"kind":"application","name":"plan_managed_runtime_correlation","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"authority_model":{"additionalProperties":false,"properties":{"capability":{"const":"managed_runtime","type":"string"},"default_enabled":{"const":false,"type":"boolean"},"per_call_approval_required":{"const":true,"type":"boolean"},"permission_grant_id":{"minLength":1,"type":"string"}},"required":["capability","permission_grant_id","default_enabled","per_call_approval_required"],"type":"object"},"bounds":{"additionalProperties":false,"properties":{"allow_network":{"const":false,"default":false,"type":"boolean"},"allow_ui":{"const":false,"default":false,"type":"boolean"},"max_output_bytes":{"default":65536,"maximum":1048576,"minimum":0,"type":"integer"},"max_threads":{"default":32,"maximum":256,"minimum":1,"type":"integer"},"timeout_ms":{"default":5000,"maximum":60000,"minimum":1,"type":"integer"}},"required":["timeout_ms","max_threads","max_output_bytes","allow_network","allow_ui"],"type":"object"},"correlation_id":{"pattern":"^mrc_[a-f0-9]{64}$","type":"string"},"effect_taxonomy":{"additionalProperties":false,"properties":{"attaches_process":{"type":"boolean"},"instruments_code":{"type":"boolean"},"invokes_target_code":{"const":false,"type":"boolean"},"loads_target":{"type":"boolean"},"uses_debugger":{"type":"boolean"},"uses_reflection":{"type":"boolean"}},"required":["attaches_process","loads_target","uses_debugger","uses_reflection","instruments_code","invokes_target_code"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1,"minItems":1,"type":"array"},"executed":{"const":false,"type":"boolean"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"method_lock":{"additionalProperties":false,"properties":{"body_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"body_status":{"enum":["present","partial","absent","malformed","too-large"],"type":"string"},"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"exact_build_required":{"const":true,"type":"boolean"},"il_size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"name":{"type":"string"},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256","normalized_il_sha256","body_sha256","il_size","body_status","exact_build_required"],"type":"object"},"phase":{"const":"admission-plan","type":"string"},"requested_runtime":{"additionalProperties":false,"properties":{"effect":{"enum":["attach","load","debugger","reflection","instrumentation"],"type":"string"},"executable_path":{"minLength":1,"type":"string"},"filesystem":{"const":"owned-artifacts-only","type":"string"},"host":{"additionalProperties":false,"properties":{"architecture":{"enum":["x86","x86_64","arm","arm64"],"type":"string"},"clr_family":{"enum":["dotnet","dotnet-framework","mono","unknown"],"type":"string"},"os":{"enum":["linux","macos","windows"],"type":"string"}},"required":["os","clr_family","architecture"],"type":"object"},"network":{"const":"none","type":"string"}},"required":["effect","host","executable_path","network","filesystem"],"type":"object"},"schema_version":{"const":1,"type":"number"},"static_observation":{"additionalProperties":false,"properties":{"artifact_path":{"minLength":1,"type":"string"},"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"metadata_status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]}},"required":["evidence_id","artifact_sha256","artifact_path","byte_length","module_name","mvid","metadata_status"],"type":"object"},"unsupported_until_executor_exists":{"const":true,"type":"boolean"}},"required":["schema_version","correlation_id","phase","executed","authority_model","static_observation","method_lock","requested_runtime","effect_taxonomy","bounds","unsupported_until_executor_exists","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Plan Managed Runtime Correlation"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Project authenticated managed artifact, member, and native-boundary Evidence into the provider-neutral application graph without executing managed code, loading assemblies, or translating managed metadata tokens to native addresses. The graph preserves managed static observations as managed-specific nodes linked to source Evidence.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"limits":{"additionalProperties":false,"default":{"max_fields":5000,"max_methods":10000,"max_native_implementations":5000,"max_pinvoke_imports":5000,"max_types":5000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_fields":{"default":5000,"description":"Maximum permitted fields for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_methods":{"default":10000,"description":"Maximum permitted methods for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_native_implementations":{"default":5000,"description":"Maximum permitted native implementations for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_pinvoke_imports":{"default":5000,"description":"Maximum permitted pinvoke imports for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_types":{"default":5000,"description":"Maximum permitted types for this operation.","maximum":100000,"minimum":0,"type":"integer"}},"type":"object"},"managed_artifact_evidence_id":{"description":"Session-owned inspect_managed_artifact Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_members_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_native_boundaries_evidence_id":{"description":"Session-owned inspect_managed_native_boundaries Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"}},"required":["managed_artifact_evidence_id"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"additionalProperties":false,"default":{"max_fields":5000,"max_methods":10000,"max_native_implementations":5000,"max_pinvoke_imports":5000,"max_types":5000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_fields":{"default":5000,"description":"Maximum permitted fields for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_methods":{"default":10000,"description":"Maximum permitted methods for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_native_implementations":{"default":5000,"description":"Maximum permitted native implementations for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_pinvoke_imports":{"default":5000,"description":"Maximum permitted pinvoke imports for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_types":{"default":5000,"description":"Maximum permitted types for this operation.","maximum":100000,"minimum":0,"type":"integer"}},"type":"object"},"managed_artifact_evidence_id":{"description":"Session-owned inspect_managed_artifact Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_members_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_native_boundaries_evidence_id":{"description":"Session-owned inspect_managed_native_boundaries Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"}},"required":["managed_members_evidence_id"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"additionalProperties":false,"default":{"max_fields":5000,"max_methods":10000,"max_native_implementations":5000,"max_pinvoke_imports":5000,"max_types":5000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_fields":{"default":5000,"description":"Maximum permitted fields for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_methods":{"default":10000,"description":"Maximum permitted methods for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_native_implementations":{"default":5000,"description":"Maximum permitted native implementations for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_pinvoke_imports":{"default":5000,"description":"Maximum permitted pinvoke imports for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_types":{"default":5000,"description":"Maximum permitted types for this operation.","maximum":100000,"minimum":0,"type":"integer"}},"type":"object"},"managed_artifact_evidence_id":{"description":"Session-owned inspect_managed_artifact Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_members_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_native_boundaries_evidence_id":{"description":"Session-owned inspect_managed_native_boundaries Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"}},"required":["managed_native_boundaries_evidence_id"],"type":"object"}],"examples":[{"limits":{"max_fields":100,"max_methods":100,"max_native_implementations":100,"max_pinvoke_imports":100,"max_types":100},"managed_members_evidence_id":"ev_4871226711dcb86d73cebb54bc54c6e1d6cf227c94c7cf67685dc5d805511493"}],"type":"object"},"kind":"application","name":"project_managed_application_graph","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"omitted_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_methods":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_native_implementations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_pinvoke_imports":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_types":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"}},"required":["status","omitted_types","omitted_methods","omitted_fields","omitted_pinvoke_imports","omitted_native_implementations"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":3,"minItems":1,"type":"array"},"graph":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"projection_id":{"pattern":"^magp_[a-f0-9]{64}$","type":"string"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"},"source_evidence":{"additionalProperties":false,"properties":{"managed_artifact_evidence_id":{"anyOf":[{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"managed_members_evidence_id":{"anyOf":[{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"managed_native_boundaries_evidence_id":{"anyOf":[{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["managed_artifact_evidence_id","managed_members_evidence_id","managed_native_boundaries_evidence_id"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"assemblies":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_edges":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"methods":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"native_implementations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pinvoke_imports":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"types":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["graph_nodes","graph_edges","assemblies","modules","types","methods","fields","pinvoke_imports","native_implementations"],"type":"object"}},"required":["schema_version","projection_id","root_artifact_sha256","source_evidence","summary","graph","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Project Managed Application Graph"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"List bounded page targets from an approved user-owned loopback Chrome DevTools Protocol endpoint. Only targets whose current URL matches an approved exact origin are returned; URL credentials, query values, and fragments are redacted.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"allowed_origins":["https://app.example.test"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","limit":100,"offset":0}],"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit approval for browser observation","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":200,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["cdp_endpoint","allowed_origins","approved"],"type":"object"},"kind":"browser-provider","name":"list_browser_targets","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"excluded":{"additionalProperties":false,"properties":{"disallowed_origin":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"non_page":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unsupported_url":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["disallowed_origin","unsupported_url","non_page"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"targets":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"origin":{"type":"string"},"target_id":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"},"url":{"type":"string"}},"required":["target_id","type","title","url","origin","attached"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["schema_version","browser","targets","excluded","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Browser Targets"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Passively inspect one approved page target through CDP without evaluating JavaScript, navigating, clicking, closing, or mutating the page. Returns bounded DOM structure, accessibility, scripts, resources, attach-window network and console metadata, workers, and redacted storage inventory as Evidence v2.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit approval for browser observation","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"console_text_approved":{"default":false,"description":"Explicit operator approval for console text.","type":"boolean"},"include_accessibility_text":{"default":false,"description":"Whether to include accessibility text in the result.","type":"boolean"},"include_console_text":{"default":false,"description":"Whether to include console text in the result.","type":"boolean"},"include_json_body_shapes":{"default":false,"description":"Whether to include json body shapes in the result.","type":"boolean"},"include_script_sources":{"const":false,"default":false,"description":"Whether to include script sources in the result.","type":"boolean"},"include_storage_fingerprints":{"default":false,"description":"Whether to include storage fingerprints in the result.","type":"boolean"},"include_storage_keys":{"default":false,"description":"Whether to include storage keys in the result.","type":"boolean"},"include_websocket_shapes":{"default":false,"description":"Whether to include websocket shapes in the result.","type":"boolean"},"json_body_schema_approved":{"default":false,"description":"Explicit operator approval for json body schema.","type":"boolean"},"limits":{"default":{"max_ax_nodes":2000,"max_ax_text_field_bytes":1024,"max_console_events":200,"max_console_text_field_bytes":1024,"max_dom_nodes":2000,"max_frames":200,"max_json_body_bytes":1048576,"max_json_shape_depth":20,"max_json_shape_nodes":5000,"max_network_events":1000,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":200,"max_storage_keys":1000,"max_total_ax_text_bytes":65536,"max_total_console_text_bytes":65536,"max_total_json_body_bytes":4194304,"max_total_script_source_bytes":4194304,"max_total_websocket_shape_bytes":1048576,"max_websocket_events":500,"max_websocket_shape_bytes":65536,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_ax_nodes":{"default":2000,"description":"Maximum permitted ax nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_ax_text_field_bytes":{"default":1024,"description":"Maximum permitted ax text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_console_events":{"default":200,"description":"Maximum permitted console events for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_console_text_field_bytes":{"default":1024,"description":"Maximum permitted console text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_json_body_bytes":{"default":1048576,"description":"Maximum permitted json body bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_json_shape_depth":{"default":20,"description":"Maximum permitted json shape depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_json_shape_nodes":{"default":5000,"description":"Maximum permitted json shape nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_network_events":{"default":1000,"description":"Maximum permitted network events for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":200,"description":"Maximum permitted scripts for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_storage_keys":{"default":1000,"description":"Maximum permitted storage keys for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_total_ax_text_bytes":{"default":65536,"description":"Maximum permitted total ax text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_console_text_bytes":{"default":65536,"description":"Maximum permitted total console text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_json_body_bytes":{"default":4194304,"description":"Maximum permitted total json body bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_websocket_shape_bytes":{"default":1048576,"description":"Maximum permitted total websocket shape bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_websocket_events":{"default":500,"description":"Maximum permitted websocket events for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_websocket_shape_bytes":{"default":65536,"description":"Maximum permitted websocket shape bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":500,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":false,"default":false,"description":"Explicit operator approval for source capture.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"},"websocket_shape_approved":{"default":false,"description":"Explicit operator approval for websocket shape.","type":"boolean"}},"required":["cdp_endpoint","allowed_origins","approved","target_id"],"type":"object"},{"additionalProperties":false,"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit approval for browser observation","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"console_text_approved":{"default":false,"description":"Explicit operator approval for console text.","type":"boolean"},"include_accessibility_text":{"default":false,"description":"Whether to include accessibility text in the result.","type":"boolean"},"include_console_text":{"default":false,"description":"Whether to include console text in the result.","type":"boolean"},"include_json_body_shapes":{"default":false,"description":"Whether to include json body shapes in the result.","type":"boolean"},"include_script_sources":{"const":true,"default":true,"description":"Whether to include script sources in the result.","type":"boolean"},"include_storage_fingerprints":{"default":false,"description":"Whether to include storage fingerprints in the result.","type":"boolean"},"include_storage_keys":{"default":false,"description":"Whether to include storage keys in the result.","type":"boolean"},"include_websocket_shapes":{"default":false,"description":"Whether to include websocket shapes in the result.","type":"boolean"},"json_body_schema_approved":{"default":false,"description":"Explicit operator approval for json body schema.","type":"boolean"},"limits":{"default":{"max_ax_nodes":2000,"max_ax_text_field_bytes":1024,"max_console_events":200,"max_console_text_field_bytes":1024,"max_dom_nodes":2000,"max_frames":200,"max_json_body_bytes":1048576,"max_json_shape_depth":20,"max_json_shape_nodes":5000,"max_network_events":1000,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":200,"max_storage_keys":1000,"max_total_ax_text_bytes":65536,"max_total_console_text_bytes":65536,"max_total_json_body_bytes":4194304,"max_total_script_source_bytes":4194304,"max_total_websocket_shape_bytes":1048576,"max_websocket_events":500,"max_websocket_shape_bytes":65536,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_ax_nodes":{"default":2000,"description":"Maximum permitted ax nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_ax_text_field_bytes":{"default":1024,"description":"Maximum permitted ax text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_console_events":{"default":200,"description":"Maximum permitted console events for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_console_text_field_bytes":{"default":1024,"description":"Maximum permitted console text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_json_body_bytes":{"default":1048576,"description":"Maximum permitted json body bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_json_shape_depth":{"default":20,"description":"Maximum permitted json shape depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_json_shape_nodes":{"default":5000,"description":"Maximum permitted json shape nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_network_events":{"default":1000,"description":"Maximum permitted network events for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":200,"description":"Maximum permitted scripts for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_storage_keys":{"default":1000,"description":"Maximum permitted storage keys for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_total_ax_text_bytes":{"default":65536,"description":"Maximum permitted total ax text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_console_text_bytes":{"default":65536,"description":"Maximum permitted total console text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_json_body_bytes":{"default":4194304,"description":"Maximum permitted total json body bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_websocket_shape_bytes":{"default":1048576,"description":"Maximum permitted total websocket shape bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_websocket_events":{"default":500,"description":"Maximum permitted websocket events for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_websocket_shape_bytes":{"default":65536,"description":"Maximum permitted websocket shape bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":500,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":true,"description":"Explicit operator approval for source capture.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"},"websocket_shape_approved":{"default":false,"description":"Explicit operator approval for websocket shape.","type":"boolean"}},"required":["cdp_endpoint","allowed_origins","approved","target_id","source_capture_approved"],"type":"object"}],"examples":[{"allowed_origins":["https://app.example.test"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","console_text_approved":false,"include_accessibility_text":false,"include_console_text":false,"include_json_body_shapes":false,"include_script_sources":false,"include_storage_fingerprints":false,"include_storage_keys":false,"include_websocket_shapes":false,"json_body_schema_approved":false,"limits":{"max_ax_nodes":2000,"max_ax_text_field_bytes":1024,"max_console_events":200,"max_console_text_field_bytes":1024,"max_dom_nodes":2000,"max_frames":200,"max_json_body_bytes":1048576,"max_json_shape_depth":20,"max_json_shape_nodes":5000,"max_network_events":1000,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":200,"max_storage_keys":1000,"max_total_ax_text_bytes":65536,"max_total_console_text_bytes":65536,"max_total_json_body_bytes":4194304,"max_total_script_source_bytes":4194304,"max_total_websocket_shape_bytes":1048576,"max_websocket_events":500,"max_websocket_shape_bytes":65536,"max_workers":500},"observation_ms":500,"target_id":"TARGET_ID_FROM_LIST_BROWSER_TARGETS","websocket_shape_approved":false}],"type":"object"},"kind":"browser-provider","name":"inspect_web_page","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"accessibility":{"additionalProperties":false,"properties":{"nodes":{"items":{"additionalProperties":false,"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"ignored":{"type":"boolean"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"node_id":{"type":"string"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"states":{"default":[],"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"value":{"anyOf":[{"type":"boolean"},{"type":"number"},{"type":"string"}]}},"required":["name","value"],"type":"object"},"type":"array"}},"required":["node_id","parent_id","role","name","description","ignored","states"],"type":"object"},"type":"array"},"text_capture":{"additionalProperties":false,"properties":{"excluded_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["not_approved","included","truncated","unavailable"],"type":"string"},"truncated_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","retained_bytes","excluded_fields","truncated_fields"],"type":"object"},"total_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","text_capture","nodes"],"type":"object"},"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"capture_window":{"additionalProperties":false,"properties":{"ended_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"observation_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"started_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"}},"required":["started_at","ended_at","observation_ms"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"attach_limited_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"additionalProperties":false,"properties":{"console_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"items":{"additionalProperties":false,"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reason":{"enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"console":{"additionalProperties":false,"properties":{"coverage_started_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"events":{"items":{"additionalProperties":false,"properties":{"argument_types":{"items":{"type":"string"},"type":"array"},"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"text_capture":{"additionalProperties":false,"properties":{"retained_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["not_approved","included","truncated"],"type":"string"},"truncated_values":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"values":{"items":{"additionalProperties":false,"properties":{"argument_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"type":"string"},"type":{"type":"string"}},"required":["argument_index","type","text"],"type":"object"},"type":"array"}},"required":["status","values","retained_bytes","truncated_values"],"type":"object"},"timestamp":{"type":"number"},"type":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type","timestamp","argument_types","url","line","column","text_capture"],"type":"object"},"type":"array"},"prior_activity_available":{"const":false,"type":"boolean"}},"required":["events","coverage_started_at","prior_activity_available"],"type":"object"},"dom":{"additionalProperties":false,"properties":{"nodes":{"items":{"additionalProperties":false,"properties":{"attribute_names":{"items":{"type":"string"},"type":"array"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_name":{"type":"string"},"node_type":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_value_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parent_index":{"maximum":9007199254740991,"minimum":-1,"type":"integer"}},"required":["index","parent_index","node_type","node_name","node_value_length","attribute_names"],"type":"object"},"type":"array"},"total_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","nodes"],"type":"object"},"frames":{"items":{"additionalProperties":false,"properties":{"frame_id":{"type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"}},"required":["frame_id","parent_frame_id","url","origin"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"metadata":{"additionalProperties":false,"properties":{"agent_hints":{"items":{"additionalProperties":false,"properties":{"declaration":{"type":"string"},"mechanism":{"enum":["link_rel","dom_link_rel","well_known_resource","response_header"],"type":"string"},"trust":{"const":"page-declared-untrusted","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["mechanism","declaration","url","trust"],"type":"object"},"type":"array"},"dom_urls":{"items":{"additionalProperties":false,"properties":{"attribute":{"enum":["href","src","action","formaction","poster"],"type":"string"},"destination_scope":{"enum":["approved","outside_policy","unsupported"],"type":"string"},"node_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["node_index","attribute","url","destination_scope"],"type":"object"},"type":"array"},"excluded_dom_urls":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"headers_allowlisted":{"const":true,"type":"boolean"},"responses":{"items":{"additionalProperties":false,"properties":{"content_encoding":{"anyOf":[{"type":"string"},{"type":"null"}]},"content_length":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"csp":{"additionalProperties":false,"properties":{"directives":{"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"kind":{"enum":["keyword","scheme","approved_origin","external_origin","other"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","value"],"type":"object"},"type":"array"}},"required":["name","sources"],"type":"object"},"type":"array"},"hash_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nonce_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["directives","nonce_count","hash_count"],"type":"object"},"links":{"items":{"additionalProperties":false,"properties":{"as":{"anyOf":[{"type":"string"},{"type":"null"}]},"crossorigin":{"anyOf":[{"type":"string"},{"type":"null"}]},"destination_scope":{"enum":["approved","outside_policy","unsupported"],"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"rel":{"items":{"type":"string"},"type":"array"},"type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["href","destination_scope","rel","as","type","crossorigin"],"type":"object"},"type":"array"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"policies":{"additionalProperties":false,"properties":{"coep":{"anyOf":[{"type":"string"},{"type":"null"}]},"coop":{"anyOf":[{"type":"string"},{"type":"null"}]},"corp":{"anyOf":[{"type":"string"},{"type":"null"}]},"permissions_policy_features":{"items":{"type":"string"},"type":"array"},"referrer_policy":{"anyOf":[{"type":"string"},{"type":"null"}]},"x_content_type_options":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["coop","coep","corp","referrer_policy","x_content_type_options","permissions_policy_features"],"type":"object"},"request_id":{"type":"string"},"url":{"type":"string"}},"required":["request_id","url","mime_type","content_length","content_encoding","csp","links","policies"],"type":"object"},"type":"array"}},"required":["responses","dom_urls","agent_hints","excluded_dom_urls","headers_allowlisted"],"type":"object"},"network":{"additionalProperties":false,"properties":{"coverage_started_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"prior_activity_available":{"const":false,"type":"boolean"},"requests":{"items":{"additionalProperties":false,"properties":{"body_shapes":{"additionalProperties":false,"properties":{"request":{"anyOf":[{"additionalProperties":false,"properties":{"max_depth_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"items":{"additionalProperties":false,"properties":{"observations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"type":"string"},"types":{"items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}]},"response":{"anyOf":[{"additionalProperties":false,"properties":{"max_depth_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"items":{"additionalProperties":false,"properties":{"observations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"type":"string"},"types":{"items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}]},"status":{"enum":["not_approved","included","partial","unavailable","truncated"],"type":"string"}},"required":["status","request","response"],"type":"object"},"encoded_data_length":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}]},"initiator":{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"type":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type","url","line","column"],"type":"object"},"method":{"type":"string"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"request_id":{"type":"string"},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"type":"number"},{"type":"null"}]},"url":{"type":"string"}},"required":["request_id","url","origin","method","resource_type","status","mime_type","encoded_data_length","initiator","body_shapes"],"type":"object"},"type":"array"},"websocket_events":{"items":{"additionalProperties":false,"properties":{"direction":{"enum":["sent","received"],"type":"string"},"opcode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_shape":{"anyOf":[{"additionalProperties":false,"properties":{"format":{"enum":["json","text","binary"],"type":"string"},"json_shape":{"anyOf":[{"additionalProperties":false,"properties":{"max_depth_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"items":{"additionalProperties":false,"properties":{"observations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"type":"string"},"types":{"items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}]},"truncated":{"type":"boolean"}},"required":["format","json_shape","truncated"],"type":"object"},{"type":"null"}]},"request_id":{"type":"string"}},"required":["request_id","direction","opcode","payload_bytes","payload_shape"],"type":"object"},"type":"array"}},"required":["requests","websocket_events","coverage_started_at","prior_activity_available"],"type":"object"},"resources":{"items":{"additionalProperties":false,"properties":{"content_size":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}]},"mime_type":{"type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"resource_key":{"pattern":"^res_[a-f0-9]{64}$","type":"string"},"type":{"type":"string"},"url":{"type":"string"}},"required":["resource_key","url","origin","type","mime_type","content_size"],"type":"object"},"type":"array"},"schema_version":{"const":2,"type":"number"},"scripts":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"cdp_hash":{"type":"string"},"frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"is_module":{"type":"boolean"},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"resource_reconciliation":{"oneOf":[{"additionalProperties":false,"properties":{"resource_key":{"type":"string"},"status":{"const":"exact","type":"string"}},"required":["status","resource_key"],"type":"object"},{"additionalProperties":false,"properties":{"candidate_resource_keys":{"items":{"type":"string"},"type":"array"},"status":{"const":"ambiguous","type":"string"}},"required":["status","candidate_resource_keys"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"const":"no_exact_sanitized_url","type":"string"},"status":{"const":"unmatched","type":"string"}},"required":["status","reason"],"type":"object"}]},"script_key":{"pattern":"^scr_[a-f0-9]{64}(?:_[0-9]+)?$","type":"string"},"source":{"oneOf":[{"additionalProperties":false,"properties":{"included":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["included","reason"],"type":"object"},{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","type":"string"},"media_type":{"maxLength":256,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},"included":{"const":true,"type":"boolean"}},"required":["included","artifact"],"type":"object"}]},"source_map_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"}},"required":["script_key","frame_id","url","origin","cdp_hash","length","is_module","language","source_map_url","resource_reconciliation","source"],"type":"object"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"},"storage":{"additionalProperties":false,"properties":{"cache_names":{"items":{"type":"string"},"type":"array"},"content_fingerprints":{"default":[],"items":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"identity_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"enum":["cookie","local_storage","session_storage","indexed_db_schema","indexed_db_record","cache_entry"],"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["scope","identity_sha256","value_sha256","complete"],"type":"object"},"type":"array"},"fingerprint_algorithm":{"const":"sha256","default":"sha256","type":"string"},"fingerprints_complete":{"default":false,"type":"boolean"},"indexed_db_names":{"items":{"type":"string"},"type":"array"},"local_storage_keys":{"items":{"type":"string"},"type":"array"},"origin":{"type":"string"},"quota_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}]},"session_storage_keys":{"items":{"type":"string"},"type":"array"},"usage_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}]},"values_redacted":{"const":true,"type":"boolean"}},"required":["origin","usage_bytes","quota_bytes","local_storage_keys","session_storage_keys","indexed_db_names","cache_names","content_fingerprints","fingerprint_algorithm","fingerprints_complete","values_redacted"],"type":"object"},"target":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"origin":{"type":"string"},"target_id":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"},"url":{"type":"string"}},"required":["target_id","type","title","url","origin","attached"],"type":"object"},"workers":{"items":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"opener_target_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"target_id":{"type":"string"},"type":{"type":"string"},"url":{"type":"string"}},"required":["target_id","type","url","origin","attached","opener_target_id","parent_frame_id"],"type":"object"},"type":"array"}},"required":["schema_version","browser","target","capture_window","completeness","frames","dom","accessibility","scripts","resources","network","console","workers","metadata","storage","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Web Page"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Capture explicitly approved JavaScript source from one approved CDP page and statically derive a bounded chunk graph, route and endpoint candidates, vendor fingerprints, page-declared WebMCP metadata, and optional separately approved source-map evidence. JavaScript is parsed but never executed.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"analysis_limits":{"default":{"max_ast_nodes":250000,"max_findings":1000,"max_original_sources":2000,"max_source_map_bytes":4194304,"max_source_map_mappings":10000,"max_source_maps":100,"max_total_source_map_bytes":16777216},"description":"Value for analysis limits.","properties":{"max_ast_nodes":{"default":250000,"description":"Maximum permitted ast nodes for this operation.","maximum":2000000,"minimum":1,"type":"integer"},"max_findings":{"default":1000,"description":"Maximum permitted findings for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_original_sources":{"default":2000,"description":"Maximum permitted original sources for this operation.","maximum":20000,"minimum":1,"type":"integer"},"max_source_map_bytes":{"default":4194304,"description":"Maximum permitted source map bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_source_map_mappings":{"default":10000,"description":"Maximum permitted source map mappings for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_source_maps":{"default":100,"description":"Maximum permitted source maps for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_total_source_map_bytes":{"default":16777216,"description":"Maximum permitted total source map bytes for this operation.","maximum":67108864,"minimum":1,"type":"integer"}},"type":"object"},"approved":{"const":true,"description":"Explicit approval for browser observation","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"console_text_approved":{"default":false,"description":"Explicit operator approval for console text.","type":"boolean"},"fetch_source_maps":{"const":false,"default":false,"description":"Value for fetch source maps.","type":"boolean"},"include_accessibility_text":{"default":false,"description":"Whether to include accessibility text in the result.","type":"boolean"},"include_console_text":{"default":false,"description":"Whether to include console text in the result.","type":"boolean"},"include_json_body_shapes":{"default":false,"description":"Whether to include json body shapes in the result.","type":"boolean"},"include_script_sources":{"const":true,"default":true,"description":"Whether to include script sources in the result.","type":"boolean"},"include_storage_fingerprints":{"default":false,"description":"Whether to include storage fingerprints in the result.","type":"boolean"},"include_storage_keys":{"default":false,"description":"Whether to include storage keys in the result.","type":"boolean"},"include_websocket_shapes":{"default":false,"description":"Whether to include websocket shapes in the result.","type":"boolean"},"json_body_schema_approved":{"default":false,"description":"Explicit operator approval for json body schema.","type":"boolean"},"limits":{"default":{"max_ax_nodes":2000,"max_ax_text_field_bytes":1024,"max_console_events":200,"max_console_text_field_bytes":1024,"max_dom_nodes":2000,"max_frames":200,"max_json_body_bytes":1048576,"max_json_shape_depth":20,"max_json_shape_nodes":5000,"max_network_events":1000,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":200,"max_storage_keys":1000,"max_total_ax_text_bytes":65536,"max_total_console_text_bytes":65536,"max_total_json_body_bytes":4194304,"max_total_script_source_bytes":4194304,"max_total_websocket_shape_bytes":1048576,"max_websocket_events":500,"max_websocket_shape_bytes":65536,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_ax_nodes":{"default":2000,"description":"Maximum permitted ax nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_ax_text_field_bytes":{"default":1024,"description":"Maximum permitted ax text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_console_events":{"default":200,"description":"Maximum permitted console events for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_console_text_field_bytes":{"default":1024,"description":"Maximum permitted console text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_json_body_bytes":{"default":1048576,"description":"Maximum permitted json body bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_json_shape_depth":{"default":20,"description":"Maximum permitted json shape depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_json_shape_nodes":{"default":5000,"description":"Maximum permitted json shape nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_network_events":{"default":1000,"description":"Maximum permitted network events for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":200,"description":"Maximum permitted scripts for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_storage_keys":{"default":1000,"description":"Maximum permitted storage keys for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_total_ax_text_bytes":{"default":65536,"description":"Maximum permitted total ax text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_console_text_bytes":{"default":65536,"description":"Maximum permitted total console text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_json_body_bytes":{"default":4194304,"description":"Maximum permitted total json body bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_websocket_shape_bytes":{"default":1048576,"description":"Maximum permitted total websocket shape bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_websocket_events":{"default":500,"description":"Maximum permitted websocket events for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_websocket_shape_bytes":{"default":65536,"description":"Maximum permitted websocket shape bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":500,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":true,"description":"Explicit operator approval for source capture.","type":"boolean"},"source_map_fetch_approved":{"const":false,"default":false,"description":"Explicit operator approval for source map fetch.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"},"websocket_shape_approved":{"default":false,"description":"Explicit operator approval for websocket shape.","type":"boolean"}},"required":["cdp_endpoint","allowed_origins","approved","target_id","source_capture_approved"],"type":"object"},{"additionalProperties":false,"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"analysis_limits":{"default":{"max_ast_nodes":250000,"max_findings":1000,"max_original_sources":2000,"max_source_map_bytes":4194304,"max_source_map_mappings":10000,"max_source_maps":100,"max_total_source_map_bytes":16777216},"description":"Value for analysis limits.","properties":{"max_ast_nodes":{"default":250000,"description":"Maximum permitted ast nodes for this operation.","maximum":2000000,"minimum":1,"type":"integer"},"max_findings":{"default":1000,"description":"Maximum permitted findings for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_original_sources":{"default":2000,"description":"Maximum permitted original sources for this operation.","maximum":20000,"minimum":1,"type":"integer"},"max_source_map_bytes":{"default":4194304,"description":"Maximum permitted source map bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_source_map_mappings":{"default":10000,"description":"Maximum permitted source map mappings for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_source_maps":{"default":100,"description":"Maximum permitted source maps for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_total_source_map_bytes":{"default":16777216,"description":"Maximum permitted total source map bytes for this operation.","maximum":67108864,"minimum":1,"type":"integer"}},"type":"object"},"approved":{"const":true,"description":"Explicit approval for browser observation","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"console_text_approved":{"default":false,"description":"Explicit operator approval for console text.","type":"boolean"},"fetch_source_maps":{"const":true,"description":"Value for fetch source maps.","type":"boolean"},"include_accessibility_text":{"default":false,"description":"Whether to include accessibility text in the result.","type":"boolean"},"include_console_text":{"default":false,"description":"Whether to include console text in the result.","type":"boolean"},"include_json_body_shapes":{"default":false,"description":"Whether to include json body shapes in the result.","type":"boolean"},"include_script_sources":{"const":true,"default":true,"description":"Whether to include script sources in the result.","type":"boolean"},"include_storage_fingerprints":{"default":false,"description":"Whether to include storage fingerprints in the result.","type":"boolean"},"include_storage_keys":{"default":false,"description":"Whether to include storage keys in the result.","type":"boolean"},"include_websocket_shapes":{"default":false,"description":"Whether to include websocket shapes in the result.","type":"boolean"},"json_body_schema_approved":{"default":false,"description":"Explicit operator approval for json body schema.","type":"boolean"},"limits":{"default":{"max_ax_nodes":2000,"max_ax_text_field_bytes":1024,"max_console_events":200,"max_console_text_field_bytes":1024,"max_dom_nodes":2000,"max_frames":200,"max_json_body_bytes":1048576,"max_json_shape_depth":20,"max_json_shape_nodes":5000,"max_network_events":1000,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":200,"max_storage_keys":1000,"max_total_ax_text_bytes":65536,"max_total_console_text_bytes":65536,"max_total_json_body_bytes":4194304,"max_total_script_source_bytes":4194304,"max_total_websocket_shape_bytes":1048576,"max_websocket_events":500,"max_websocket_shape_bytes":65536,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_ax_nodes":{"default":2000,"description":"Maximum permitted ax nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_ax_text_field_bytes":{"default":1024,"description":"Maximum permitted ax text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_console_events":{"default":200,"description":"Maximum permitted console events for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_console_text_field_bytes":{"default":1024,"description":"Maximum permitted console text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_json_body_bytes":{"default":1048576,"description":"Maximum permitted json body bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_json_shape_depth":{"default":20,"description":"Maximum permitted json shape depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_json_shape_nodes":{"default":5000,"description":"Maximum permitted json shape nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_network_events":{"default":1000,"description":"Maximum permitted network events for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":200,"description":"Maximum permitted scripts for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_storage_keys":{"default":1000,"description":"Maximum permitted storage keys for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_total_ax_text_bytes":{"default":65536,"description":"Maximum permitted total ax text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_console_text_bytes":{"default":65536,"description":"Maximum permitted total console text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_json_body_bytes":{"default":4194304,"description":"Maximum permitted total json body bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_websocket_shape_bytes":{"default":1048576,"description":"Maximum permitted total websocket shape bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_websocket_events":{"default":500,"description":"Maximum permitted websocket events for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_websocket_shape_bytes":{"default":65536,"description":"Maximum permitted websocket shape bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":500,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":true,"description":"Explicit operator approval for source capture.","type":"boolean"},"source_map_fetch_approved":{"const":true,"description":"Explicit operator approval for source map fetch.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"},"websocket_shape_approved":{"default":false,"description":"Explicit operator approval for websocket shape.","type":"boolean"}},"required":["cdp_endpoint","allowed_origins","approved","target_id","source_capture_approved","fetch_source_maps","source_map_fetch_approved"],"type":"object"}],"examples":[{"allowed_origins":["https://app.example.test"],"analysis_limits":{"max_ast_nodes":250000,"max_findings":1000,"max_original_sources":2000,"max_source_map_bytes":4194304,"max_source_map_mappings":10000,"max_source_maps":100,"max_total_source_map_bytes":16777216},"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","fetch_source_maps":false,"include_accessibility_text":false,"include_script_sources":true,"include_storage_keys":false,"observation_ms":500,"source_capture_approved":true,"source_map_fetch_approved":false,"target_id":"TARGET_ID_FROM_LIST_BROWSER_TARGETS"}],"type":"object"},"kind":"browser-provider","name":"analyze_web_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"capture":{"additionalProperties":false,"properties":{"scripts_analyzed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source_artifacts":{"items":{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","type":"string"},"media_type":{"maxLength":256,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text_available":{"const":true,"type":"boolean"},"uri":{"pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text_available"],"type":"object"},"type":"array"},"target_url":{"type":"string"}},"required":["target_url","scripts_observed","scripts_analyzed","source_artifacts"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"dropped_findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parse_failures":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parsed_scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete_within_limits","truncated","partial"],"type":"string"},"visited_ast_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","parsed_scripts","parse_failures","visited_ast_nodes","dropped_findings"],"type":"object"},"inferences":{"items":{"additionalProperties":false,"properties":{"basis":{"items":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"detector":{"type":"string"},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"script_key":{"type":"string"}},"required":["script_key","artifact_sha256","line","column","detector"],"type":"object"},"minItems":1,"type":"array"},"confidence":{"enum":["low","medium","high"],"type":"string"},"kind":{"enum":["vendor_fingerprint","route_framework","bundle_runtime"],"type":"string"},"value":{"type":"string"}},"required":["kind","value","confidence","basis"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"observations":{"additionalProperties":false,"properties":{"chunks":{"additionalProperties":false,"properties":{"edges":{"items":{"additionalProperties":false,"properties":{"from_script_key":{"type":"string"},"kind":{"enum":["static_import","dynamic_import","require","worker_import"],"type":"string"},"location":{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"script_key":{"type":"string"}},"required":["script_key","line","column"],"type":"object"},"resolved_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"specifier":{"type":"string"}},"required":["from_script_key","kind","specifier","resolved_url","location"],"type":"object"},"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"script_key":{"type":"string"},"url":{"type":"string"}},"required":["script_key","url","artifact_sha256","bytes"],"type":"object"},"type":"array"}},"required":["nodes","edges"],"type":"object"},"endpoints":{"items":{"additionalProperties":false,"properties":{"location":{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"script_key":{"type":"string"}},"required":["script_key","line","column"],"type":"object"},"mechanism":{"type":"string"},"value":{"type":"string"}},"required":["value","mechanism","location"],"type":"object"},"type":"array"},"routes":{"items":{"additionalProperties":false,"properties":{"location":{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"script_key":{"type":"string"}},"required":["script_key","line","column"],"type":"object"},"mechanism":{"type":"string"},"value":{"type":"string"}},"required":["value","mechanism","location"],"type":"object"},"type":"array"},"source_maps":{"additionalProperties":false,"properties":{"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"dropped_script_keys":{"items":{"type":"string"},"type":"array"},"items":{"items":{"additionalProperties":false,"properties":{"artifact":{"anyOf":[{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","type":"string"},"media_type":{"maxLength":256,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},{"type":"null"}]},"declared_url":{"type":"string"},"limitation":{"anyOf":[{"type":"string"},{"type":"null"}]},"mappings":{"items":{"additionalProperties":false,"properties":{"generated_column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"generated_line":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"original_column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"original_line":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"source":{"type":"string"}},"required":["generated_line","generated_column","source","original_line","original_column","name"],"type":"object"},"type":"array"},"original_module_edges":{"items":{"additionalProperties":false,"properties":{"from_source":{"type":"string"},"kind":{"enum":["static_import","dynamic_import","require"],"type":"string"},"resolved_source":{"anyOf":[{"type":"string"},{"type":"null"}]},"specifier":{"type":"string"}},"required":["from_source","kind","specifier","resolved_source"],"type":"object"},"type":"array"},"original_sources":{"items":{"additionalProperties":false,"properties":{"artifact":{"anyOf":[{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","type":"string"},"media_type":{"maxLength":256,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},{"type":"null"}]},"source":{"type":"string"}},"required":["source","artifact"],"type":"object"},"type":"array"},"script_key":{"type":"string"},"status":{"enum":["included","fetch_failed","invalid","policy_filtered","truncated"],"type":"string"}},"required":["script_key","declared_url","status","artifact","original_sources","original_module_edges","mappings","limitation"],"type":"object"},"type":"array"},"processed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"requested":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["not_requested","included","partial","unavailable","truncated"],"type":"string"}},"required":["status","requested","processed","dropped","dropped_script_keys","items"],"type":"object"},"webmcp_declarations":{"items":{"additionalProperties":false,"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"script_key":{"type":"string"}},"required":["script_key","line","column"],"type":"object"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"schema_property_names":{"items":{"type":"string"},"type":"array"},"trust":{"const":"page-declared-untrusted","type":"string"}},"required":["name","description","schema_property_names","trust","location"],"type":"object"},"type":"array"}},"required":["chunks","routes","endpoints","webmcp_declarations","source_maps"],"type":"object"},"schema_version":{"const":1,"type":"number"},"unknowns":{"items":{"additionalProperties":false,"properties":{"affected_script_keys":{"items":{"type":"string"},"type":"array"},"dimension":{"type":"string"},"reason":{"type":"string"}},"required":["dimension","reason","affected_script_keys"],"type":"object"},"type":"array"}},"required":["schema_version","capture","observations","inferences","unknowns","completeness","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Analyze Web Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Arm a bounded CDP observation window while the user operates the page. Allows approved same-origin reload and SPA navigation, records ordered navigation, redirect, lifecycle, and failure metadata, and stops before retaining an out-of-policy destination.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"allowed_origins":["https://app.example.test"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","max_timeline_events":2000,"observation_ms":10000,"target_id":"TARGET_ID_FROM_LIST_BROWSER_TARGETS"}],"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"max_timeline_events":{"default":2000,"description":"Maximum permitted timeline events for this operation.","maximum":20000,"minimum":1,"type":"integer"},"observation_ms":{"default":10000,"description":"Value for observation ms.","maximum":60000,"minimum":1,"type":"integer"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["cdp_endpoint","allowed_origins","target_id","approved"],"type":"object"},"kind":"browser-provider","name":"observe_web_session","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"attach_limited_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"additionalProperties":false,"properties":{"console_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"items":{"additionalProperties":false,"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reason":{"enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"target":{"additionalProperties":false,"properties":{"final_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"initial_url":{"type":"string"},"target_id":{"type":"string"}},"required":["target_id","initial_url","final_url"],"type":"object"},"timeline":{"items":{"additionalProperties":false,"properties":{"destination_scope":{"anyOf":[{"enum":["approved","outside_policy","unsupported"],"type":"string"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"frame_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"loader_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"timestamp":{"minimum":0,"type":"number"},"type":{"enum":["navigation_requested","navigation_committed","same_origin_reload","same_document_navigation","redirect","load_failed","lifecycle","target_terminated"],"type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["sequence","type","timestamp","frame_id","loader_id","request_id","url","destination_scope","detail"],"type":"object"},"type":"array"},"window":{"additionalProperties":false,"properties":{"armed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"end_reason":{"enum":["window_elapsed","target_left_scope","target_terminated"],"type":"string"},"ended_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"requested_ms":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["armed_at","ended_at","requested_ms","end_reason"],"type":"object"}},"required":["schema_version","browser","target","window","timeline","completeness","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Observe Web Session"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Passively inventory page-registered WebMCP tools using the experimental CDP WebMCP domain. Metadata is bounded and page-declared-untrusted; REA never registers or invokes discovered tools.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"allowed_origins":["https://app.example.test"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","max_schema_bytes":262144,"max_schema_depth":20,"max_schema_nodes":5000,"max_tools":500,"observation_ms":100,"target_id":"TARGET_ID_FROM_LIST_BROWSER_TARGETS"}],"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"max_schema_bytes":{"default":262144,"description":"Maximum permitted schema bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_schema_depth":{"default":20,"description":"Maximum permitted schema depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_schema_nodes":{"default":5000,"description":"Maximum permitted schema nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_tools":{"default":500,"description":"Maximum permitted tools for this operation.","maximum":5000,"minimum":1,"type":"integer"},"observation_ms":{"default":100,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["cdp_endpoint","allowed_origins","target_id","approved"],"type":"object"},"kind":"browser-provider","name":"discover_webmcp_tools","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"attach_limited_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"additionalProperties":false,"properties":{"console_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"items":{"additionalProperties":false,"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reason":{"enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"status":{"enum":["available","unavailable"],"type":"string"},"target":{"additionalProperties":false,"properties":{"origin":{"type":"string"},"target_id":{"type":"string"},"url":{"type":"string"}},"required":["target_id","url","origin"],"type":"object"},"tools":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"autosubmit":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"read_only":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"untrusted_content":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["read_only","untrusted_content","autosubmit"],"type":"object"},"declaration_kind":{"enum":["declarative","imperative"],"type":"string"},"description":{"type":"string"},"frame_id":{"type":"string"},"frame_url":{"type":"string"},"input_schema_shape":{"anyOf":[{"additionalProperties":false,"properties":{"max_depth_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"items":{"additionalProperties":false,"properties":{"observations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"type":"string"},"types":{"items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}]},"name":{"type":"string"},"owner_origin":{"type":"string"},"registration_source":{"anyOf":[{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"url":{"type":"string"}},"required":["url","line","column"],"type":"object"},{"type":"null"}]},"tool_key":{"pattern":"^webmcp_[a-f0-9]{64}$","type":"string"},"trust":{"const":"page-declared-untrusted","type":"string"}},"required":["tool_key","name","description","frame_id","frame_url","owner_origin","declaration_kind","input_schema_shape","annotations","registration_source","trust"],"type":"object"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"}},"required":["schema_version","browser","target","status","tools","completeness","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Discover Webmcp Tools"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Compare either passive web captures or step-indexed browser scenarios. Scenario comparison aligns exact step IDs, records deterministic literal normalization, and exposes bounded artifact-level changes plus alignment failures. Missing or truncated evidence never proves equality.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"after":{"description":"Later passive web-page capture.","properties":{"inspection":{"description":"Value for inspection.","properties":{"accessibility":{"description":"Value for accessibility.","properties":{"nodes":{"description":"Value for nodes.","items":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for description."},"ignored":{"description":"Value for ignored.","type":"boolean"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact name used by this operation."},"node_id":{"description":"Value for node id.","type":"string"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for parent id."},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for role."},"states":{"default":[],"description":"Value for states.","items":{"properties":{"name":{"description":"Exact name used by this operation.","type":"string"},"value":{"anyOf":[{"type":"boolean"},{"type":"number"},{"type":"string"}],"description":"Value for value."}},"required":["name","value"],"type":"object"},"type":"array"}},"required":["node_id","parent_id","role","name","description","ignored"],"type":"object"},"type":"array"},"text_capture":{"description":"Value for text capture.","properties":{"excluded_fields":{"description":"Value for excluded fields.","maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_bytes":{"description":"Bounded byte count for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","truncated","unavailable"],"type":"string"},"truncated_fields":{"description":"Value for truncated fields.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","retained_bytes","excluded_fields","truncated_fields"],"type":"object"},"total_nodes":{"description":"Value for total nodes.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","text_capture","nodes"],"type":"object"},"browser":{"description":"Value for browser.","properties":{"js_version":{"description":"Value for js version.","type":"string"},"product":{"description":"Value for product.","type":"string"},"protocol_version":{"description":"Value for protocol version.","type":"string"},"revision":{"description":"Value for revision.","type":"string"},"user_agent":{"description":"Value for user agent.","type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"capture_window":{"description":"Value for capture window.","properties":{"ended_at":{"description":"Value for ended at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"observation_ms":{"description":"Value for observation ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"started_at":{"description":"Value for started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"}},"required":["started_at","ended_at","observation_ms"],"type":"object"},"completeness":{"description":"Value for completeness.","properties":{"attach_limited_sections":{"description":"Value for attach limited sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"description":"Value for conditions.","items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"description":"Value for dropped events.","properties":{"console_events":{"description":"Value for console events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"description":"Value for network requests.","maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"description":"Value for scripts.","maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"description":"Value for timeline events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"description":"Value for webmcp tools.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"description":"Value for websocket connections.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"description":"Value for websocket frames.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"description":"Value for excluded.","items":{"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for count."},"reason":{"description":"Value for reason.","enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"description":"Value for section.","enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"description":"Value for policy filtered sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"description":"Value for unavailable sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"console":{"description":"Value for console.","properties":{"coverage_started_at":{"description":"Value for coverage started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"events":{"description":"Value for events.","items":{"properties":{"argument_types":{"description":"Value for argument types.","items":{"type":"string"},"type":"array"},"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"text_capture":{"description":"Value for text capture.","properties":{"retained_bytes":{"description":"Bounded byte count for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","truncated"],"type":"string"},"truncated_values":{"description":"Value for truncated values.","maximum":9007199254740991,"minimum":0,"type":"integer"},"values":{"description":"Value for values.","items":{"properties":{"argument_index":{"description":"Value for argument index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"description":"Value for text.","type":"string"},"type":{"description":"Value for type.","type":"string"}},"required":["argument_index","type","text"],"type":"object"},"type":"array"}},"required":["status","values","retained_bytes","truncated_values"],"type":"object"},"timestamp":{"description":"Value for timestamp.","type":"number"},"type":{"description":"Value for type.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["type","timestamp","argument_types","url","line","column","text_capture"],"type":"object"},"type":"array"},"prior_activity_available":{"const":false,"description":"Value for prior activity available.","type":"boolean"}},"required":["events","coverage_started_at","prior_activity_available"],"type":"object"},"dom":{"description":"Value for dom.","properties":{"nodes":{"description":"Value for nodes.","items":{"properties":{"attribute_names":{"description":"Value for attribute names.","items":{"type":"string"},"type":"array"},"index":{"description":"Value for index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_name":{"description":"Value for node name.","type":"string"},"node_type":{"description":"Value for node type.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_value_length":{"description":"Value for node value length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"parent_index":{"description":"Value for parent index.","maximum":9007199254740991,"minimum":-1,"type":"integer"}},"required":["index","parent_index","node_type","node_name","node_value_length","attribute_names"],"type":"object"},"type":"array"},"total_nodes":{"description":"Value for total nodes.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","nodes"],"type":"object"},"frames":{"description":"Value for frames.","items":{"properties":{"frame_id":{"description":"Value for frame id.","type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for parent frame id."},"url":{"description":"Value for url.","type":"string"}},"required":["frame_id","parent_frame_id","url","origin"],"type":"object"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"metadata":{"description":"Value for metadata.","properties":{"agent_hints":{"description":"Value for agent hints.","items":{"properties":{"declaration":{"description":"Value for declaration.","type":"string"},"mechanism":{"description":"Value for mechanism.","enum":["link_rel","dom_link_rel","well_known_resource","response_header"],"type":"string"},"trust":{"const":"page-declared-untrusted","description":"Value for trust.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["mechanism","declaration","url","trust"],"type":"object"},"type":"array"},"dom_urls":{"description":"Value for dom urls.","items":{"properties":{"attribute":{"description":"Value for attribute.","enum":["href","src","action","formaction","poster"],"type":"string"},"destination_scope":{"description":"Value for destination scope.","enum":["approved","outside_policy","unsupported"],"type":"string"},"node_index":{"description":"Value for node index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["node_index","attribute","url","destination_scope"],"type":"object"},"type":"array"},"excluded_dom_urls":{"description":"Value for excluded dom urls.","maximum":9007199254740991,"minimum":0,"type":"integer"},"headers_allowlisted":{"const":true,"description":"Value for headers allowlisted.","type":"boolean"},"responses":{"description":"Value for responses.","items":{"properties":{"content_encoding":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for content encoding."},"content_length":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for content length."},"csp":{"description":"Value for csp.","properties":{"directives":{"description":"Value for directives.","items":{"properties":{"name":{"description":"Exact name used by this operation.","type":"string"},"sources":{"description":"Value for sources.","items":{"properties":{"kind":{"description":"Value for kind.","enum":["keyword","scheme","approved_origin","external_origin","other"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for value."}},"required":["kind","value"],"type":"object"},"type":"array"}},"required":["name","sources"],"type":"object"},"type":"array"},"hash_count":{"description":"Value for hash count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"nonce_count":{"description":"Value for nonce count.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["directives","nonce_count","hash_count"],"type":"object"},"links":{"description":"Value for links.","items":{"properties":{"as":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for as."},"crossorigin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for crossorigin."},"destination_scope":{"description":"Value for destination scope.","enum":["approved","outside_policy","unsupported"],"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for href."},"rel":{"description":"Value for rel.","items":{"type":"string"},"type":"array"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for type."}},"required":["href","destination_scope","rel","as","type","crossorigin"],"type":"object"},"type":"array"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for mime type."},"policies":{"description":"Value for policies.","properties":{"coep":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for coep."},"coop":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for coop."},"corp":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for corp."},"permissions_policy_features":{"description":"Value for permissions policy features.","items":{"type":"string"},"type":"array"},"referrer_policy":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for referrer policy."},"x_content_type_options":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for x content type options."}},"required":["coop","coep","corp","referrer_policy","x_content_type_options","permissions_policy_features"],"type":"object"},"request_id":{"description":"Value for request id.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["request_id","url","mime_type","content_length","content_encoding","csp","links","policies"],"type":"object"},"type":"array"}},"required":["responses","dom_urls","agent_hints","excluded_dom_urls","headers_allowlisted"],"type":"object"},"network":{"description":"Value for network.","properties":{"coverage_started_at":{"description":"Value for coverage started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"prior_activity_available":{"const":false,"description":"Value for prior activity available.","type":"boolean"},"requests":{"description":"Value for requests.","items":{"properties":{"body_shapes":{"description":"Value for body shapes.","properties":{"request":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for request."},"response":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for response."},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","partial","unavailable","truncated"],"type":"string"}},"required":["status","request","response"],"type":"object"},"encoded_data_length":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Value for encoded data length."},"initiator":{"description":"Value for initiator.","properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"type":{"description":"Value for type.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["type","url","line","column"],"type":"object"},"method":{"description":"Value for method.","type":"string"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for mime type."},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"request_id":{"description":"Value for request id.","type":"string"},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for resource type."},"status":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Current lifecycle or verification status."},"url":{"description":"Value for url.","type":"string"}},"required":["request_id","url","origin","method","resource_type","status","mime_type","encoded_data_length","initiator","body_shapes"],"type":"object"},"type":"array"},"websocket_events":{"description":"Value for websocket events.","items":{"properties":{"direction":{"description":"Direction in which to traverse or compare relationships.","enum":["sent","received"],"type":"string"},"opcode":{"description":"Value for opcode.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_bytes":{"description":"Bounded byte count for payload.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_shape":{"anyOf":[{"properties":{"format":{"description":"Declared input artifact format.","enum":["json","text","binary"],"type":"string"},"json_shape":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for json shape."},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["format","json_shape","truncated"],"type":"object"},{"type":"null"}],"description":"Value for payload shape."},"request_id":{"description":"Value for request id.","type":"string"}},"required":["request_id","direction","opcode","payload_bytes","payload_shape"],"type":"object"},"type":"array"}},"required":["requests","websocket_events","coverage_started_at","prior_activity_available"],"type":"object"},"resources":{"description":"Value for resources.","items":{"properties":{"content_size":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Value for content size."},"mime_type":{"description":"Value for mime type.","type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"resource_key":{"description":"Value for resource key.","pattern":"^res_[a-f0-9]{64}$","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["resource_key","url","origin","type","mime_type","content_size"],"type":"object"},"type":"array"},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"scripts":{"description":"Value for scripts.","properties":{"items":{"description":"Value for items.","items":{"properties":{"cdp_hash":{"description":"Value for cdp hash.","type":"string"},"frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for frame id."},"is_module":{"description":"Whether is module.","type":"boolean"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for language."},"length":{"description":"Value for length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"resource_reconciliation":{"description":"Value for resource reconciliation.","oneOf":[{"properties":{"resource_key":{"description":"Value for resource key.","type":"string"},"status":{"const":"exact","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","resource_key"],"type":"object"},{"properties":{"candidate_resource_keys":{"description":"Value for candidate resource keys.","items":{"type":"string"},"type":"array"},"status":{"const":"ambiguous","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","candidate_resource_keys"],"type":"object"},{"properties":{"reason":{"const":"no_exact_sanitized_url","description":"Value for reason.","type":"string"},"status":{"const":"unmatched","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","reason"],"type":"object"}]},"script_key":{"description":"Value for script key.","pattern":"^scr_[a-f0-9]{64}(?:_[0-9]+)?$","type":"string"},"source":{"description":"Value for source.","oneOf":[{"properties":{"included":{"const":false,"description":"Value for included.","type":"boolean"},"reason":{"description":"Value for reason.","type":"string"}},"required":["included","reason"],"type":"object"},{"properties":{"artifact":{"description":"Value for artifact.","properties":{"bytes":{"description":"Value for bytes.","maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","description":"Value for charset.","type":"string"},"media_type":{"description":"Value for media type.","maxLength":256,"minLength":1,"type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},"included":{"const":true,"description":"Value for included.","type":"boolean"}},"required":["included","artifact"],"type":"object"}]},"source_map_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for source map url."},"url":{"description":"Value for url.","type":"string"}},"required":["script_key","url","origin","cdp_hash","length","is_module","language","source_map_url","resource_reconciliation","source"],"type":"object"},"type":"array"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"},"storage":{"description":"Value for storage.","properties":{"cache_names":{"description":"Value for cache names.","items":{"type":"string"},"type":"array"},"content_fingerprints":{"default":[],"description":"Value for content fingerprints.","items":{"properties":{"complete":{"description":"Value for complete.","type":"boolean"},"identity_sha256":{"description":"Exact SHA-256 digest of identity.","pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"description":"Value for scope.","enum":["cookie","local_storage","session_storage","indexed_db_schema","indexed_db_record","cache_entry"],"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of value."}},"required":["scope","identity_sha256","value_sha256","complete"],"type":"object"},"type":"array"},"fingerprint_algorithm":{"const":"sha256","default":"sha256","description":"Value for fingerprint algorithm.","type":"string"},"fingerprints_complete":{"default":false,"description":"Value for fingerprints complete.","type":"boolean"},"indexed_db_names":{"description":"Value for indexed db names.","items":{"type":"string"},"type":"array"},"local_storage_keys":{"description":"Value for local storage keys.","items":{"type":"string"},"type":"array"},"origin":{"description":"Value for origin.","type":"string"},"quota_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Bounded byte count for quota."},"session_storage_keys":{"description":"Value for session storage keys.","items":{"type":"string"},"type":"array"},"usage_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Bounded byte count for usage."},"values_redacted":{"const":true,"description":"Value for values redacted.","type":"boolean"}},"required":["origin","usage_bytes","quota_bytes","local_storage_keys","session_storage_keys","indexed_db_names","cache_names","values_redacted"],"type":"object"},"target":{"description":"Value for target.","properties":{"attached":{"description":"Value for attached.","type":"boolean"},"origin":{"description":"Value for origin.","type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"title":{"description":"Value for title.","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","type","title","url","origin","attached"],"type":"object"},"workers":{"description":"Value for workers.","items":{"properties":{"attached":{"description":"Value for attached.","type":"boolean"},"opener_target_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for opener target id."},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for parent frame id."},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","type","url","origin","attached"],"type":"object"},"type":"array"}},"required":["schema_version","browser","target","capture_window","completeness","frames","dom","accessibility","scripts","resources","network","console","workers","metadata","storage","limitations"],"type":"object"},"webmcp":{"anyOf":[{"properties":{"browser":{"description":"Value for browser.","properties":{"js_version":{"description":"Value for js version.","type":"string"},"product":{"description":"Value for product.","type":"string"},"protocol_version":{"description":"Value for protocol version.","type":"string"},"revision":{"description":"Value for revision.","type":"string"},"user_agent":{"description":"Value for user agent.","type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"completeness":{"description":"Value for completeness.","properties":{"attach_limited_sections":{"description":"Value for attach limited sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"description":"Value for conditions.","items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"description":"Value for dropped events.","properties":{"console_events":{"description":"Value for console events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"description":"Value for network requests.","maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"description":"Value for scripts.","maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"description":"Value for timeline events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"description":"Value for webmcp tools.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"description":"Value for websocket connections.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"description":"Value for websocket frames.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"description":"Value for excluded.","items":{"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for count."},"reason":{"description":"Value for reason.","enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"description":"Value for section.","enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"description":"Value for policy filtered sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"description":"Value for unavailable sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"status":{"description":"Current lifecycle or verification status.","enum":["available","unavailable"],"type":"string"},"target":{"description":"Value for target.","properties":{"origin":{"description":"Value for origin.","type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","url","origin"],"type":"object"},"tools":{"description":"Value for tools.","properties":{"items":{"description":"Value for items.","items":{"properties":{"annotations":{"description":"Value for annotations.","properties":{"autosubmit":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for autosubmit."},"read_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for read only."},"untrusted_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for untrusted content."}},"required":["read_only","untrusted_content","autosubmit"],"type":"object"},"declaration_kind":{"description":"Value for declaration kind.","enum":["declarative","imperative"],"type":"string"},"description":{"description":"Value for description.","type":"string"},"frame_id":{"description":"Value for frame id.","type":"string"},"frame_url":{"description":"Value for frame url.","type":"string"},"input_schema_shape":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for input schema shape."},"name":{"description":"Exact name used by this operation.","type":"string"},"owner_origin":{"description":"Value for owner origin.","type":"string"},"registration_source":{"anyOf":[{"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"url":{"description":"Value for url.","type":"string"}},"required":["url","line","column"],"type":"object"},{"type":"null"}],"description":"Value for registration source."},"tool_key":{"description":"Value for tool key.","pattern":"^webmcp_[a-f0-9]{64}$","type":"string"},"trust":{"const":"page-declared-untrusted","description":"Value for trust.","type":"string"}},"required":["tool_key","name","description","frame_id","frame_url","owner_origin","declaration_kind","input_schema_shape","annotations","registration_source","trust"],"type":"object"},"type":"array"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"}},"required":["schema_version","browser","target","status","tools","completeness","limitations"],"type":"object"},{"type":"null"}],"default":null,"description":"Value for webmcp."}},"required":["inspection"],"type":"object"},"before":{"description":"Earlier passive web-page capture.","properties":{"inspection":{"description":"Value for inspection.","properties":{"accessibility":{"description":"Value for accessibility.","properties":{"nodes":{"description":"Value for nodes.","items":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for description."},"ignored":{"description":"Value for ignored.","type":"boolean"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact name used by this operation."},"node_id":{"description":"Value for node id.","type":"string"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for parent id."},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for role."},"states":{"default":[],"description":"Value for states.","items":{"properties":{"name":{"description":"Exact name used by this operation.","type":"string"},"value":{"anyOf":[{"type":"boolean"},{"type":"number"},{"type":"string"}],"description":"Value for value."}},"required":["name","value"],"type":"object"},"type":"array"}},"required":["node_id","parent_id","role","name","description","ignored"],"type":"object"},"type":"array"},"text_capture":{"description":"Value for text capture.","properties":{"excluded_fields":{"description":"Value for excluded fields.","maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_bytes":{"description":"Bounded byte count for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","truncated","unavailable"],"type":"string"},"truncated_fields":{"description":"Value for truncated fields.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","retained_bytes","excluded_fields","truncated_fields"],"type":"object"},"total_nodes":{"description":"Value for total nodes.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","text_capture","nodes"],"type":"object"},"browser":{"description":"Value for browser.","properties":{"js_version":{"description":"Value for js version.","type":"string"},"product":{"description":"Value for product.","type":"string"},"protocol_version":{"description":"Value for protocol version.","type":"string"},"revision":{"description":"Value for revision.","type":"string"},"user_agent":{"description":"Value for user agent.","type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"capture_window":{"description":"Value for capture window.","properties":{"ended_at":{"description":"Value for ended at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"observation_ms":{"description":"Value for observation ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"started_at":{"description":"Value for started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"}},"required":["started_at","ended_at","observation_ms"],"type":"object"},"completeness":{"description":"Value for completeness.","properties":{"attach_limited_sections":{"description":"Value for attach limited sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"description":"Value for conditions.","items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"description":"Value for dropped events.","properties":{"console_events":{"description":"Value for console events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"description":"Value for network requests.","maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"description":"Value for scripts.","maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"description":"Value for timeline events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"description":"Value for webmcp tools.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"description":"Value for websocket connections.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"description":"Value for websocket frames.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"description":"Value for excluded.","items":{"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for count."},"reason":{"description":"Value for reason.","enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"description":"Value for section.","enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"description":"Value for policy filtered sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"description":"Value for unavailable sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"console":{"description":"Value for console.","properties":{"coverage_started_at":{"description":"Value for coverage started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"events":{"description":"Value for events.","items":{"properties":{"argument_types":{"description":"Value for argument types.","items":{"type":"string"},"type":"array"},"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"text_capture":{"description":"Value for text capture.","properties":{"retained_bytes":{"description":"Bounded byte count for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","truncated"],"type":"string"},"truncated_values":{"description":"Value for truncated values.","maximum":9007199254740991,"minimum":0,"type":"integer"},"values":{"description":"Value for values.","items":{"properties":{"argument_index":{"description":"Value for argument index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"description":"Value for text.","type":"string"},"type":{"description":"Value for type.","type":"string"}},"required":["argument_index","type","text"],"type":"object"},"type":"array"}},"required":["status","values","retained_bytes","truncated_values"],"type":"object"},"timestamp":{"description":"Value for timestamp.","type":"number"},"type":{"description":"Value for type.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["type","timestamp","argument_types","url","line","column","text_capture"],"type":"object"},"type":"array"},"prior_activity_available":{"const":false,"description":"Value for prior activity available.","type":"boolean"}},"required":["events","coverage_started_at","prior_activity_available"],"type":"object"},"dom":{"description":"Value for dom.","properties":{"nodes":{"description":"Value for nodes.","items":{"properties":{"attribute_names":{"description":"Value for attribute names.","items":{"type":"string"},"type":"array"},"index":{"description":"Value for index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_name":{"description":"Value for node name.","type":"string"},"node_type":{"description":"Value for node type.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_value_length":{"description":"Value for node value length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"parent_index":{"description":"Value for parent index.","maximum":9007199254740991,"minimum":-1,"type":"integer"}},"required":["index","parent_index","node_type","node_name","node_value_length","attribute_names"],"type":"object"},"type":"array"},"total_nodes":{"description":"Value for total nodes.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","nodes"],"type":"object"},"frames":{"description":"Value for frames.","items":{"properties":{"frame_id":{"description":"Value for frame id.","type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for parent frame id."},"url":{"description":"Value for url.","type":"string"}},"required":["frame_id","parent_frame_id","url","origin"],"type":"object"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"metadata":{"description":"Value for metadata.","properties":{"agent_hints":{"description":"Value for agent hints.","items":{"properties":{"declaration":{"description":"Value for declaration.","type":"string"},"mechanism":{"description":"Value for mechanism.","enum":["link_rel","dom_link_rel","well_known_resource","response_header"],"type":"string"},"trust":{"const":"page-declared-untrusted","description":"Value for trust.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["mechanism","declaration","url","trust"],"type":"object"},"type":"array"},"dom_urls":{"description":"Value for dom urls.","items":{"properties":{"attribute":{"description":"Value for attribute.","enum":["href","src","action","formaction","poster"],"type":"string"},"destination_scope":{"description":"Value for destination scope.","enum":["approved","outside_policy","unsupported"],"type":"string"},"node_index":{"description":"Value for node index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["node_index","attribute","url","destination_scope"],"type":"object"},"type":"array"},"excluded_dom_urls":{"description":"Value for excluded dom urls.","maximum":9007199254740991,"minimum":0,"type":"integer"},"headers_allowlisted":{"const":true,"description":"Value for headers allowlisted.","type":"boolean"},"responses":{"description":"Value for responses.","items":{"properties":{"content_encoding":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for content encoding."},"content_length":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for content length."},"csp":{"description":"Value for csp.","properties":{"directives":{"description":"Value for directives.","items":{"properties":{"name":{"description":"Exact name used by this operation.","type":"string"},"sources":{"description":"Value for sources.","items":{"properties":{"kind":{"description":"Value for kind.","enum":["keyword","scheme","approved_origin","external_origin","other"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for value."}},"required":["kind","value"],"type":"object"},"type":"array"}},"required":["name","sources"],"type":"object"},"type":"array"},"hash_count":{"description":"Value for hash count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"nonce_count":{"description":"Value for nonce count.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["directives","nonce_count","hash_count"],"type":"object"},"links":{"description":"Value for links.","items":{"properties":{"as":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for as."},"crossorigin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for crossorigin."},"destination_scope":{"description":"Value for destination scope.","enum":["approved","outside_policy","unsupported"],"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for href."},"rel":{"description":"Value for rel.","items":{"type":"string"},"type":"array"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for type."}},"required":["href","destination_scope","rel","as","type","crossorigin"],"type":"object"},"type":"array"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for mime type."},"policies":{"description":"Value for policies.","properties":{"coep":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for coep."},"coop":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for coop."},"corp":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for corp."},"permissions_policy_features":{"description":"Value for permissions policy features.","items":{"type":"string"},"type":"array"},"referrer_policy":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for referrer policy."},"x_content_type_options":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for x content type options."}},"required":["coop","coep","corp","referrer_policy","x_content_type_options","permissions_policy_features"],"type":"object"},"request_id":{"description":"Value for request id.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["request_id","url","mime_type","content_length","content_encoding","csp","links","policies"],"type":"object"},"type":"array"}},"required":["responses","dom_urls","agent_hints","excluded_dom_urls","headers_allowlisted"],"type":"object"},"network":{"description":"Value for network.","properties":{"coverage_started_at":{"description":"Value for coverage started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"prior_activity_available":{"const":false,"description":"Value for prior activity available.","type":"boolean"},"requests":{"description":"Value for requests.","items":{"properties":{"body_shapes":{"description":"Value for body shapes.","properties":{"request":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for request."},"response":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for response."},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","partial","unavailable","truncated"],"type":"string"}},"required":["status","request","response"],"type":"object"},"encoded_data_length":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Value for encoded data length."},"initiator":{"description":"Value for initiator.","properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"type":{"description":"Value for type.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["type","url","line","column"],"type":"object"},"method":{"description":"Value for method.","type":"string"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for mime type."},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"request_id":{"description":"Value for request id.","type":"string"},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for resource type."},"status":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Current lifecycle or verification status."},"url":{"description":"Value for url.","type":"string"}},"required":["request_id","url","origin","method","resource_type","status","mime_type","encoded_data_length","initiator","body_shapes"],"type":"object"},"type":"array"},"websocket_events":{"description":"Value for websocket events.","items":{"properties":{"direction":{"description":"Direction in which to traverse or compare relationships.","enum":["sent","received"],"type":"string"},"opcode":{"description":"Value for opcode.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_bytes":{"description":"Bounded byte count for payload.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_shape":{"anyOf":[{"properties":{"format":{"description":"Declared input artifact format.","enum":["json","text","binary"],"type":"string"},"json_shape":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for json shape."},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["format","json_shape","truncated"],"type":"object"},{"type":"null"}],"description":"Value for payload shape."},"request_id":{"description":"Value for request id.","type":"string"}},"required":["request_id","direction","opcode","payload_bytes","payload_shape"],"type":"object"},"type":"array"}},"required":["requests","websocket_events","coverage_started_at","prior_activity_available"],"type":"object"},"resources":{"description":"Value for resources.","items":{"properties":{"content_size":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Value for content size."},"mime_type":{"description":"Value for mime type.","type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"resource_key":{"description":"Value for resource key.","pattern":"^res_[a-f0-9]{64}$","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["resource_key","url","origin","type","mime_type","content_size"],"type":"object"},"type":"array"},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"scripts":{"description":"Value for scripts.","properties":{"items":{"description":"Value for items.","items":{"properties":{"cdp_hash":{"description":"Value for cdp hash.","type":"string"},"frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for frame id."},"is_module":{"description":"Whether is module.","type":"boolean"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for language."},"length":{"description":"Value for length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"resource_reconciliation":{"description":"Value for resource reconciliation.","oneOf":[{"properties":{"resource_key":{"description":"Value for resource key.","type":"string"},"status":{"const":"exact","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","resource_key"],"type":"object"},{"properties":{"candidate_resource_keys":{"description":"Value for candidate resource keys.","items":{"type":"string"},"type":"array"},"status":{"const":"ambiguous","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","candidate_resource_keys"],"type":"object"},{"properties":{"reason":{"const":"no_exact_sanitized_url","description":"Value for reason.","type":"string"},"status":{"const":"unmatched","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","reason"],"type":"object"}]},"script_key":{"description":"Value for script key.","pattern":"^scr_[a-f0-9]{64}(?:_[0-9]+)?$","type":"string"},"source":{"description":"Value for source.","oneOf":[{"properties":{"included":{"const":false,"description":"Value for included.","type":"boolean"},"reason":{"description":"Value for reason.","type":"string"}},"required":["included","reason"],"type":"object"},{"properties":{"artifact":{"description":"Value for artifact.","properties":{"bytes":{"description":"Value for bytes.","maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","description":"Value for charset.","type":"string"},"media_type":{"description":"Value for media type.","maxLength":256,"minLength":1,"type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},"included":{"const":true,"description":"Value for included.","type":"boolean"}},"required":["included","artifact"],"type":"object"}]},"source_map_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for source map url."},"url":{"description":"Value for url.","type":"string"}},"required":["script_key","url","origin","cdp_hash","length","is_module","language","source_map_url","resource_reconciliation","source"],"type":"object"},"type":"array"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"},"storage":{"description":"Value for storage.","properties":{"cache_names":{"description":"Value for cache names.","items":{"type":"string"},"type":"array"},"content_fingerprints":{"default":[],"description":"Value for content fingerprints.","items":{"properties":{"complete":{"description":"Value for complete.","type":"boolean"},"identity_sha256":{"description":"Exact SHA-256 digest of identity.","pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"description":"Value for scope.","enum":["cookie","local_storage","session_storage","indexed_db_schema","indexed_db_record","cache_entry"],"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of value."}},"required":["scope","identity_sha256","value_sha256","complete"],"type":"object"},"type":"array"},"fingerprint_algorithm":{"const":"sha256","default":"sha256","description":"Value for fingerprint algorithm.","type":"string"},"fingerprints_complete":{"default":false,"description":"Value for fingerprints complete.","type":"boolean"},"indexed_db_names":{"description":"Value for indexed db names.","items":{"type":"string"},"type":"array"},"local_storage_keys":{"description":"Value for local storage keys.","items":{"type":"string"},"type":"array"},"origin":{"description":"Value for origin.","type":"string"},"quota_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Bounded byte count for quota."},"session_storage_keys":{"description":"Value for session storage keys.","items":{"type":"string"},"type":"array"},"usage_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Bounded byte count for usage."},"values_redacted":{"const":true,"description":"Value for values redacted.","type":"boolean"}},"required":["origin","usage_bytes","quota_bytes","local_storage_keys","session_storage_keys","indexed_db_names","cache_names","values_redacted"],"type":"object"},"target":{"description":"Value for target.","properties":{"attached":{"description":"Value for attached.","type":"boolean"},"origin":{"description":"Value for origin.","type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"title":{"description":"Value for title.","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","type","title","url","origin","attached"],"type":"object"},"workers":{"description":"Value for workers.","items":{"properties":{"attached":{"description":"Value for attached.","type":"boolean"},"opener_target_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for opener target id."},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for parent frame id."},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","type","url","origin","attached"],"type":"object"},"type":"array"}},"required":["schema_version","browser","target","capture_window","completeness","frames","dom","accessibility","scripts","resources","network","console","workers","metadata","storage","limitations"],"type":"object"},"webmcp":{"anyOf":[{"properties":{"browser":{"description":"Value for browser.","properties":{"js_version":{"description":"Value for js version.","type":"string"},"product":{"description":"Value for product.","type":"string"},"protocol_version":{"description":"Value for protocol version.","type":"string"},"revision":{"description":"Value for revision.","type":"string"},"user_agent":{"description":"Value for user agent.","type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"completeness":{"description":"Value for completeness.","properties":{"attach_limited_sections":{"description":"Value for attach limited sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"description":"Value for conditions.","items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"description":"Value for dropped events.","properties":{"console_events":{"description":"Value for console events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"description":"Value for network requests.","maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"description":"Value for scripts.","maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"description":"Value for timeline events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"description":"Value for webmcp tools.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"description":"Value for websocket connections.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"description":"Value for websocket frames.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"description":"Value for excluded.","items":{"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for count."},"reason":{"description":"Value for reason.","enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"description":"Value for section.","enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"description":"Value for policy filtered sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"description":"Value for unavailable sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"status":{"description":"Current lifecycle or verification status.","enum":["available","unavailable"],"type":"string"},"target":{"description":"Value for target.","properties":{"origin":{"description":"Value for origin.","type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","url","origin"],"type":"object"},"tools":{"description":"Value for tools.","properties":{"items":{"description":"Value for items.","items":{"properties":{"annotations":{"description":"Value for annotations.","properties":{"autosubmit":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for autosubmit."},"read_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for read only."},"untrusted_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for untrusted content."}},"required":["read_only","untrusted_content","autosubmit"],"type":"object"},"declaration_kind":{"description":"Value for declaration kind.","enum":["declarative","imperative"],"type":"string"},"description":{"description":"Value for description.","type":"string"},"frame_id":{"description":"Value for frame id.","type":"string"},"frame_url":{"description":"Value for frame url.","type":"string"},"input_schema_shape":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for input schema shape."},"name":{"description":"Exact name used by this operation.","type":"string"},"owner_origin":{"description":"Value for owner origin.","type":"string"},"registration_source":{"anyOf":[{"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"url":{"description":"Value for url.","type":"string"}},"required":["url","line","column"],"type":"object"},{"type":"null"}],"description":"Value for registration source."},"tool_key":{"description":"Value for tool key.","pattern":"^webmcp_[a-f0-9]{64}$","type":"string"},"trust":{"const":"page-declared-untrusted","description":"Value for trust.","type":"string"}},"required":["tool_key","name","description","frame_id","frame_url","owner_origin","declaration_kind","input_schema_shape","annotations","registration_source","trust"],"type":"object"},"type":"array"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"}},"required":["schema_version","browser","target","status","tools","completeness","limitations"],"type":"object"},{"type":"null"}],"default":null,"description":"Value for webmcp."}},"required":["inspection"],"type":"object"},"max_changes":{"default":2000,"description":"Maximum normalized change records to retain.","maximum":20000,"minimum":1,"type":"integer"}},"required":["before","after"],"type":"object"},{"additionalProperties":false,"properties":{"after_scenario":{"additionalProperties":false,"description":"Later browser scenario capture.","properties":{"browser":{"additionalProperties":false,"description":"Value for browser.","properties":{"cleanup":{"description":"Value for cleanup.","enum":["terminated-owned-process","disconnected-external"],"type":"string"},"mode":{"description":"Operation mode that selects the requested behavior.","enum":["launch","connect"],"type":"string"},"process_ownership":{"description":"Value for process ownership.","enum":["provider-owned","external"],"type":"string"},"product":{"description":"Value for product.","maxLength":1024,"minLength":1,"type":"string"},"version":{"description":"Value for version.","maxLength":256,"minLength":1,"type":"string"}},"required":["mode","process_ownership","cleanup","product","version"],"type":"object"},"completeness":{"additionalProperties":false,"description":"Value for completeness.","properties":{"equality_eligible":{"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete","incomplete","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},"duration_ms":{"description":"Value for duration ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"events":{"additionalProperties":false,"description":"Value for events.","properties":{"dropped":{"description":"Value for dropped.","maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"description":"Value for items.","items":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"console","description":"Value for kind.","type":"string"},"level":{"description":"Value for level.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"description":"Value for text.","maxLength":65536,"type":"string"},"url":{"anyOf":[{"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}],"description":"Value for url."}},"required":["sequence","step_index","kind","level","text","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"page-error","description":"Value for kind.","type":"string"},"message":{"description":"Value for message.","maxLength":65536,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"stack":{"anyOf":[{"maxLength":262144,"type":"string"},{"type":"null"}],"description":"Value for stack."},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","step_index","kind","message","stack"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}],"description":"Value for failure."},"header_names":{"description":"Value for header names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"description":"Value for kind.","enum":["request","response","request-failed"],"type":"string"},"method":{"description":"Value for method.","maxLength":32,"minLength":1,"type":"string"},"resource_type":{"description":"Value for resource type.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"anyOf":[{"maximum":599,"minimum":100,"type":"integer"},{"type":"null"}],"description":"Current lifecycle or verification status."},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","method","url","resource_type","status","header_names","failure"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["websocket-opened","websocket-closed"],"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["websocket-frame-sent","websocket-frame-received"],"type":"string"},"payload_bytes":{"description":"Bounded byte count for payload.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_text":{"anyOf":[{"maxLength":65536,"type":"string"},{"type":"null"}],"description":"Value for payload text."},"payload_type":{"description":"Value for payload type.","enum":["text","binary"],"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"description":"Value for truncated.","type":"boolean"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url","payload_type","payload_bytes","payload_text","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["frame-attached","frame-detached","frame-navigated","worker-created","worker-closed","popup-opened","popup-closed"],"type":"string"},"name":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}],"description":"Exact name used by this operation."},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}],"description":"Value for url."}},"required":["sequence","step_index","kind","url","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"download-cancelled","description":"Value for kind.","type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"suggested_filename":{"description":"Value for suggested filename.","maxLength":1024,"type":"string"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","suggested_filename","url"],"type":"object"}]},"maxItems":100000,"type":"array"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["retained","dropped","items"],"type":"object"},"limitations":{"description":"Value for limitations.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"scenario":{"additionalProperties":false,"description":"Value for scenario.","properties":{"action_count":{"description":"Value for action count.","maximum":128,"minimum":1,"type":"integer"},"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"secret_references":{"description":"Value for secret references.","items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"start_origin":{"description":"Value for start origin.","maxLength":2048,"minLength":1,"type":"string"}},"required":["start_origin","allowed_origins","action_count","secret_references"],"type":"object"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"steps":{"description":"Value for steps.","items":{"additionalProperties":false,"properties":{"action":{"description":"Value for action.","maxLength":64,"minLength":1,"type":"string"},"after_url":{"description":"Value for after url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"artifacts":{"additionalProperties":false,"description":"Value for artifacts.","properties":{"accessibility":{"description":"Value for accessibility.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"dom":{"description":"Value for dom.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"history":{"description":"Value for history.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"current_url":{"description":"Value for current url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"length":{"description":"Value for length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"navigation_entries":{"description":"Value for navigation entries.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"type":{"description":"Value for type.","enum":["navigate","reload","back_forward","prerender","unknown"],"type":"string"}},"required":["type","name"],"type":"object"},"maxItems":256,"type":"array"}},"required":["length","current_url","navigation_entries"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"screenshot":{"description":"Value for screenshot.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"description":"Value for data base64.","maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","description":"Value for media type.","type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"storage":{"description":"Value for storage.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"cookies":{"description":"Value for cookies.","items":{"additionalProperties":false,"properties":{"domain":{"description":"Value for domain.","maxLength":2048,"type":"string"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of value."},"value_state":{"description":"Value for value state.","enum":["hashed","redacted-secret"],"type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"},"maxItems":512,"type":"array"},"local_storage":{"description":"Value for local storage.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of value."},"value_state":{"description":"Value for value state.","enum":["hashed","redacted-secret"],"type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},"maxItems":512,"type":"array"},"session_storage":{"description":"Value for session storage.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of value."},"value_state":{"description":"Value for value state.","enum":["hashed","redacted-secret"],"type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},"maxItems":512,"type":"array"}},"required":["cookies","local_storage","session_storage"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"url":{"description":"Value for url.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]}},"required":["screenshot","dom","accessibility","url","history","storage"],"type":"object"},"before_url":{"description":"Value for before url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"completeness":{"additionalProperties":false,"description":"Value for completeness.","properties":{"equality_eligible":{"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete","incomplete","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},"elapsed_ms":{"description":"Value for elapsed ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"description":"Structured, caller-actionable error when the operation fails."},"event_sequence_end":{"description":"Value for event sequence end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"event_sequence_start":{"description":"Value for event sequence start.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["completed","failed","cancelled"],"type":"string"},"step_id":{"description":"Value for step id.","maxLength":64,"minLength":1,"type":"string"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["step_index","step_id","action","status","elapsed_ms","before_url","after_url","error","event_sequence_start","event_sequence_end","artifacts","completeness"],"type":"object"},"maxItems":129,"minItems":1,"type":"array"}},"required":["schema_version","browser","scenario","duration_ms","steps","events","completeness","limitations"],"type":"object"},"before_scenario":{"additionalProperties":false,"description":"Earlier browser scenario capture.","properties":{"browser":{"additionalProperties":false,"description":"Value for browser.","properties":{"cleanup":{"description":"Value for cleanup.","enum":["terminated-owned-process","disconnected-external"],"type":"string"},"mode":{"description":"Operation mode that selects the requested behavior.","enum":["launch","connect"],"type":"string"},"process_ownership":{"description":"Value for process ownership.","enum":["provider-owned","external"],"type":"string"},"product":{"description":"Value for product.","maxLength":1024,"minLength":1,"type":"string"},"version":{"description":"Value for version.","maxLength":256,"minLength":1,"type":"string"}},"required":["mode","process_ownership","cleanup","product","version"],"type":"object"},"completeness":{"additionalProperties":false,"description":"Value for completeness.","properties":{"equality_eligible":{"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete","incomplete","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},"duration_ms":{"description":"Value for duration ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"events":{"additionalProperties":false,"description":"Value for events.","properties":{"dropped":{"description":"Value for dropped.","maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"description":"Value for items.","items":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"console","description":"Value for kind.","type":"string"},"level":{"description":"Value for level.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"description":"Value for text.","maxLength":65536,"type":"string"},"url":{"anyOf":[{"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}],"description":"Value for url."}},"required":["sequence","step_index","kind","level","text","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"page-error","description":"Value for kind.","type":"string"},"message":{"description":"Value for message.","maxLength":65536,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"stack":{"anyOf":[{"maxLength":262144,"type":"string"},{"type":"null"}],"description":"Value for stack."},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","step_index","kind","message","stack"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}],"description":"Value for failure."},"header_names":{"description":"Value for header names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"description":"Value for kind.","enum":["request","response","request-failed"],"type":"string"},"method":{"description":"Value for method.","maxLength":32,"minLength":1,"type":"string"},"resource_type":{"description":"Value for resource type.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"anyOf":[{"maximum":599,"minimum":100,"type":"integer"},{"type":"null"}],"description":"Current lifecycle or verification status."},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","method","url","resource_type","status","header_names","failure"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["websocket-opened","websocket-closed"],"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["websocket-frame-sent","websocket-frame-received"],"type":"string"},"payload_bytes":{"description":"Bounded byte count for payload.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_text":{"anyOf":[{"maxLength":65536,"type":"string"},{"type":"null"}],"description":"Value for payload text."},"payload_type":{"description":"Value for payload type.","enum":["text","binary"],"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"description":"Value for truncated.","type":"boolean"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url","payload_type","payload_bytes","payload_text","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["frame-attached","frame-detached","frame-navigated","worker-created","worker-closed","popup-opened","popup-closed"],"type":"string"},"name":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}],"description":"Exact name used by this operation."},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}],"description":"Value for url."}},"required":["sequence","step_index","kind","url","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"download-cancelled","description":"Value for kind.","type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"suggested_filename":{"description":"Value for suggested filename.","maxLength":1024,"type":"string"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","suggested_filename","url"],"type":"object"}]},"maxItems":100000,"type":"array"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["retained","dropped","items"],"type":"object"},"limitations":{"description":"Value for limitations.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"scenario":{"additionalProperties":false,"description":"Value for scenario.","properties":{"action_count":{"description":"Value for action count.","maximum":128,"minimum":1,"type":"integer"},"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"secret_references":{"description":"Value for secret references.","items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"start_origin":{"description":"Value for start origin.","maxLength":2048,"minLength":1,"type":"string"}},"required":["start_origin","allowed_origins","action_count","secret_references"],"type":"object"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"steps":{"description":"Value for steps.","items":{"additionalProperties":false,"properties":{"action":{"description":"Value for action.","maxLength":64,"minLength":1,"type":"string"},"after_url":{"description":"Value for after url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"artifacts":{"additionalProperties":false,"description":"Value for artifacts.","properties":{"accessibility":{"description":"Value for accessibility.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"dom":{"description":"Value for dom.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"history":{"description":"Value for history.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"current_url":{"description":"Value for current url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"length":{"description":"Value for length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"navigation_entries":{"description":"Value for navigation entries.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"type":{"description":"Value for type.","enum":["navigate","reload","back_forward","prerender","unknown"],"type":"string"}},"required":["type","name"],"type":"object"},"maxItems":256,"type":"array"}},"required":["length","current_url","navigation_entries"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"screenshot":{"description":"Value for screenshot.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"description":"Value for data base64.","maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","description":"Value for media type.","type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"storage":{"description":"Value for storage.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"cookies":{"description":"Value for cookies.","items":{"additionalProperties":false,"properties":{"domain":{"description":"Value for domain.","maxLength":2048,"type":"string"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of value."},"value_state":{"description":"Value for value state.","enum":["hashed","redacted-secret"],"type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"},"maxItems":512,"type":"array"},"local_storage":{"description":"Value for local storage.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of value."},"value_state":{"description":"Value for value state.","enum":["hashed","redacted-secret"],"type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},"maxItems":512,"type":"array"},"session_storage":{"description":"Value for session storage.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of value."},"value_state":{"description":"Value for value state.","enum":["hashed","redacted-secret"],"type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},"maxItems":512,"type":"array"}},"required":["cookies","local_storage","session_storage"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"url":{"description":"Value for url.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]}},"required":["screenshot","dom","accessibility","url","history","storage"],"type":"object"},"before_url":{"description":"Value for before url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"completeness":{"additionalProperties":false,"description":"Value for completeness.","properties":{"equality_eligible":{"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete","incomplete","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},"elapsed_ms":{"description":"Value for elapsed ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}],"description":"Structured, caller-actionable error when the operation fails."},"event_sequence_end":{"description":"Value for event sequence end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"event_sequence_start":{"description":"Value for event sequence start.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["completed","failed","cancelled"],"type":"string"},"step_id":{"description":"Value for step id.","maxLength":64,"minLength":1,"type":"string"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["step_index","step_id","action","status","elapsed_ms","before_url","after_url","error","event_sequence_start","event_sequence_end","artifacts","completeness"],"type":"object"},"maxItems":129,"minItems":1,"type":"array"}},"required":["schema_version","browser","scenario","duration_ms","steps","events","completeness","limitations"],"type":"object"},"max_changes":{"default":2000,"description":"Maximum normalized change records to retain.","maximum":20000,"minimum":1,"type":"integer"},"normalization":{"additionalProperties":false,"default":{"rules":[]},"description":"Exact-literal normalization policy.","properties":{"rules":{"default":[],"description":"Value for rules.","items":{"additionalProperties":false,"properties":{"artifacts":{"description":"Artifact families whose durable string fields use this rule.","items":{"enum":["action_state","dom","accessibility","url","history","storage","events"],"type":"string"},"maxItems":7,"minItems":1,"type":"array"},"match":{"description":"Exact public literal to replace; regular expressions are not used.","maxLength":4096,"minLength":1,"type":"string"},"replacement":{"description":"Recorded replacement text used in normalized comparison.","maxLength":4096,"type":"string"},"rule_id":{"description":"Stable rule identity; rules execute in rule_id order.","maxLength":64,"minLength":1,"type":"string"}},"required":["rule_id","artifacts","match","replacement"],"type":"object"},"maxItems":128,"type":"array"}},"type":"object"}},"required":["before_scenario","after_scenario"],"type":"object"}],"examples":[{"after_scenario":{"browser":{"cleanup":"disconnected-external","mode":"connect","process_ownership":"external","product":"Chromium","version":"149"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"duration_ms":10,"events":{"dropped":0,"items":[],"retained":0},"limitations":[],"scenario":{"action_count":1,"allowed_origins":["https://app.example.test"],"secret_references":[],"start_origin":"https://app.example.test"},"schema_version":1,"steps":[{"action":"scenario_start","after_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"artifacts":{"accessibility":{"state":"not_requested"},"dom":{"state":"not_requested"},"history":{"state":"not_requested"},"screenshot":{"state":"not_requested"},"storage":{"state":"not_requested"},"url":{"state":"not_requested"}},"before_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"elapsed_ms":0,"error":null,"event_sequence_end":0,"event_sequence_start":1,"status":"completed","step_id":"scenario_start","step_index":0},{"action":"click","after_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"artifacts":{"accessibility":{"state":"not_requested"},"dom":{"state":"not_requested"},"history":{"state":"not_requested"},"screenshot":{"state":"not_requested"},"storage":{"state":"not_requested"},"url":{"state":"not_requested"}},"before_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"elapsed_ms":10,"error":null,"event_sequence_end":0,"event_sequence_start":1,"status":"completed","step_id":"open-settings","step_index":1}]},"before_scenario":{"browser":{"cleanup":"disconnected-external","mode":"connect","process_ownership":"external","product":"Chromium","version":"149"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"duration_ms":10,"events":{"dropped":0,"items":[],"retained":0},"limitations":[],"scenario":{"action_count":1,"allowed_origins":["https://app.example.test"],"secret_references":[],"start_origin":"https://app.example.test"},"schema_version":1,"steps":[{"action":"scenario_start","after_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"artifacts":{"accessibility":{"state":"not_requested"},"dom":{"state":"not_requested"},"history":{"state":"not_requested"},"screenshot":{"state":"not_requested"},"storage":{"state":"not_requested"},"url":{"state":"not_requested"}},"before_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"elapsed_ms":0,"error":null,"event_sequence_end":0,"event_sequence_start":1,"status":"completed","step_id":"scenario_start","step_index":0},{"action":"click","after_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"artifacts":{"accessibility":{"state":"not_requested"},"dom":{"state":"not_requested"},"history":{"state":"not_requested"},"screenshot":{"state":"not_requested"},"storage":{"state":"not_requested"},"url":{"state":"not_requested"}},"before_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"elapsed_ms":10,"error":null,"event_sequence_end":0,"event_sequence_start":1,"status":"completed","step_id":"open-settings","step_index":1}]},"max_changes":2000,"normalization":{"rules":[{"artifacts":["dom","accessibility"],"match":"build-123","replacement":"[BUILD_ID]","rule_id":"volatile-build-id"}]}}],"type":"object"},"kind":"browser-provider","name":"compare_web_captures","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"additionalProperties":false,"properties":{"alignment":{"additionalProperties":false,"properties":{"after_only":{"items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":129,"type":"array"},"aligned_steps":{"maximum":129,"minimum":0,"type":"integer"},"before_only":{"items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":129,"type":"array"},"failures":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["duplicate_before_step_id","duplicate_after_step_id","missing_before_step","missing_after_step","action_mismatch","capture_context_mismatch"],"type":"string"},"reason":{"maxLength":2048,"minLength":1,"type":"string"},"step_id":{"anyOf":[{"maxLength":64,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["code","step_id","reason"],"type":"object"},"maxItems":520,"type":"array"},"status":{"enum":["aligned","partial","failed"],"type":"string"}},"required":["status","aligned_steps","before_only","after_only","failures"],"type":"object"},"artifact_diffs":{"additionalProperties":false,"properties":{"omitted":{"maximum":1032,"minimum":0,"type":"integer"},"retained":{"maximum":1032,"minimum":0,"type":"integer"},"total":{"maximum":1032,"minimum":0,"type":"integer"}},"required":["total","retained","omitted"],"type":"object"},"comparison_kind":{"const":"browser_scenario","type":"string"},"limitations":{"items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"normalization":{"additionalProperties":false,"properties":{"built_in_rules":{"items":{"enum":["ignore_step_elapsed_ms","ignore_event_sequence","ignore_event_step_index","compare_screenshot_content_digest","compare_normalized_text_content"],"type":"string"},"maxItems":5,"minItems":5,"type":"array"},"rules":{"items":{"additionalProperties":false,"properties":{"artifacts":{"description":"Artifact families whose durable string fields use this rule.","items":{"enum":["action_state","dom","accessibility","url","history","storage","events"],"type":"string"},"maxItems":7,"minItems":1,"type":"array"},"match":{"description":"Exact public literal to replace; regular expressions are not used.","maxLength":4096,"minLength":1,"type":"string"},"replacement":{"description":"Recorded replacement text used in normalized comparison.","maxLength":4096,"type":"string"},"rule_id":{"description":"Stable rule identity; rules execute in rule_id order.","maxLength":64,"minLength":1,"type":"string"}},"required":["rule_id","artifacts","match","replacement"],"type":"object"},"maxItems":128,"type":"array"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["built_in_rules","rules","sha256"],"type":"object"},"overall_status":{"enum":["changed","unchanged","unknown"],"type":"string"},"schema_version":{"const":1,"type":"number"},"steps":{"items":{"additionalProperties":false,"properties":{"after_action":{"maxLength":64,"minLength":1,"type":"string"},"after_step_index":{"maximum":128,"minimum":0,"type":"integer"},"artifact_diffs":{"items":{"additionalProperties":false,"properties":{"after_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"after_state":{"enum":["captured","not_requested","missing","truncated"],"type":"string"},"artifact":{"enum":["action_state","screenshot","dom","accessibility","url","history","storage","events"],"type":"string"},"before_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"before_state":{"enum":["captured","not_requested","missing","truncated"],"type":"string"},"reason":{"anyOf":[{"maxLength":2048,"minLength":1,"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unknown"],"type":"string"}},"required":["artifact","status","before_state","after_state","before_sha256","after_sha256","reason"],"type":"object"},"maxItems":8,"type":"array"},"before_action":{"maxLength":64,"minLength":1,"type":"string"},"before_step_index":{"maximum":128,"minimum":0,"type":"integer"},"omitted_artifact_diffs":{"maximum":8,"minimum":0,"type":"integer"},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"step_id":{"maxLength":64,"minLength":1,"type":"string"}},"required":["step_id","before_step_index","after_step_index","before_action","after_action","status","artifact_diffs","omitted_artifact_diffs"],"type":"object"},"maxItems":129,"type":"array"}},"required":["schema_version","comparison_kind","overall_status","normalization","alignment","steps","artifact_diffs","limitations"],"type":"object"},{"additionalProperties":false,"properties":{"after_target":{"additionalProperties":false,"properties":{"target_id":{"type":"string"},"url":{"type":"string"}},"required":["target_id","url"],"type":"object"},"before_target":{"additionalProperties":false,"properties":{"target_id":{"type":"string"},"url":{"type":"string"}},"required":["target_id","url"],"type":"object"},"dimensions":{"additionalProperties":false,"properties":{"accessibility":{"additionalProperties":false,"default":{"changes":[],"omitted_changes":0,"reason":"Dimension was not recorded by this version 1 capture diff.","status":"unknown","total_changes":0},"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"dom_structure":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"metadata":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"network":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"resources":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"scripts":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"storage":{"additionalProperties":false,"default":{"changes":[],"omitted_changes":0,"reason":"Dimension was not recorded by this version 1 capture diff.","status":"unknown","total_changes":0},"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"webmcp":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"}},"required":["dom_structure","scripts","resources","network","metadata","webmcp","accessibility","storage"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"overall_status":{"enum":["changed","unchanged","unknown"],"type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","overall_status","before_target","after_target","dimensions","limitations"],"type":"object"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Compare Web Captures"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Capture the current visible viewport of one approved page as a bounded, content-addressed PNG artifact. Screenshot capture requires separate explicit approval and never scrolls, navigates, or evaluates page JavaScript.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"allowed_origins":["https://app.example.test"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","maximum_image_bytes":4194304,"screenshot_approved":true,"target_id":"TARGET_ID_FROM_LIST_BROWSER_TARGETS"}],"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"maximum_image_bytes":{"default":4194304,"description":"Bounded byte count for maximum image.","maximum":8388608,"minimum":1,"type":"integer"},"screenshot_approved":{"const":true,"description":"Explicit operator approval for screenshot.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["cdp_endpoint","allowed_origins","target_id","approved","screenshot_approved"],"type":"object"},"kind":"browser-provider","name":"capture_web_screenshot","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"bytes":{"maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"},"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"captured_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"completeness":{"additionalProperties":false,"properties":{"attach_limited_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"additionalProperties":false,"properties":{"console_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"items":{"additionalProperties":false,"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reason":{"enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"target":{"additionalProperties":false,"properties":{"origin":{"type":"string"},"target_id":{"type":"string"},"url":{"type":"string"}},"required":["target_id","url","origin"],"type":"object"},"viewport":{"additionalProperties":false,"properties":{"height":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"width":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["width","height"],"type":"object"}},"required":["schema_version","browser","target","captured_at","viewport","artifact","completeness","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Capture Web Screenshot"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Compare two self-verifying PNG screenshot artifacts with bounded local pixel metrics. Returns exact changed-pixel ratios and channel deltas without OCR or external services.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"after":{"bytes":70,"data_base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PzWvWQAAAABJRU5ErkJggg==","media_type":"image/png","sha256":"153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c","uri":"rea://web-screenshot/sha256/153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c"},"before":{"bytes":70,"data_base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PzWvWQAAAABJRU5ErkJggg==","media_type":"image/png","sha256":"153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c","uri":"rea://web-screenshot/sha256/153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c"},"channel_threshold":0,"maximum_pixels":16000000}],"properties":{"after":{"description":"The later or right-hand observation to compare.","properties":{"bytes":{"description":"Value for bytes.","maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"description":"Value for data base64.","maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","description":"Value for media type.","type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"},"before":{"description":"The earlier or left-hand observation to compare.","properties":{"bytes":{"description":"Value for bytes.","maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"description":"Value for data base64.","maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","description":"Value for media type.","type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"},"channel_threshold":{"default":0,"description":"Value for channel threshold.","maximum":255,"minimum":0,"type":"integer"},"maximum_pixels":{"default":16000000,"description":"Value for maximum pixels.","maximum":32000000,"minimum":1,"type":"integer"}},"required":["before","after"],"type":"object"},"kind":"browser-provider","name":"compare_web_screenshots","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"after":{"additionalProperties":false,"properties":{"height":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"width":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["width","height"],"type":"object"},"before":{"additionalProperties":false,"properties":{"height":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"width":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["width","height"],"type":"object"},"changed_pixels":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"changed_ratio":{"anyOf":[{"maximum":1,"minimum":0,"type":"number"},{"type":"null"}]},"channel_threshold":{"maximum":255,"minimum":0,"type":"integer"},"compared_pixels":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"maximum_channel_delta":{"anyOf":[{"maximum":255,"minimum":0,"type":"integer"},{"type":"null"}]},"mean_absolute_channel_delta":{"anyOf":[{"maximum":255,"minimum":0,"type":"number"},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"status":{"enum":["identical","different","dimension_mismatch"],"type":"string"}},"required":["schema_version","status","before","after","channel_threshold","compared_pixels","changed_pixels","changed_ratio","maximum_channel_delta","mean_absolute_channel_delta","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Compare Web Screenshots"},{"analysisOperation":null,"annotations":{"destructiveHint":true,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Run one approved, bounded browser scenario through Playwright. Launch mode owns and terminates a temporary browser profile; connect mode attaches to one exact loopback CDP target and disconnects without terminating the external browser. Only the fixed action vocabulary is accepted. Navigation, storage, requests, redirects, secrets, redaction, captures, and limits must be declared before execution. Returns step-indexed Evidence with screenshots, DOM, accessibility, URL/history/storage state, runtime events, explicit missing/truncated sections, and equality eligibility.","effects":{"accessesNetwork":true,"changesUiState":true,"idempotent":false,"launchesProcess":true,"mayDiscardData":true,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"actions":[{"action":"wait_for","locator":{"kind":"test_id","value":"application-ready"},"state":"visible","step_id":"ready"}],"allowed_origins":["https://app.example.test"],"approved":true,"browser":{"cleanup":"close-and-delete-profile","executable_path":"/opt/chromium/chrome","headless":true,"mode":"launch","user_data":"temporary-owned"},"capture":{"after_each_step":["screenshot","url","accessibility"],"at_end":["dom","history","storage"],"events":["console","page-errors","network","websockets"]},"environment":{"color_scheme":"light","locale":"en-US","reduced_motion":"reduce","service_workers":"block","timezone":"UTC","viewport":{"device_scale_factor":1,"height":720,"width":1280}},"limits":{"action_timeout_ms":5000,"max_accessibility_nodes":10000,"max_dom_nodes":10000,"max_duration_ms":60000,"max_events":2000,"max_frames":100,"max_popups":10,"max_screenshot_bytes":4194304,"max_screenshots":16,"max_storage_entries":256,"max_total_metadata_bytes":4194304,"max_websockets":100,"max_workers":20,"navigation_timeout_ms":10000},"redaction":{"header_names":["authorization","cookie","proxy-authorization","set-cookie"],"query_parameter_names":[],"secret_values":"replace-with-secret-reference"},"request_replay":{"mode":"disabled"},"schema_version":1,"secrets":[],"start_url":{"query":[],"url":"https://app.example.test/"},"storage":{"cookies":[],"local_storage":[],"session_storage":[]}}],"properties":{"actions":{"description":"Value for actions.","items":{"oneOf":[{"additionalProperties":false,"properties":{"action":{"const":"goto","description":"Value for action.","type":"string"},"destination":{"additionalProperties":false,"description":"Value for destination.","properties":{"query":{"default":[],"description":"Non-empty feature or text query to investigate.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"url":{"description":"Value for url.","maxLength":65536,"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"},"wait_until":{"description":"Value for wait until.","enum":["commit","domcontentloaded","load"],"type":"string"}},"required":["step_id","action","destination","wait_until"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"click","description":"Value for action.","type":"string"},"button":{"default":"left","description":"Value for button.","enum":["left","middle","right"],"type":"string"},"click_count":{"default":1,"description":"Value for click count.","maximum":3,"minimum":1,"type":"integer"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"required":["step_id","action","locator"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"fill","description":"Value for action.","type":"string"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["step_id","action","locator","value"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"press","description":"Value for action.","type":"string"},"key":{"description":"Value for key.","maxLength":64,"minLength":1,"type":"string"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"required":["step_id","action","locator","key"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"select_option","description":"Value for action.","type":"string"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["step_id","action","locator","value"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"description":"Value for action.","enum":["check","uncheck"],"type":"string"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"required":["step_id","action","locator"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"wait_for","description":"Value for action.","type":"string"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"state":{"description":"Value for state.","enum":["attached","detached","visible","hidden"],"type":"string"},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"required":["step_id","action","locator","state"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"wait_for_timeout","description":"Value for action.","type":"string"},"duration_ms":{"description":"Value for duration ms.","maximum":60000,"minimum":1,"type":"integer"},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["step_id","action","duration_ms"],"type":"object"}]},"maxItems":128,"minItems":1,"type":"array"},"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"browser":{"description":"Value for browser.","oneOf":[{"additionalProperties":false,"properties":{"cleanup":{"const":"close-and-delete-profile","description":"Value for cleanup.","type":"string"},"executable_path":{"description":"Local filesystem path for executable.","maxLength":4096,"minLength":1,"type":"string"},"headless":{"const":true,"description":"Value for headless.","type":"boolean"},"mode":{"const":"launch","description":"Operation mode that selects the requested behavior.","type":"string"},"user_data":{"const":"temporary-owned","description":"Value for user data.","type":"string"}},"required":["mode","executable_path","headless","user_data","cleanup"],"type":"object"},{"additionalProperties":false,"properties":{"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"cleanup":{"const":"disconnect-only","description":"Value for cleanup.","type":"string"},"mode":{"const":"connect","description":"Operation mode that selects the requested behavior.","type":"string"},"ownership":{"const":"external","description":"Value for ownership.","type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["mode","cdp_endpoint","target_id","ownership","cleanup"],"type":"object"}]},"capture":{"additionalProperties":false,"description":"Value for capture.","properties":{"after_each_step":{"description":"Value for after each step.","items":{"enum":["screenshot","dom","accessibility","url","history","storage"],"type":"string"},"maxItems":6,"type":"array"},"at_end":{"description":"Value for at end.","items":{"enum":["screenshot","dom","accessibility","url","history","storage"],"type":"string"},"maxItems":6,"type":"array"},"events":{"description":"Value for events.","items":{"enum":["console","page-errors","network","websockets","frames","workers","popups","downloads"],"type":"string"},"type":"array"}},"required":["after_each_step","at_end","events"],"type":"object"},"environment":{"additionalProperties":false,"description":"Value for environment.","properties":{"color_scheme":{"description":"Value for color scheme.","enum":["light","dark","no-preference"],"type":"string"},"locale":{"description":"Value for locale.","maxLength":64,"minLength":2,"pattern":"^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$","type":"string"},"reduced_motion":{"description":"Value for reduced motion.","enum":["reduce","no-preference"],"type":"string"},"service_workers":{"const":"block","description":"Value for service workers.","type":"string"},"timezone":{"description":"Value for timezone.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_+-]+(?:\\\\/[A-Za-z0-9_+-]+)*$","type":"string"},"viewport":{"additionalProperties":false,"description":"Value for viewport.","properties":{"device_scale_factor":{"default":1,"description":"Value for device scale factor.","maximum":4,"minimum":0.5,"type":"number"},"height":{"description":"Value for height.","maximum":4320,"minimum":240,"type":"integer"},"width":{"description":"Value for width.","maximum":7680,"minimum":320,"type":"integer"}},"required":["width","height"],"type":"object"}},"required":["viewport","locale","timezone","color_scheme","reduced_motion","service_workers"],"type":"object"},"limits":{"additionalProperties":false,"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"action_timeout_ms":{"description":"Value for action timeout ms.","maximum":60000,"minimum":1,"type":"integer"},"max_accessibility_nodes":{"description":"Maximum permitted accessibility nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_dom_nodes":{"description":"Maximum permitted dom nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_duration_ms":{"description":"Maximum permitted duration ms for this operation.","maximum":300000,"minimum":100,"type":"integer"},"max_events":{"description":"Maximum permitted events for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_frames":{"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_popups":{"description":"Maximum permitted popups for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_screenshot_bytes":{"description":"Maximum permitted screenshot bytes for this operation.","maximum":8388608,"minimum":1,"type":"integer"},"max_screenshots":{"description":"Maximum permitted screenshots for this operation.","maximum":256,"minimum":0,"type":"integer"},"max_storage_entries":{"description":"Maximum permitted storage entries for this operation.","maximum":512,"minimum":0,"type":"integer"},"max_total_metadata_bytes":{"description":"Maximum permitted total metadata bytes for this operation.","maximum":67108864,"minimum":1024,"type":"integer"},"max_websockets":{"description":"Maximum permitted websockets for this operation.","maximum":10000,"minimum":0,"type":"integer"},"max_workers":{"description":"Maximum permitted workers for this operation.","maximum":1000,"minimum":0,"type":"integer"},"navigation_timeout_ms":{"description":"Value for navigation timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"required":["max_duration_ms","action_timeout_ms","navigation_timeout_ms","max_events","max_frames","max_workers","max_popups","max_websockets","max_dom_nodes","max_accessibility_nodes","max_screenshots","max_screenshot_bytes","max_storage_entries","max_total_metadata_bytes"],"type":"object"},"redaction":{"additionalProperties":false,"description":"Value for redaction.","properties":{"header_names":{"description":"Value for header names.","items":{"maxLength":256,"minLength":1,"type":"string"},"maxItems":128,"type":"array"},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"minLength":1,"type":"string"},"maxItems":128,"type":"array"},"secret_values":{"const":"replace-with-secret-reference","description":"Value for secret values.","type":"string"}},"required":["secret_values"],"type":"object"},"request_replay":{"description":"Value for request replay.","oneOf":[{"additionalProperties":false,"properties":{"mode":{"const":"disabled","description":"Operation mode that selects the requested behavior.","type":"string"}},"required":["mode"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"const":"exact","description":"Operation mode that selects the requested behavior.","type":"string"},"routes":{"description":"Value for routes.","items":{"additionalProperties":false,"properties":{"method":{"description":"Value for method.","enum":["GET","HEAD","POST","PUT","PATCH","DELETE","OPTIONS"],"type":"string"},"request":{"additionalProperties":false,"description":"Value for request.","properties":{"query":{"default":[],"description":"Non-empty feature or text query to investigate.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"url":{"description":"Value for url.","maxLength":65536,"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"response":{"description":"Value for response.","oneOf":[{"additionalProperties":false,"properties":{"body":{"description":"Value for body.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]},"headers":{"description":"Value for headers.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+\\\\-.^_`|~0-9A-Za-z]+$","type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"kind":{"const":"response","description":"Value for kind.","type":"string"},"status":{"description":"Current lifecycle or verification status.","maximum":599,"minimum":100,"type":"integer"}},"required":["kind","status"],"type":"object"},{"additionalProperties":false,"properties":{"destination":{"additionalProperties":false,"description":"Value for destination.","properties":{"query":{"default":[],"description":"Non-empty feature or text query to investigate.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"url":{"description":"Value for url.","maxLength":65536,"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"kind":{"const":"redirect","description":"Value for kind.","type":"string"},"status":{"anyOf":[{"const":301,"type":"number"},{"const":302,"type":"number"},{"const":303,"type":"number"},{"const":307,"type":"number"},{"const":308,"type":"number"}],"description":"Current lifecycle or verification status."}},"required":["kind","status","destination"],"type":"object"}]},"route_id":{"description":"Value for route id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["route_id","method","request","response"],"type":"object"},"maxItems":256,"minItems":1,"type":"array"},"unmatched":{"description":"Value for unmatched.","enum":["abort","passthrough-approved-origins"],"type":"string"}},"required":["mode","unmatched","routes"],"type":"object"}]},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"secrets":{"default":[],"description":"Value for secrets.","items":{"additionalProperties":false,"properties":{"environment_variable":{"description":"Value for environment variable.","pattern":"^[A-Z_][A-Z0-9_]{0,127}$","type":"string"},"purpose":{"description":"Value for purpose.","enum":["input","storage","request-replay"],"type":"string"},"redaction":{"const":"replace-with-secret-reference","description":"Value for redaction.","type":"string"},"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["secret_id","environment_variable","purpose","redaction"],"type":"object"},"maxItems":64,"type":"array"},"start_url":{"additionalProperties":false,"description":"Value for start url.","properties":{"query":{"default":[],"description":"Non-empty feature or text query to investigate.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"url":{"description":"Value for url.","maxLength":65536,"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"storage":{"additionalProperties":false,"description":"Value for storage.","properties":{"cookies":{"description":"Value for cookies.","items":{"additionalProperties":false,"properties":{"destination":{"additionalProperties":false,"description":"Value for destination.","properties":{"query":{"default":[],"description":"Non-empty feature or text query to investigate.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"url":{"description":"Value for url.","maxLength":65536,"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value","destination","http_only","secure","same_site"],"type":"object"},"maxItems":128,"type":"array"},"local_storage":{"description":"Value for local storage.","items":{"additionalProperties":false,"properties":{"entries":{"description":"Value for entries.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":128,"type":"array"},"origin":{"description":"Value for origin.","maxLength":2048,"minLength":1,"type":"string"}},"required":["origin","entries"],"type":"object"},"maxItems":32,"type":"array"},"session_storage":{"description":"Value for session storage.","items":{"additionalProperties":false,"properties":{"entries":{"description":"Value for entries.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":128,"type":"array"},"origin":{"description":"Value for origin.","maxLength":2048,"minLength":1,"type":"string"}},"required":["origin","entries"],"type":"object"},"maxItems":32,"type":"array"}},"type":"object"}},"required":["schema_version","browser","start_url","allowed_origins","environment","actions","storage","request_replay","redaction","capture","limits","approved"],"type":"object"},"kind":"browser-provider","name":"capture_browser_scenario","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"cleanup":{"enum":["terminated-owned-process","disconnected-external"],"type":"string"},"mode":{"enum":["launch","connect"],"type":"string"},"process_ownership":{"enum":["provider-owned","external"],"type":"string"},"product":{"maxLength":1024,"minLength":1,"type":"string"},"version":{"maxLength":256,"minLength":1,"type":"string"}},"required":["mode","process_ownership","cleanup","product","version"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"equality_eligible":{"type":"boolean"},"missing_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"enum":["complete","incomplete","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},"duration_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"events":{"additionalProperties":false,"properties":{"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"console","type":"string"},"level":{"maxLength":64,"minLength":1,"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"maxLength":65536,"type":"string"},"url":{"anyOf":[{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}]}},"required":["sequence","step_index","kind","level","text","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"page-error","type":"string"},"message":{"maxLength":65536,"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"stack":{"anyOf":[{"maxLength":262144,"type":"string"},{"type":"null"}]},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","step_index","kind","message","stack"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]},"header_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"enum":["request","response","request-failed"],"type":"string"},"method":{"maxLength":32,"minLength":1,"type":"string"},"resource_type":{"maxLength":64,"minLength":1,"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"anyOf":[{"maximum":599,"minimum":100,"type":"integer"},{"type":"null"}]},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","method","url","resource_type","status","header_names","failure"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"enum":["websocket-opened","websocket-closed"],"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"enum":["websocket-frame-sent","websocket-frame-received"],"type":"string"},"payload_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_text":{"anyOf":[{"maxLength":65536,"type":"string"},{"type":"null"}]},"payload_type":{"enum":["text","binary"],"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"},"url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url","payload_type","payload_bytes","payload_text","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"enum":["frame-attached","frame-detached","frame-navigated","worker-created","worker-closed","popup-opened","popup-closed"],"type":"string"},"name":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}]}},"required":["sequence","step_index","kind","url","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"download-cancelled","type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"suggested_filename":{"maxLength":1024,"type":"string"},"url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","suggested_filename","url"],"type":"object"}]},"maxItems":100000,"type":"array"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["retained","dropped","items"],"type":"object"},"limitations":{"items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"scenario":{"additionalProperties":false,"properties":{"action_count":{"maximum":128,"minimum":1,"type":"integer"},"allowed_origins":{"items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"secret_references":{"items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"start_origin":{"maxLength":2048,"minLength":1,"type":"string"}},"required":["start_origin","allowed_origins","action_count","secret_references"],"type":"object"},"schema_version":{"const":1,"type":"number"},"steps":{"items":{"additionalProperties":false,"properties":{"action":{"maxLength":64,"minLength":1,"type":"string"},"after_url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"artifacts":{"additionalProperties":false,"properties":{"accessibility":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"bytes":{"maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"dom":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"bytes":{"maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"history":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"current_url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"navigation_entries":{"items":{"additionalProperties":false,"properties":{"name":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"type":{"enum":["navigate","reload","back_forward","prerender","unknown"],"type":"string"}},"required":["type","name"],"type":"object"},"maxItems":256,"type":"array"}},"required":["length","current_url","navigation_entries"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"screenshot":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"bytes":{"maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"storage":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"cookies":{"items":{"additionalProperties":false,"properties":{"domain":{"maxLength":2048,"type":"string"},"http_only":{"type":"boolean"},"name":{"maxLength":1024,"type":"string"},"path":{"maxLength":4096,"type":"string"},"same_site":{"enum":["Strict","Lax","None"],"type":"string"},"secure":{"type":"boolean"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"value_state":{"enum":["hashed","redacted-secret"],"type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"},"maxItems":512,"type":"array"},"local_storage":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":1024,"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"value_state":{"enum":["hashed","redacted-secret"],"type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},"maxItems":512,"type":"array"},"session_storage":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":1024,"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"value_state":{"enum":["hashed","redacted-secret"],"type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},"maxItems":512,"type":"array"}},"required":["cookies","local_storage","session_storage"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"url":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]}},"required":["screenshot","dom","accessibility","url","history","storage"],"type":"object"},"before_url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"equality_eligible":{"type":"boolean"},"missing_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"enum":["complete","incomplete","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}]},"event_sequence_end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"event_sequence_start":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"enum":["completed","failed","cancelled"],"type":"string"},"step_id":{"maxLength":64,"minLength":1,"type":"string"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["step_index","step_id","action","status","elapsed_ms","before_url","after_url","error","event_sequence_start","event_sequence_end","artifacts","completeness"],"type":"object"},"maxItems":129,"minItems":1,"type":"array"}},"required":["schema_version","browser","scenario","duration_ms","steps","events","completeness","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Capture Browser Scenario"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"List Electron file:// page targets from an approved user-owned loopback CDP endpoint. Every path is canonicalized and must remain contained by an approved filesystem root, including after symlink resolution.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"allowed_file_roots":["/Applications/Example.app/Contents/Resources"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9223","limit":100,"offset":0}],"properties":{"allowed_file_roots":{"description":"Approved canonical filesystem allowed file roots.","items":{"maxLength":16384,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":200,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["cdp_endpoint","allowed_file_roots","approved"],"type":"object"},"kind":"electron-provider","name":"list_electron_targets","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"excluded":{"additionalProperties":false,"properties":{"non_page":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outside_root":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unsupported_url":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["outside_root","unsupported_url","non_page"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"targets":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"file_path":{"type":"string"},"target_id":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"}},"required":["target_id","type","title","file_path","attached"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["schema_version","browser","targets","excluded","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Electron Targets"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Passively inspect one approved Electron file page through CDP. Returns root-confined frames, DOM structure, resource paths, and scripts without evaluating renderer JavaScript or invoking Electron APIs; script contents require separate approval.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"properties":{"allowed_file_roots":{"description":"Approved canonical filesystem allowed file roots.","items":{"maxLength":16384,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"include_script_sources":{"const":false,"default":false,"description":"Whether to include script sources in the result.","type":"boolean"},"limits":{"default":{"max_dom_nodes":2000,"max_frames":200,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":500,"max_total_script_source_bytes":4194304,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":500,"description":"Maximum permitted scripts for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":100,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":false,"default":false,"description":"Explicit operator approval for source capture.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["cdp_endpoint","allowed_file_roots","approved","target_id"],"type":"object"},{"properties":{"allowed_file_roots":{"description":"Approved canonical filesystem allowed file roots.","items":{"maxLength":16384,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"include_script_sources":{"const":true,"description":"Whether to include script sources in the result.","type":"boolean"},"limits":{"default":{"max_dom_nodes":2000,"max_frames":200,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":500,"max_total_script_source_bytes":4194304,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":500,"description":"Maximum permitted scripts for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":100,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":true,"description":"Explicit operator approval for source capture.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["cdp_endpoint","allowed_file_roots","approved","target_id","include_script_sources","source_capture_approved"],"type":"object"}],"examples":[{"allowed_file_roots":["/Applications/Example.app/Contents/Resources"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9223","include_script_sources":false,"limits":{"max_dom_nodes":2000,"max_frames":200,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":500,"max_total_script_source_bytes":4194304,"max_workers":500},"observation_ms":100,"source_capture_approved":false,"target_id":"TARGET_ID_FROM_LIST_ELECTRON_TARGETS"}],"type":"object"},"kind":"electron-provider","name":"inspect_electron_page","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"capture_window":{"additionalProperties":false,"properties":{"ended_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"observation_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"started_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"}},"required":["started_at","ended_at","observation_ms"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"attach_limited_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"additionalProperties":false,"properties":{"console_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"items":{"additionalProperties":false,"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reason":{"enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"dom":{"additionalProperties":false,"properties":{"nodes":{"items":{"additionalProperties":false,"properties":{"attribute_names":{"items":{"type":"string"},"type":"array"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_name":{"type":"string"},"node_type":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_value_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parent_index":{"maximum":9007199254740991,"minimum":-1,"type":"integer"}},"required":["index","parent_index","node_type","node_name","node_value_length","attribute_names"],"type":"object"},"type":"array"},"total_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","nodes"],"type":"object"},"frames":{"items":{"additionalProperties":false,"properties":{"file_path":{"type":"string"},"frame_id":{"type":"string"},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["frame_id","parent_frame_id","file_path"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"resources":{"items":{"additionalProperties":false,"properties":{"content_size":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}]},"file_path":{"type":"string"},"mime_type":{"type":"string"},"resource_key":{"pattern":"^electron_resource_[a-f0-9]{64}$","type":"string"},"type":{"type":"string"}},"required":["resource_key","file_path","type","mime_type","content_size"],"type":"object"},"type":"array"},"schema_version":{"const":1,"type":"number"},"scripts":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"cdp_hash":{"type":"string"},"file_path":{"type":"string"},"frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"is_module":{"type":"boolean"},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"script_key":{"pattern":"^electron_script_[a-f0-9]{64}$","type":"string"},"source":{"oneOf":[{"additionalProperties":false,"properties":{"included":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["included","reason"],"type":"object"},{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","type":"string"},"media_type":{"maxLength":256,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},"included":{"const":true,"type":"boolean"}},"required":["included","artifact"],"type":"object"}]}},"required":["script_key","frame_id","file_path","cdp_hash","length","is_module","language","source"],"type":"object"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"},"target":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"file_path":{"type":"string"},"target_id":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"}},"required":["target_id","type","title","file_path","attached"],"type":"object"},"workers":{"default":[],"items":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"file_path":{"type":"string"},"opener_target_id":{"anyOf":[{"maxLength":256,"minLength":1,"type":"string"},{"type":"null"}]},"parent_frame_id":{"anyOf":[{"maxLength":256,"minLength":1,"type":"string"},{"type":"null"}]},"target_id":{"maxLength":256,"minLength":1,"type":"string"},"type":{"maxLength":100,"minLength":1,"type":"string"}},"required":["target_id","type","file_path","attached","opener_target_id","parent_frame_id"],"type":"object"},"type":"array"}},"required":["schema_version","browser","target","capture_window","completeness","frames","dom","scripts","resources","workers","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Electron Page"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Statically reconstruct one approved local ASAR or extracted JavaScript application without executing it. The default summary returns architecture/security counts, top evidence-backed findings, unknowns, and paged graph resource URIs; request detail=full only when the complete graph must be returned immediately. Identical inputs are deterministic, so do not repeat the call or reread full Evidence without a specific missing detail.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"approved":true,"detail":"summary","format":"auto","input_path":"/Applications/Example.app/Contents/Resources/app.asar","source_map_read_approved":false}],"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"detail":{"default":"summary","description":"summary returns bounded findings and paged graph resource URIs; full returns the complete graph only when explicitly required","enum":["summary","full"],"type":"string"},"format":{"default":"auto","description":"Declared input artifact format.","enum":["auto","asar","directory"],"type":"string"},"input_path":{"description":"Local filesystem path for input.","maxLength":16384,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_artifact_entry_bytes":134217728,"max_ast_nodes":2000000,"max_compression_ratio":1000,"max_depth":64,"max_entries":8000,"max_findings":8000,"max_modules":20000,"max_parse_milliseconds":30000,"max_path_bytes":4096,"max_source_map_sources":5000,"max_text_file_bytes":8388608,"max_text_files":5000,"max_total_artifact_bytes":536870912,"max_total_text_bytes":134217728},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_artifact_entry_bytes":{"default":134217728,"description":"Maximum permitted artifact entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_ast_nodes":{"default":2000000,"description":"Maximum permitted ast nodes for this operation.","maximum":20000000,"minimum":1,"type":"integer"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":64,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_entries":{"default":8000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_findings":{"default":8000,"description":"Maximum permitted findings for this operation.","maximum":200000,"minimum":1,"type":"integer"},"max_modules":{"default":20000,"description":"Maximum permitted modules for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_parse_milliseconds":{"default":30000,"description":"Maximum permitted parse milliseconds for this operation.","maximum":300000,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_source_map_sources":{"default":5000,"description":"Maximum permitted source map sources for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_text_file_bytes":{"default":8388608,"description":"Maximum permitted text file bytes for this operation.","maximum":67108864,"minimum":1,"type":"integer"},"max_text_files":{"default":5000,"description":"Maximum permitted text files for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_total_artifact_bytes":{"default":536870912,"description":"Maximum permitted total artifact bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_total_text_bytes":{"default":134217728,"description":"Maximum permitted total text bytes for this operation.","maximum":536870912,"minimum":1,"type":"integer"}},"type":"object"},"source_map_read_approved":{"default":false,"description":"Explicit operator approval for source map read.","type":"boolean"}},"required":["input_path","approved"],"type":"object"},"kind":"electron-provider","name":"analyze_javascript_application","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"format":{"enum":["asar","directory"],"type":"string"},"graph":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"edge_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"node_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_kinds":{"items":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"}},"required":["kind","count"],"type":"object"},"type":"array"},"pages":{"additionalProperties":false,"properties":{"edges":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/.*","type":"string"},"nodes":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/.*","type":"string"},"page_limit":{"maximum":500,"minimum":1,"type":"integer"}},"required":["nodes","edges","page_limit"],"type":"object"},"roots":{"additionalProperties":false,"properties":{"items":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"}},"required":["items","total","truncated"],"type":"object"},"top_findings":{"items":{"additionalProperties":false,"properties":{"authority":{"type":"string"},"confidence":{"type":"string"},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"$ref":"#/$defs/__schema0"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"state":{"type":"string"}},"required":["node_id","kind","label","authority","state","confidence","location"],"type":"object"},"type":"array"}},"required":["graph_id","node_count","edge_count","roots","node_kinds","top_findings","coverage","limitations","pages"],"type":"object"},"input_path":{"maxLength":16384,"minLength":1,"type":"string"},"inventory_graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"inventory_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"},"statistics":{"additionalProperties":false,"properties":{"findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"invalid_utf8_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limit_omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nested_asar_containers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parse_failures":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parsed_javascript_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"policy_filtered_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relevant_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_bytes_read":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_files_selected":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated_scopes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"visited_ast_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["relevant_files","nested_asar_containers","text_files_selected","text_bytes_read","omitted_text_files","limit_omitted_text_files","policy_filtered_text_files","invalid_utf8_files","parsed_javascript_files","visited_ast_nodes","findings","modules","parse_failures","truncated_scopes"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"browser_windows":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"context_bridge_apis":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"explicit_web_preferences":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exposed_api_members":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ipc":{"additionalProperties":false,"properties":{"ambiguous_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"dynamic_channel_operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"literal_channels":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"main_handlers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paired_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_listeners":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unpaired_literal_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["operations","literal_channels","dynamic_channel_operations","renderer_transmissions","renderer_listeners","main_handlers","paired_renderer_transmissions","ambiguous_renderer_transmissions","unpaired_literal_renderer_transmissions"],"type":"object"},"native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"preload_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_utility_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sender_validation_observations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"utility_processes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["browser_windows","explicit_web_preferences","preload_entrypoints","context_bridge_apis","exposed_api_members","ipc","sender_validation_observations","utility_processes","resolved_utility_entrypoints","native_addon_bindings","resolved_native_addon_bindings"],"type":"object"},"unknowns":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"}},"required":["schema_version","input_path","format","root_artifact_sha256","inventory_manifest_id","inventory_graph_sha256","summary","statistics","limitations","unknowns","graph"],"type":"object"},{"additionalProperties":false,"properties":{"format":{"enum":["asar","directory"],"type":"string"},"graph":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"edge_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"node_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_kinds":{"items":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"}},"required":["kind","count"],"type":"object"},"type":"array"},"pages":{"additionalProperties":false,"properties":{"edges":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/.*","type":"string"},"nodes":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/.*","type":"string"},"page_limit":{"maximum":500,"minimum":1,"type":"integer"}},"required":["nodes","edges","page_limit"],"type":"object"},"roots":{"additionalProperties":false,"properties":{"items":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"}},"required":["items","total","truncated"],"type":"object"},"top_findings":{"items":{"additionalProperties":false,"properties":{"authority":{"type":"string"},"confidence":{"type":"string"},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"$ref":"#/$defs/__schema0"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"state":{"type":"string"}},"required":["node_id","kind","label","authority","state","confidence","location"],"type":"object"},"type":"array"}},"required":["graph_id","node_count","edge_count","roots","node_kinds","top_findings","coverage","limitations","pages"],"type":"object"},"input_path":{"maxLength":16384,"minLength":1,"type":"string"},"inventory_graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"inventory_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":2,"type":"number"},"semantic_graph":{"additionalProperties":false,"properties":{"coverage":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"fingerprints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_id":{"pattern":"^jsrg_[a-f0-9]{64}$","type":"string"},"nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"query_tool":{"const":"trace_javascript_semantics","type":"string"},"relations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_frontiers":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["graph_id","nodes","relations","unknown_frontiers","fingerprints","coverage","query_tool"],"type":"object"},"statistics":{"additionalProperties":false,"properties":{"findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"invalid_utf8_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limit_omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nested_asar_containers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parse_failures":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parsed_javascript_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"policy_filtered_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relevant_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_bytes_read":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_files_selected":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated_scopes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"visited_ast_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["relevant_files","nested_asar_containers","text_files_selected","text_bytes_read","omitted_text_files","limit_omitted_text_files","policy_filtered_text_files","invalid_utf8_files","parsed_javascript_files","visited_ast_nodes","findings","modules","parse_failures","truncated_scopes"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"browser_windows":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"context_bridge_apis":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"explicit_web_preferences":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exposed_api_members":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ipc":{"additionalProperties":false,"properties":{"ambiguous_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"dynamic_channel_operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"literal_channels":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"main_handlers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paired_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_listeners":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unpaired_literal_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["operations","literal_channels","dynamic_channel_operations","renderer_transmissions","renderer_listeners","main_handlers","paired_renderer_transmissions","ambiguous_renderer_transmissions","unpaired_literal_renderer_transmissions"],"type":"object"},"native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"preload_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_utility_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sender_validation_observations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"utility_processes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["browser_windows","explicit_web_preferences","preload_entrypoints","context_bridge_apis","exposed_api_members","ipc","sender_validation_observations","utility_processes","resolved_utility_entrypoints","native_addon_bindings","resolved_native_addon_bindings"],"type":"object"},"unknowns":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"}},"required":["schema_version","input_path","format","root_artifact_sha256","inventory_manifest_id","inventory_graph_sha256","summary","statistics","limitations","unknowns","graph","semantic_graph"],"type":"object"}]},{"oneOf":[{"additionalProperties":false,"properties":{"format":{"enum":["asar","directory"],"type":"string"},"graph":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},"input_path":{"maxLength":16384,"minLength":1,"type":"string"},"inventory_graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"inventory_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"},"statistics":{"additionalProperties":false,"properties":{"findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"invalid_utf8_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limit_omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nested_asar_containers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parse_failures":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parsed_javascript_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"policy_filtered_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relevant_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_bytes_read":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_files_selected":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated_scopes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"visited_ast_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["relevant_files","nested_asar_containers","text_files_selected","text_bytes_read","omitted_text_files","limit_omitted_text_files","policy_filtered_text_files","invalid_utf8_files","parsed_javascript_files","visited_ast_nodes","findings","modules","parse_failures","truncated_scopes"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"browser_windows":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"context_bridge_apis":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"explicit_web_preferences":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exposed_api_members":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ipc":{"additionalProperties":false,"properties":{"ambiguous_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"dynamic_channel_operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"literal_channels":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"main_handlers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paired_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_listeners":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unpaired_literal_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["operations","literal_channels","dynamic_channel_operations","renderer_transmissions","renderer_listeners","main_handlers","paired_renderer_transmissions","ambiguous_renderer_transmissions","unpaired_literal_renderer_transmissions"],"type":"object"},"native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"preload_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_utility_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sender_validation_observations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"utility_processes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["browser_windows","explicit_web_preferences","preload_entrypoints","context_bridge_apis","exposed_api_members","ipc","sender_validation_observations","utility_processes","resolved_utility_entrypoints","native_addon_bindings","resolved_native_addon_bindings"],"type":"object"}},"required":["schema_version","input_path","format","root_artifact_sha256","inventory_manifest_id","inventory_graph_sha256","graph","summary","statistics","limitations"],"type":"object"},{"additionalProperties":false,"properties":{"format":{"enum":["asar","directory"],"type":"string"},"graph":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},"input_path":{"maxLength":16384,"minLength":1,"type":"string"},"inventory_graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"inventory_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":2,"type":"number"},"semantic_graph":{"additionalProperties":false,"properties":{"application_graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"families":{"items":{"additionalProperties":false,"properties":{"family":{"enum":["boundary","call-flow","child-process","closure","configuration","data-flow","event","object-flow","promise-ownership","request","resource-lifecycle","timer"],"type":"string"},"omitted_relations":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"retained_relations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete","partial","unknown","unsupported"],"type":"string"},"unknown_ids":{"items":{"pattern":"^jsrg_unknown_[a-f0-9]{64}$","type":"string"},"maxItems":100000,"type":"array"}},"required":["family","status","retained_relations","omitted_relations","unknown_ids"],"type":"object"},"maxItems":12,"minItems":12,"type":"array"},"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_nodes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"omitted_relations":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_nodes","omitted_relations","limits","families"],"type":"object"},"fingerprints":{"items":{"additionalProperties":false,"properties":{"algorithm":{"const":"rea.javascript-semantic-function/v1","type":"string"},"components":{"additionalProperties":false,"properties":{"control_flow_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"effects":{"items":{"enum":["async","child-process","event","network","promise","resource","timer"],"type":"string"},"maxItems":7,"type":"array"},"literal_set_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"normalized_ast_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameter_arity":{"maximum":10000,"minimum":0,"type":"integer"},"relation_shape_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["parameter_arity","normalized_ast_sha256","control_flow_sha256","relation_shape_sha256","literal_set_sha256","effects"],"type":"object"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"fingerprint_id":{"pattern":"^jsrg_fingerprint_[a-f0-9]{64}$","type":"string"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"function_node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"status":{"enum":["complete","partial","unavailable"],"type":"string"}},"required":["function_node_id","algorithm","status","components","limitations","evidence","fingerprint_id","fingerprint_sha256"],"type":"object"},"maxItems":20000,"type":"array"},"graph_id":{"pattern":"^jsrg_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"application_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"function_node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"identity":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"role_key":{"maxLength":1024,"minLength":1,"type":"string"},"source_range":{"anyOf":[{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["start","end"],"type":"object"},{"type":"null"}]}},"required":["artifact_sha256","module_path","source_range","role_key"],"type":"object"},"kind":{"enum":["module","function","parameter","binding","expression","literal","property-slot","call-site","return-site","closure-capture","promise","task","event","listener","timer","child-process","stdio","signal","config-source","request","response","boundary","resource","unknown-frontier"],"type":"string"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["kind","identity","function_node_id","application_node_ids","label","properties","evidence","node_id","identifier_strategy"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"relations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"relation_id":{"pattern":"^jsrg_relation_[a-f0-9]{64}$","type":"string"},"resolution":{"enum":["resolved","candidate"],"type":"string"},"source_node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","resolution","properties","evidence","relation_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"root_node_ids":{"items":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptSemanticRelationGraph","type":"string"},"schema_version":{"const":1,"type":"number"},"unknowns":{"items":{"additionalProperties":false,"properties":{"candidate_node_ids":{"items":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"family":{"enum":["boundary","call-flow","child-process","closure","configuration","data-flow","event","object-flow","promise-ownership","request","resource-lifecycle","timer"],"type":"string"},"node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"reason":{"enum":["ambiguous-target","bound-reached","dynamic-call","dynamic-property","eval-or-generated-code","incomplete-module","missing-source","unsupported-syntax"],"type":"string"},"relation_kinds":{"items":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"maxItems":45,"minItems":1,"type":"array"},"unknown_id":{"pattern":"^jsrg_unknown_[a-f0-9]{64}$","type":"string"}},"required":["node_id","family","relation_kinds","reason","detail","candidate_node_ids","evidence","unknown_id"],"type":"object"},"maxItems":100000,"type":"array"}},"required":["schema","schema_version","root_artifact_sha256","application_graph_id","root_node_ids","nodes","relations","fingerprints","unknowns","coverage","limitations","graph_id"],"type":"object"},"statistics":{"additionalProperties":false,"properties":{"findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"invalid_utf8_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limit_omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nested_asar_containers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parse_failures":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parsed_javascript_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"policy_filtered_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relevant_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_bytes_read":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_files_selected":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated_scopes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"visited_ast_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["relevant_files","nested_asar_containers","text_files_selected","text_bytes_read","omitted_text_files","limit_omitted_text_files","policy_filtered_text_files","invalid_utf8_files","parsed_javascript_files","visited_ast_nodes","findings","modules","parse_failures","truncated_scopes"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"browser_windows":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"context_bridge_apis":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"explicit_web_preferences":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exposed_api_members":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ipc":{"additionalProperties":false,"properties":{"ambiguous_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"dynamic_channel_operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"literal_channels":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"main_handlers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paired_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_listeners":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unpaired_literal_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["operations","literal_channels","dynamic_channel_operations","renderer_transmissions","renderer_listeners","main_handlers","paired_renderer_transmissions","ambiguous_renderer_transmissions","unpaired_literal_renderer_transmissions"],"type":"object"},"native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"preload_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_utility_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sender_validation_observations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"utility_processes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["browser_windows","explicit_web_preferences","preload_entrypoints","context_bridge_apis","exposed_api_members","ipc","sender_validation_observations","utility_processes","resolved_utility_entrypoints","native_addon_bindings","resolved_native_addon_bindings"],"type":"object"}},"required":["schema_version","input_path","format","root_artifact_sha256","inventory_manifest_id","inventory_graph_sha256","graph","summary","statistics","limitations","semantic_graph"],"type":"object"}]}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Analyze Javascript Application"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Reconcile verified static JavaScript application graphs with existing passive web/Electron CDP, passive V8 Inspector, or provider-owned active Electron Evidence. Active Electron captures contribute an explicitly partial target-only runtime record; they never invent renderer scripts, frames, workers, or execution claims. Exact captured-source digests take priority over caller-declared file/URL mappings; target, frame, script, and worker ambiguity remains explicit, and source-map authority stays separate.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"runtime_observations":[{"authority":"external-service","confidence":"observed","environment":null,"evidence_id":"ev_e9ffe953ecde3cee6f8b1e2e2fc8be64bf58d17b3c680d1230587294f6b02c3a","evidence_links":[],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"browser":{"js_version":"1","product":"Electron/example","protocol_version":"1.3","revision":"example","user_agent":"Electron example"},"capture_window":{"ended_at":"2026-07-15T00:00:00.100Z","observation_ms":100,"started_at":"2026-07-15T00:00:00.000Z"},"completeness":{"attach_limited_sections":[],"conditions":["complete_within_window"],"dropped_events":{"console_events":0,"network_requests":0,"scripts":0,"timeline_events":0,"total":0,"webmcp_tools":0,"websocket_connections":0,"websocket_frames":0},"excluded":[],"policy_filtered_sections":[],"status":"complete_within_window","truncated_sections":[],"unavailable_sections":[]},"dom":{"nodes":[],"total_nodes":0},"frames":[],"limitations":["Example passive capture."],"resources":[],"schema_version":1,"scripts":{"items":[{"cdp_hash":"example","file_path":"/Applications/Example.app/Contents/Resources/app/renderer.js","frame_id":null,"is_module":true,"language":"JavaScript","length":29,"script_key":"electron_script_4444444444444444444444444444444444444444444444444444444444444444","source":{"artifact":{"bytes":29,"charset":"utf-8","media_type":"text/javascript","sha256":"c4c0d760a4c84f0e182de99f6ef89ef10831f8170e486c4d4bd934924151ba64","text":"export const example = true;\\n","uri":"rea://web-content/sha256/c4c0d760a4c84f0e182de99f6ef89ef10831f8170e486c4d4bd934924151ba64"},"included":true}}],"total":1},"target":{"attached":false,"file_path":"/Applications/Example.app/Contents/Resources/app/index.html","target_id":"example-target","title":"Example","type":"page"},"workers":[]},"operation":"inspect_electron_page","parameters":{"allowed_file_roots":["/Applications/Example.app/Contents/Resources/app"],"cdp_endpoint":"http://127.0.0.1:9223","include_script_sources":true,"source_capture_approved":true,"target_id":"example-target"},"predicate_type":"rea.electron-page-inspection/v1","provider":{"id":"rea-cdp-electron","name":"REA Electron file-page CDP observation provider","version":"1"},"raw_result":null,"schema_version":2,"subject":null}],"static_layers":[{"analysis":{"authority":"shipped-artifact","confidence":"derived","environment":null,"evidence_id":"ev_9f1239eec535ee47ca0af92a544b16a3b4be7ce7478e0a7a6b6201b91cc39d5c","evidence_links":[],"limitations":[],"locations":[],"normalized_result":{"format":"directory","graph":{"coverage":{"limits":[],"omitted_count":0,"status":"complete","truncated":false},"edges":[],"graph_id":"jag_361585714eb0138287533474fede3727b19167348e3843c577f82b68337c7234","limitations":[],"nodes":[{"identity":{"sha256":"c4c0d760a4c84f0e182de99f6ef89ef10831f8170e486c4d4bd934924151ba64","stability":"global-exact","strategy":"content-digest"},"kind":"javascript-asset","node_id":"jag_node_3c82da5492d90eb5b0bee41c1a994d88b7ba98c0b4955270d70e57a76e224c2e","observations":[{"evidence":{"artifact":{"artifact_id":"art_c4c0d760a4c84f0e182de99f6ef89ef10831f8170e486c4d4bd934924151ba64","available":true,"sha256":"c4c0d760a4c84f0e182de99f6ef89ef10831f8170e486c4d4bd934924151ba64"},"authority":"artifact-bytes","confidence":"exact","coverage":{"limits":[],"omitted_count":0,"status":"complete","truncated":false},"evidence_ids":[],"extractor":{"executable_sha256":null,"name":"rea-javascript-application","operation":"inventory-relevant-file","version":"1"},"limitations":[],"location":{"available":true,"value":{"kind":"artifact-path","path":"renderer.js"}},"state":"observed"},"identifier_strategy":{"stability":"observation-exact","strategy":"semantic-content-sha256"},"label":"renderer.js","observation_id":"jag_observation_20b4d076ce370db14ae2b477915624c62e0c4a0c9e56803a2c5cb4fa60c16230","properties":{"bytes":29,"path":"renderer.js"}}]}],"root_node_ids":["jag_node_3c82da5492d90eb5b0bee41c1a994d88b7ba98c0b4955270d70e57a76e224c2e"],"schema":"JavaScriptApplicationGraph","schema_version":1},"input_path":"/Applications/Example.app/Contents/Resources/app","inventory_graph_sha256":"3333333333333333333333333333333333333333333333333333333333333333","inventory_manifest_id":"agm_2222222222222222222222222222222222222222222222222222222222222222","limitations":[],"root_artifact_sha256":"1111111111111111111111111111111111111111111111111111111111111111","schema_version":1,"statistics":{"findings":0,"invalid_utf8_files":0,"limit_omitted_text_files":0,"modules":0,"nested_asar_containers":0,"omitted_text_files":0,"parse_failures":0,"parsed_javascript_files":1,"policy_filtered_text_files":0,"relevant_files":1,"text_bytes_read":29,"text_files_selected":1,"truncated_scopes":0,"visited_ast_nodes":1},"summary":{"browser_windows":0,"context_bridge_apis":0,"explicit_web_preferences":0,"exposed_api_members":0,"ipc":{"ambiguous_renderer_transmissions":0,"dynamic_channel_operations":0,"literal_channels":0,"main_handlers":0,"operations":0,"paired_renderer_transmissions":0,"renderer_listeners":0,"renderer_transmissions":0,"unpaired_literal_renderer_transmissions":0},"native_addon_bindings":0,"preload_entrypoints":0,"resolved_native_addon_bindings":0,"resolved_utility_entrypoints":0,"sender_validation_observations":0,"utility_processes":0}},"operation":"analyze_javascript_application","parameters":{"approved":true,"source_map_read_approved":false},"predicate_type":"rea.javascript-application-analysis/v1","provider":{"id":"rea-javascript-application","name":"REA JavaScript application analyzer","version":"1"},"raw_result":null,"schema_version":2,"subject":{"architecture":null,"digest":{"sha256":"1111111111111111111111111111111111111111111111111111111111111111"},"format":"directory","local_path":"/Applications/Example.app/Contents/Resources/app","name":"app"}},"role":"application"}]}],"properties":{"limits":{"additionalProperties":false,"default":{"max_reconciliation_items":20000,"max_runtime_entities":10000,"max_static_load_states":20000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_reconciliation_items":{"default":20000,"description":"Maximum permitted reconciliation items for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_runtime_entities":{"default":10000,"description":"Maximum permitted runtime entities for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_static_load_states":{"default":20000,"description":"Maximum permitted static load states for this operation.","maximum":50000,"minimum":1,"type":"integer"}},"type":"object"},"runtime_observations":{"description":"Value for runtime observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"static_layers":{"description":"Value for static layers.","items":{"additionalProperties":false,"properties":{"analysis":{"additionalProperties":false,"description":"Value for analysis.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"role":{"description":"Value for role.","enum":["application","cache","assets"],"type":"string"},"runtime_mappings":{"default":[],"description":"Value for runtime mappings.","items":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_prefix":{"default":"","description":"Value for artifact prefix.","maxLength":4096,"type":"string"},"kind":{"const":"file-root","description":"Value for kind.","type":"string"},"root":{"description":"Value for root.","maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","root"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_prefix":{"default":"","description":"Value for artifact prefix.","maxLength":4096,"type":"string"},"kind":{"const":"url-prefix","description":"Value for kind.","type":"string"},"prefix":{"description":"Value for prefix.","maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","prefix"],"type":"object"}]},"maxItems":32,"type":"array"}},"required":["role","analysis"],"type":"object"},"maxItems":8,"minItems":1,"type":"array"}},"required":["static_layers","runtime_observations"],"type":"object"},"kind":"electron-provider","name":"reconcile_javascript_runtime","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"omitted_graph_items":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_reconciliation_items":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_runtime_entities":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_static_load_states":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_runtime_entities","omitted_reconciliation_items","omitted_static_load_states","omitted_graph_items"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":40,"minItems":2,"type":"array"},"graph":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"reconciliation_id":{"pattern":"^jrr_[a-f0-9]{64}$","type":"string"},"reconciliations":{"items":{"additionalProperties":false,"properties":{"basis":{"enum":["content-and-location","content-sha256","module-source-sha256","artifact-path","operator-file-mapping","operator-url-mapping","none"],"type":"string"},"candidate_static_count":{"maximum":800000,"minimum":0,"type":"integer"},"candidate_static_nodes":{"items":{"additionalProperties":false,"properties":{"static_layer_id":{"pattern":"^jrl_[a-f0-9]{64}$","type":"string"},"static_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["static_layer_id","static_node_id"],"type":"object"},"maxItems":1000,"type":"array"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"entity_kind":{"enum":["target","frame","script","worker"],"type":"string"},"reason":{"enum":["content-and-location-match","unique-content-match","unique-location-match","ambiguous-static-candidates","captured-content-disagrees-with-static-location","no-static-content-match","no-authorized-location-mapping","runtime-frame-unattributed","static-or-runtime-coverage-incomplete","reconciliation-limit-reached"],"type":"string"},"reconciliation_id":{"pattern":"^jrr_item_[a-f0-9]{64}$","type":"string"},"runtime_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"runtime_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"static_layer_id":{"anyOf":[{"pattern":"^jrl_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"static_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"enum":["matched","ambiguous","unmatched","unknown"],"type":"string"}},"required":["reconciliation_id","entity_kind","runtime_evidence_id","runtime_node_id","static_layer_id","static_node_id","status","basis","confidence","reason","candidate_static_count","candidate_static_nodes"],"type":"object"},"maxItems":50000,"type":"array"},"runtime_captures":{"items":{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"enum":["browser","electron","v8-inspector","electron-active"],"type":"string"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts_complete_within_scope":{"type":"boolean"},"target_key":{"maxLength":4096,"minLength":1,"type":"string"},"target_location":{"maxLength":4096,"minLength":1,"type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"workers":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["evidence_id","capture_sha256","kind","target_node_id","target_key","target_location","frames","scripts","workers","scripts_complete_within_scope"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"schema_version":{"const":1,"type":"number"},"source_map_authority":{"additionalProperties":false,"properties":{"limitation":{"maxLength":4096,"minLength":1,"type":"string"},"runtime_script_declarations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_layers_with_read_approval":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"used_for_primary_matching":{"const":false,"type":"boolean"}},"required":["used_for_primary_matching","static_layers_with_read_approval","runtime_script_declarations","limitation"],"type":"object"},"static_layers":{"items":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"format":{"enum":["asar","directory"],"type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"input_path":{"maxLength":16384,"minLength":1,"type":"string"},"layer_id":{"pattern":"^jrl_[a-f0-9]{64}$","type":"string"},"role":{"enum":["application","cache","assets"],"type":"string"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_mappings":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_prefix":{"default":"","maxLength":4096,"type":"string"},"kind":{"const":"file-root","type":"string"},"root":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","root","artifact_prefix"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_prefix":{"default":"","maxLength":4096,"type":"string"},"kind":{"const":"url-prefix","type":"string"},"prefix":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","prefix","artifact_prefix"],"type":"object"}]},"maxItems":32,"type":"array"}},"required":["layer_id","role","evidence_id","graph_id","root_artifact_sha256","input_path","format","runtime_mappings"],"type":"object"},"maxItems":8,"minItems":1,"type":"array"},"static_load_states":{"items":{"additionalProperties":false,"properties":{"kind":{"enum":["javascript-asset","javascript-chunk","javascript-module"],"type":"string"},"reason":{"enum":["runtime-script-correspondence","containing-asset-was-loaded","not-observed-in-bounded-capture","layer-outside-runtime-scope","static-or-runtime-coverage-incomplete"],"type":"string"},"runtime_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":10000,"type":"array"},"static_layer_id":{"pattern":"^jrl_[a-f0-9]{64}$","type":"string"},"static_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"status":{"enum":["loaded","resident-in-loaded-asset","not-observed-in-capture","unknown"],"type":"string"}},"required":["static_layer_id","static_node_id","kind","status","runtime_node_ids","reason"],"type":"object"},"maxItems":50000,"type":"array"},"summary":{"additionalProperties":false,"properties":{"ambiguous":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"matched":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"runtime_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"runtime_scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"runtime_targets":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"runtime_workers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_loaded":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_not_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_resident":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unmatched":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["runtime_targets","runtime_frames","runtime_scripts","runtime_workers","matched","ambiguous","unmatched","unknown","static_loaded","static_resident","static_not_observed","static_unknown"],"type":"object"}},"required":["schema_version","reconciliation_id","static_layers","runtime_captures","graph","summary","reconciliations","static_load_states","source_map_authority","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Reconcile Javascript Runtime"},{"analysisOperation":null,"annotations":{"destructiveHint":true,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Use this for an explicitly approved, provider-owned Electron run when passive CDP or Inspector observation cannot exercise application behavior. REA owns startup and teardown, accepts bounded click/wait actions plus window-targeted renderer reload/crash and synthetic open-url/second-instance delivery, and returns correlated window/WebContents/process/preload/session/navigation/shell/IPC evidence without retaining payload values. Results identify observed and unavailable event families, coverage status, action targets, and truncation. External shell, navigation, permission, download, popup, updater, and OS-integration effects are blocked and recorded. Use passive Electron tools for observation-only work.","effects":{"accessesNetwork":true,"changesUiState":true,"idempotent":false,"launchesProcess":true,"mayDiscardData":true,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"actions":[{"kind":"click","selector":"#run","step_id":"exercise-ipc"}],"application_path":"/Applications/Example.app/Contents/Resources/main.js","application_root":"/Applications/Example.app/Contents/Resources","approved":true,"args":[],"executable_path":"/Applications/Electron.app/Contents/MacOS/Electron","limits":{"action_timeout_ms":5000,"max_actions":20,"max_duration_ms":60000,"max_ipc_events":2000,"max_processes":32,"max_windows":32},"schema_version":1}],"properties":{"actions":{"default":[],"description":"Value for actions.","items":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"click","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":512,"minLength":1,"type":"string"},"step_id":{"description":"Value for step id.","maxLength":128,"minLength":1,"type":"string"},"window_index":{"default":0,"description":"Value for window index.","maximum":99,"minimum":0,"type":"integer"}},"required":["step_id","kind","selector"],"type":"object"},{"additionalProperties":false,"properties":{"duration_ms":{"description":"Value for duration ms.","maximum":10000,"minimum":0,"type":"integer"},"kind":{"const":"wait","description":"Value for kind.","type":"string"},"step_id":{"description":"Value for step id.","maxLength":128,"minLength":1,"type":"string"},"window_index":{"description":"Value for window index.","maximum":99,"minimum":0,"type":"integer"}},"required":["step_id","kind","duration_ms"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"renderer-reload","description":"Value for kind.","type":"string"},"step_id":{"description":"Value for step id.","maxLength":128,"minLength":1,"type":"string"},"window_index":{"default":0,"description":"Value for window index.","maximum":99,"minimum":0,"type":"integer"}},"required":["step_id","kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"renderer-crash","description":"Value for kind.","type":"string"},"step_id":{"description":"Value for step id.","maxLength":128,"minLength":1,"type":"string"},"window_index":{"default":0,"description":"Value for window index.","maximum":99,"minimum":0,"type":"integer"}},"required":["step_id","kind"],"type":"object"},{"additionalProperties":false,"properties":{"delivery":{"description":"Value for delivery.","enum":["open-url","second-instance"],"type":"string"},"kind":{"const":"deep-link","description":"Value for kind.","type":"string"},"step_id":{"description":"Value for step id.","maxLength":128,"minLength":1,"type":"string"},"url":{"description":"Value for url.","maxLength":4096,"minLength":1,"type":"string"}},"required":["step_id","kind","delivery","url"],"type":"object"}]},"maxItems":100,"type":"array"},"application_path":{"description":"Local filesystem path for application.","maxLength":16384,"minLength":1,"type":"string"},"application_root":{"description":"Approved canonical filesystem application root.","maxLength":16384,"minLength":1,"type":"string"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"args":{"default":[],"description":"Value for args.","items":{"maxLength":4096,"type":"string"},"maxItems":32,"type":"array"},"executable_path":{"description":"Local filesystem path for executable.","maxLength":16384,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"action_timeout_ms":5000,"max_actions":20,"max_duration_ms":60000,"max_ipc_events":2000,"max_processes":32,"max_runtime_events":5000,"max_windows":32},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"action_timeout_ms":{"default":5000,"description":"Value for action timeout ms.","maximum":30000,"minimum":1,"type":"integer"},"max_actions":{"default":20,"description":"Maximum permitted actions for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_duration_ms":{"default":60000,"description":"Maximum permitted duration ms for this operation.","maximum":120000,"minimum":1,"type":"integer"},"max_ipc_events":{"default":2000,"description":"Maximum permitted ipc events for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_processes":{"default":32,"description":"Maximum permitted processes for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_runtime_events":{"default":5000,"description":"Maximum permitted runtime events for this operation.","maximum":20000,"minimum":1,"type":"integer"},"max_windows":{"default":32,"description":"Maximum permitted windows for this operation.","maximum":100,"minimum":1,"type":"integer"}},"type":"object"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","executable_path","application_path","application_root","approved"],"type":"object"},"kind":"electron-provider","name":"capture_electron_scenario","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"actions":{"items":{"additionalProperties":false,"properties":{"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"enum":["click","wait","renderer-reload","renderer-crash","deep-link"],"type":"string"},"status":{"enum":["completed","failed","cancelled"],"type":"string"},"step_id":{"maxLength":128,"minLength":1,"type":"string"},"target":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"window_index":{"anyOf":[{"maximum":99,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["step_id","kind","window_index","target","status","elapsed_ms","error"],"type":"object"},"maxItems":100,"type":"array"},"application":{"additionalProperties":false,"properties":{"application_path":{"maxLength":16384,"minLength":1,"type":"string"},"cleanup":{"const":"terminated-owned-process","type":"string"},"electron_version":{"maxLength":256,"minLength":1,"type":"string"},"executable_path":{"maxLength":16384,"minLength":1,"type":"string"},"process_ownership":{"const":"provider-owned","type":"string"}},"required":["executable_path","application_path","electron_version","process_ownership","cleanup"],"type":"object"},"coverage":{"additionalProperties":false,"default":{"observed_event_families":[],"observed_roles":[],"pre_capture_activity":"unavailable","status":"partial_attach","unavailable_event_families":[]},"properties":{"observed_event_families":{"items":{"maxLength":128,"type":"string"},"maxItems":32,"type":"array"},"observed_roles":{"items":{"maxLength":128,"type":"string"},"maxItems":16,"type":"array"},"pre_capture_activity":{"const":"unavailable","type":"string"},"status":{"enum":["complete","partial_attach","capture_truncated","hook_conflict","target_exited","cleanup_failed"],"type":"string"},"unavailable_event_families":{"items":{"maxLength":128,"type":"string"},"maxItems":32,"type":"array"}},"required":["status","observed_event_families","unavailable_event_families","observed_roles","pre_capture_activity"],"type":"object"},"ipc":{"additionalProperties":false,"properties":{"events":{"items":{"additionalProperties":false,"properties":{"argument_shapes":{"items":{"maxLength":64,"type":"string"},"maxItems":32,"type":"array"},"argument_shapes_truncated":{"default":false,"type":"boolean"},"artifact_path":{"anyOf":[{"maxLength":16384,"type":"string"},{"type":"null"}],"default":null},"artifact_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"default":null},"capture_method":{"default":"api-wrapper","enum":["api-wrapper","event-emitter","process-hook"],"type":"string"},"channel":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]},"channel_truncated":{"default":false,"type":"boolean"},"correlation_id":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}],"default":null},"direction":{"anyOf":[{"enum":["renderer-to-main","main-to-renderer","main-to-utility","utility-to-main"],"type":"string"},{"type":"null"}]},"error":{"type":"boolean"},"event":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}]},"frame":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}],"default":null},"kind":{"enum":["main-handler-invocation","main-event-invocation","utility-process-fork","utility-process-message","ipc-main-to-renderer","ipc-utility-to-main","ipc-renderer-send","ipc-renderer-invoke","ipc-renderer-post-message"],"type":"string"},"phase":{"anyOf":[{"enum":["attempted","completed","blocked","failed","observed"],"type":"string"},{"type":"null"}]},"process_type":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}]},"receiver":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"result_shape":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}]},"sender":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"source":{"default":"electron-active-hook","maxLength":64,"type":"string"},"target":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]}},"required":["sequence","correlation_id","kind","channel","channel_truncated","frame","argument_shapes","argument_shapes_truncated","result_shape","process_type","source","capture_method","artifact_path","artifact_sha256","error"],"type":"object"},"maxItems":10000,"type":"array"},"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"}},"required":["events","observed","retained","truncated"],"type":"object"},"limitations":{"items":{"maxLength":4096,"type":"string"},"maxItems":100,"type":"array"},"processes":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"name":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"service_name":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"type":{"maxLength":128,"minLength":1,"type":"string"}},"required":["pid","type","name","service_name"],"type":"object"},"maxItems":100,"type":"array"},"truncated":{"type":"boolean"}},"required":["items","truncated"],"type":"object"},"schema_version":{"const":1,"type":"number"},"timeline":{"additionalProperties":false,"default":{"events":[],"observed":0,"retained":0,"truncated":false},"properties":{"events":{"items":{"additionalProperties":false,"properties":{"argument_shapes":{"items":{"maxLength":64,"type":"string"},"maxItems":32,"type":"array"},"argument_shapes_truncated":{"type":"boolean"},"artifact_path":{"anyOf":[{"maxLength":16384,"type":"string"},{"type":"null"}]},"artifact_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"capture_method":{"enum":["api-wrapper","event-emitter","process-hook"],"type":"string"},"channel":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]},"channel_truncated":{"type":"boolean"},"correlation_id":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}],"default":null},"direction":{"anyOf":[{"enum":["renderer-to-main","main-to-renderer","main-to-utility","utility-to-main"],"type":"string"},{"type":"null"}]},"error":{"type":"boolean"},"event":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}]},"frame":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"kind":{"enum":["main-handler-invocation","main-event-invocation","utility-process-fork","utility-process-message","ipc-main-to-renderer","ipc-utility-to-main","ipc-renderer-send","ipc-renderer-invoke","ipc-renderer-post-message","app-lifecycle","window-lifecycle","web-contents-lifecycle","navigation","shell-attempt","process-lifecycle","permission","popup-attempt","download","protocol","preload","native-addon","updater","error"],"type":"string"},"phase":{"enum":["attempted","completed","blocked","failed","observed"],"type":"string"},"process_type":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}]},"receiver":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"result_shape":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}]},"sender":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"source":{"maxLength":64,"type":"string"},"target":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]}},"required":["sequence","correlation_id","kind","event","phase","channel","channel_truncated","direction","sender","receiver","frame","target","argument_shapes","argument_shapes_truncated","result_shape","process_type","source","capture_method","artifact_path","artifact_sha256","error"],"type":"object"},"maxItems":20000,"type":"array"},"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"}},"required":["events","observed","retained","truncated"],"type":"object"},"windows":{"items":{"additionalProperties":false,"properties":{"destroyed":{"type":"boolean"},"title":{"maxLength":16384,"type":"string"},"url":{"maxLength":65536,"type":"string"},"visible":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"web_contents_id":{"maxLength":256,"type":"string"},"window_id":{"maxLength":256,"type":"string"}},"required":["window_id","web_contents_id","url","title","visible","destroyed"],"type":"object"},"maxItems":100,"type":"array"},"windows_truncated":{"type":"boolean"}},"required":["schema_version","application","actions","windows","windows_truncated","processes","ipc","timeline","coverage","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Capture Electron Scenario"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"List attachable Node/Electron V8 Inspector targets from one approved literal-loopback endpoint. Only targets inside exact canonical file roots or exact HTTP(S) origins are retained; excluded target locations never enter Evidence.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"allowed_file_roots":["/opt/example-app"],"allowed_origins":[],"approved":true,"inspector_endpoint":"http://127.0.0.1:9229","limit":100,"offset":0}],"properties":{"allowed_file_roots":{"default":[],"description":"Approved canonical filesystem allowed file roots.","items":{"maxLength":16384,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"inspector_endpoint":{"description":"Value for inspector endpoint.","maxLength":2048,"minLength":1,"type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":200,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["inspector_endpoint","approved"],"type":"object"},"kind":"runtime-provider","name":"list_javascript_runtime_targets","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"excluded":{"additionalProperties":false,"properties":{"outside_file_roots":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outside_origins":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unconnectable":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unsupported_location":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["outside_file_roots","outside_origins","unsupported_location","unconnectable"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"runtime":{"additionalProperties":false,"properties":{"product":{"maxLength":1024,"minLength":1,"type":"string"},"protocol_version":{"maxLength":100,"minLength":1,"type":"string"},"v8_version":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]}},"required":["product","protocol_version","v8_version"],"type":"object"},"schema_version":{"const":1,"type":"number"},"targets":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"authority":{"const":"scope-fallback","type":"string"},"file_path":{"maxLength":16384,"minLength":1,"type":"string"},"kind":{"const":"file","type":"string"}},"required":["kind","file_path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"origin":{"maxLength":2048,"minLength":1,"type":"string"},"sanitized_url":{"maxLength":65536,"minLength":1,"type":"string"}},"required":["kind","origin","sanitized_url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"builtin","type":"string"},"specifier":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","specifier"],"type":"object"}]},"protocol_type":{"maxLength":100,"minLength":1,"type":"string"},"target_id":{"maxLength":256,"minLength":1,"type":"string"}},"required":["target_id","protocol_type","attached","location"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["schema_version","runtime","targets","excluded","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Javascript Runtime Targets"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Attach passively to one exact approved Node/Electron V8 Inspector target and capture bounded Debugger.scriptParsed plus Runtime execution-context events. REA sends only Runtime.enable and Debugger.enable: it never evaluates, pauses, resumes, reads source, or instruments the target. require/import edges, EventEmitter activity, and Electron IPC remain explicit unknowns; reconcile the returned Evidence with static Application Graph Evidence using reconcile_javascript_runtime.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"allowed_file_roots":["/opt/example-app"],"allowed_origins":[],"approved":true,"inspector_endpoint":"http://127.0.0.1:9229","limits":{"max_events":10000,"max_execution_contexts":1000,"max_location_bytes":16384,"max_scripts":2000,"max_total_metadata_bytes":4194304},"observation_ms":100,"runtime_kind":"node","target_id":"TARGET_ID_FROM_LIST_JAVASCRIPT_RUNTIME_TARGETS"}],"properties":{"allowed_file_roots":{"default":[],"description":"Approved canonical filesystem allowed file roots.","items":{"maxLength":16384,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"inspector_endpoint":{"description":"Value for inspector endpoint.","maxLength":2048,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_events":10000,"max_execution_contexts":1000,"max_location_bytes":16384,"max_scripts":2000,"max_total_metadata_bytes":4194304},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_events":{"default":10000,"description":"Maximum permitted events for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_execution_contexts":{"default":1000,"description":"Maximum permitted execution contexts for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_location_bytes":{"default":16384,"description":"Maximum permitted location bytes for this operation.","maximum":65536,"minimum":64,"type":"integer"},"max_scripts":{"default":2000,"description":"Maximum permitted scripts for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_total_metadata_bytes":{"default":4194304,"description":"Maximum permitted total metadata bytes for this operation.","maximum":33554432,"minimum":1024,"type":"integer"}},"type":"object"},"observation_ms":{"default":100,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"runtime_kind":{"description":"Value for runtime kind.","enum":["node","electron-main","electron-preload","electron-renderer"],"type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["inspector_endpoint","approved","target_id","runtime_kind"],"type":"object"},"kind":"runtime-provider","name":"observe_javascript_runtime","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"capture":{"additionalProperties":false,"properties":{"events_dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"events_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"events_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"metadata_bytes_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observation_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"},"truncation_reasons":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":20,"type":"array"}},"required":["observation_ms","events_observed","events_retained","events_dropped","metadata_bytes_retained","truncated","truncation_reasons"],"type":"object"},"directly_observed":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"execution_contexts":{"items":{"additionalProperties":false,"properties":{"context_key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]},"origin":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}]},"state":{"enum":["created","destroyed","cleared"],"type":"string"}},"required":["context_key","state","name","origin"],"type":"object"},"type":"array"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"runtime":{"additionalProperties":false,"properties":{"product":{"maxLength":1024,"minLength":1,"type":"string"},"protocol_version":{"maxLength":100,"minLength":1,"type":"string"},"v8_version":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]}},"required":["product","protocol_version","v8_version"],"type":"object"},"schema_version":{"const":1,"type":"number"},"scripts":{"additionalProperties":false,"properties":{"excluded":{"additionalProperties":false,"properties":{"invalid_protocol_value":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outside_file_roots":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outside_origins":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unsupported_location":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["outside_file_roots","outside_origins","unsupported_location","invalid_protocol_value"],"type":"object"},"items":{"items":{"additionalProperties":false,"properties":{"cdp_hash":{"anyOf":[{"maxLength":512,"type":"string"},{"type":"null"}]},"execution_context_key":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}]},"is_module":{"type":"boolean"},"length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"authority":{"const":"scope-fallback","type":"string"},"file_path":{"maxLength":16384,"minLength":1,"type":"string"},"kind":{"const":"file","type":"string"}},"required":["kind","file_path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"origin":{"maxLength":2048,"minLength":1,"type":"string"},"sanitized_url":{"maxLength":65536,"minLength":1,"type":"string"}},"required":["kind","origin","sanitized_url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"builtin","type":"string"},"specifier":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","specifier"],"type":"object"}]},"script_key":{"pattern":"^v8_script_[a-f0-9]{64}$","type":"string"},"status":{"const":"observed-loaded","type":"string"}},"required":["script_key","location","execution_context_key","cdp_hash","length","is_module","status"],"type":"object"},"type":"array"},"observed_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","observed_total","excluded"],"type":"object"},"target":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"authority":{"const":"scope-fallback","type":"string"},"file_path":{"maxLength":16384,"minLength":1,"type":"string"},"kind":{"const":"file","type":"string"}},"required":["kind","file_path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"origin":{"maxLength":2048,"minLength":1,"type":"string"},"sanitized_url":{"maxLength":65536,"minLength":1,"type":"string"}},"required":["kind","origin","sanitized_url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"builtin","type":"string"},"specifier":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","specifier"],"type":"object"}]},"protocol_type":{"maxLength":100,"minLength":1,"type":"string"},"runtime_kind":{"enum":["node","electron-main","electron-preload","electron-renderer"],"type":"string"},"runtime_kind_authority":{"const":"caller-declared-unverified","type":"string"},"target_id":{"maxLength":256,"minLength":1,"type":"string"}},"required":["target_id","protocol_type","attached","location","runtime_kind","runtime_kind_authority"],"type":"object"},"unavailable_without_instrumentation":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"unknowns":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"}},"required":["schema_version","runtime","target","capture","scripts","execution_contexts","directly_observed","unavailable_without_instrumentation","unknowns","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Observe Javascript Runtime"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Trace a typed literal seed through an authenticated JavaScript Application Graph supplied as full Evidence or an Evidence ID returned earlier in this session. Explicit direction, depth, node, edge, and path bounds apply. Original static, native, passive-runtime, inferred, and unknown authorities remain distinct; native addon handoffs never open a provider or execute the application.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"application":{"additionalProperties":false,"description":"Value for application.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"direction":{"default":"both","description":"Direction in which to traverse or compare relationships.","enum":["outgoing","incoming","both"],"type":"string"},"limits":{"additionalProperties":false,"default":{"max_depth":12,"max_edges":4000,"max_nodes":2000,"max_paths":100,"max_seed_matches":25},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_depth":{"default":12,"description":"Maximum permitted depth for this operation.","maximum":64,"minimum":0,"type":"integer"},"max_edges":{"default":4000,"description":"Maximum permitted edges for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_nodes":{"default":2000,"description":"Maximum permitted nodes for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_paths":{"default":100,"description":"Maximum permitted paths for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_seed_matches":{"default":25,"description":"Maximum permitted seed matches for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"native_observations":{"default":[],"description":"Value for native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"seed":{"additionalProperties":false,"description":"Value for seed.","properties":{"case_sensitive":{"default":false,"description":"Whether text matching distinguishes uppercase and lowercase.","type":"boolean"},"kind":{"description":"Value for kind.","enum":["node-id","route","string","api","channel","module","native-export"],"type":"string"},"match":{"anyOf":[{"enum":["exact","contains"],"type":"string"},{"type":"null"}],"default":null,"description":"Value for match."},"value":{"description":"Value for value.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"}},"required":["seed","application"],"type":"object"},{"additionalProperties":false,"properties":{"application_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"direction":{"default":"both","description":"Direction in which to traverse or compare relationships.","enum":["outgoing","incoming","both"],"type":"string"},"limits":{"additionalProperties":false,"default":{"max_depth":12,"max_edges":4000,"max_nodes":2000,"max_paths":100,"max_seed_matches":25},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_depth":{"default":12,"description":"Maximum permitted depth for this operation.","maximum":64,"minimum":0,"type":"integer"},"max_edges":{"default":4000,"description":"Maximum permitted edges for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_nodes":{"default":2000,"description":"Maximum permitted nodes for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_paths":{"default":100,"description":"Maximum permitted paths for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_seed_matches":{"default":25,"description":"Maximum permitted seed matches for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"native_observations":{"default":[],"description":"Value for native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"seed":{"additionalProperties":false,"description":"Value for seed.","properties":{"case_sensitive":{"default":false,"description":"Whether text matching distinguishes uppercase and lowercase.","type":"boolean"},"kind":{"description":"Value for kind.","enum":["node-id","route","string","api","channel","module","native-export"],"type":"string"},"match":{"anyOf":[{"enum":["exact","contains"],"type":"string"},{"type":"null"}],"default":null,"description":"Value for match."},"value":{"description":"Value for value.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"}},"required":["seed","application_evidence_id"],"type":"object"}],"examples":[{"application_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","direction":"both","seed":{"case_sensitive":false,"kind":"module","match":"exact","value":"renderer.js"}}],"type":"object"},"kind":"application","name":"trace_application_feature","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"frontier_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":50000,"type":"array"},"omitted_edges":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_paths":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_seed_matches":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scanned_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"status":{"enum":["complete-within-source","partial","truncated","no-match"],"type":"string"},"total_seed_matches":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","source_graph_status","scanned_nodes","total_seed_matches","omitted_seed_matches","omitted_nodes","omitted_edges","omitted_paths","frontier_node_ids"],"type":"object"},"direction":{"enum":["outgoing","incoming","both"],"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":65,"minItems":1,"type":"array"},"graph":{"anyOf":[{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},{"type":"null"}]},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"native_handoffs":{"items":{"additionalProperties":false,"properties":{"artifact_path":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]},"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"export_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"native_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"providers":{"items":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"maxItems":64,"type":"array"},"recommended_tools":{"items":{"enum":["open_binary","binary_overview","search_procedures","analyze_function","xrefs"],"type":"string"},"maxItems":5,"type":"array"},"requested_exports":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"status":{"enum":["evidence-linked","requires-provider-analysis"],"type":"string"}},"required":["native_node_id","artifact_sha256","artifact_path","export_node_ids","requested_exports","status","providers","evidence_ids","recommended_tools"],"type":"object"},"maxItems":10000,"type":"array"},"paths":{"items":{"additionalProperties":false,"properties":{"authorities":{"items":{"maxLength":128,"minLength":1,"type":"string"},"maxItems":16,"type":"array"},"contains_inference":{"type":"boolean"},"edge_ids":{"items":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"end_kind":{"maxLength":128,"minLength":1,"type":"string"},"end_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":65,"minItems":1,"type":"array"},"path_id":{"pattern":"^jatp_[a-f0-9]{64}$","type":"string"},"start_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["path_id","start_node_id","end_node_id","end_kind","node_ids","edge_ids","authorities","contains_inference"],"type":"object"},"maxItems":1000,"type":"array"},"schema_version":{"const":1,"type":"number"},"seed":{"additionalProperties":false,"properties":{"case_sensitive":{"default":false,"type":"boolean"},"kind":{"enum":["node-id","route","string","api","channel","module","native-export"],"type":"string"},"match":{"anyOf":[{"enum":["exact","contains"],"type":"string"},{"type":"null"}],"default":null},"value":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","value","match","case_sensitive"],"type":"object"},"seed_matches":{"items":{"additionalProperties":false,"properties":{"basis":{"enum":["node-id","label","identity","property"],"type":"string"},"field":{"maxLength":256,"minLength":1,"type":"string"},"kind":{"maxLength":128,"minLength":1,"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["node_id","kind","basis","field"],"type":"object"},"maxItems":1000,"type":"array"},"source_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"source_graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"summary":{"additionalProperties":false,"properties":{"inferred_facts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"matched_seeds":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"native_handoffs":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observed_facts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"terminal_paths":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traced_edges":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traced_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unavailable_facts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_facts":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["matched_seeds","traced_nodes","traced_edges","terminal_paths","native_handoffs","observed_facts","inferred_facts","unknown_facts","unavailable_facts"],"type":"object"},"trace_id":{"pattern":"^jatr_[a-f0-9]{64}$","type":"string"}},"required":["schema_version","trace_id","source_evidence_id","source_graph_id","seed","direction","seed_matches","graph","paths","native_handoffs","summary","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Trace Application Feature"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Trace bounded static JavaScript data-flow, direct call/return, and closure relations from authenticated analyze_javascript_application v2 Evidence. Queries declare direction and exact node, relation, depth, function, module, and page limits. Dynamic or unsupported semantics remain explicit unknowns; static reachability never claims runtime execution.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"application":{"additionalProperties":false,"description":"Value for application.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"query":{"additionalProperties":false,"description":"Non-empty feature or text query to investigate.","properties":{"allowed_relations":{"description":"Value for allowed relations.","items":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"maxItems":44,"minItems":1,"type":"array"},"cursor":{"anyOf":[{"pattern":"^jsrqc_[0-9]+_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"default":null,"description":"Value for cursor."},"direction":{"description":"Direction in which to traverse or compare relationships.","enum":["backward-provenance","forward-influence","callers","ownership"],"type":"string"},"expected":{"anyOf":[{"additionalProperties":false,"properties":{"classes":{"description":"Value for classes.","items":{"enum":["module","function","parameter","binding","expression","literal","property-slot","call-site","return-site","closure-capture","promise","task","event","listener","timer","child-process","stdio","signal","config-source","request","response","boundary","resource","unknown-frontier"],"type":"string"},"maxItems":24,"minItems":1,"type":"array"},"role":{"description":"Value for role.","enum":["source","sink"],"type":"string"}},"required":["role","classes"],"type":"object"},{"type":"null"}],"default":null,"description":"Value for expected."},"include_ambiguous_dynamic_edges":{"default":false,"description":"Whether to include ambiguous dynamic edges in the result.","type":"boolean"},"limits":{"additionalProperties":false,"default":{"max_depth":12,"max_edges":4000,"max_functions":500,"max_modules":500,"max_nodes":2000,"max_seed_matches":25,"max_unknowns":1000,"page_size":200},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_depth":{"default":12,"description":"Maximum permitted depth for this operation.","maximum":64,"minimum":0,"type":"integer"},"max_edges":{"default":4000,"description":"Maximum permitted edges for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_functions":{"default":500,"description":"Maximum permitted functions for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_modules":{"default":500,"description":"Maximum permitted modules for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_nodes":{"default":2000,"description":"Maximum permitted nodes for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_seed_matches":{"default":25,"description":"Maximum permitted seed matches for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_unknowns":{"default":1000,"description":"Maximum permitted unknowns for this operation.","maximum":10000,"minimum":0,"type":"integer"},"page_size":{"default":200,"description":"Value for page size.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"seed":{"description":"Value for seed.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"semantic-node","description":"Value for kind.","type":"string"},"node_id":{"description":"Value for node id.","pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"application-node","description":"Value for kind.","type":"string"},"node_id":{"description":"Value for node id.","pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"literal","description":"Value for kind.","type":"string"},"value":{"$ref":"#/$defs/__schema0","description":"Value for value."}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"fingerprint_sha256":{"description":"Exact SHA-256 digest of fingerprint.","pattern":"^[a-f0-9]{64}$","type":"string"},"kind":{"const":"function","description":"Value for kind.","type":"string"}},"required":["kind","fingerprint_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"property","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"endpoint","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"event","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"field":{"description":"Value for field.","maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"boundary-field","description":"Value for kind.","type":"string"}},"required":["kind","field"],"type":"object"}]},"source_map_authority":{"additionalProperties":false,"default":{"authority":"none"},"description":"Value for source map authority.","properties":{"authority":{"const":"none","description":"Value for authority.","type":"string"}},"required":["authority"],"type":"object"}},"required":["seed","direction"],"type":"object"}},"required":["application","query"],"type":"object"},{"additionalProperties":false,"properties":{"application_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"query":{"additionalProperties":false,"description":"Non-empty feature or text query to investigate.","properties":{"allowed_relations":{"description":"Value for allowed relations.","items":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"maxItems":44,"minItems":1,"type":"array"},"cursor":{"anyOf":[{"pattern":"^jsrqc_[0-9]+_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"default":null,"description":"Value for cursor."},"direction":{"description":"Direction in which to traverse or compare relationships.","enum":["backward-provenance","forward-influence","callers","ownership"],"type":"string"},"expected":{"anyOf":[{"additionalProperties":false,"properties":{"classes":{"description":"Value for classes.","items":{"enum":["module","function","parameter","binding","expression","literal","property-slot","call-site","return-site","closure-capture","promise","task","event","listener","timer","child-process","stdio","signal","config-source","request","response","boundary","resource","unknown-frontier"],"type":"string"},"maxItems":24,"minItems":1,"type":"array"},"role":{"description":"Value for role.","enum":["source","sink"],"type":"string"}},"required":["role","classes"],"type":"object"},{"type":"null"}],"default":null,"description":"Value for expected."},"include_ambiguous_dynamic_edges":{"default":false,"description":"Whether to include ambiguous dynamic edges in the result.","type":"boolean"},"limits":{"additionalProperties":false,"default":{"max_depth":12,"max_edges":4000,"max_functions":500,"max_modules":500,"max_nodes":2000,"max_seed_matches":25,"max_unknowns":1000,"page_size":200},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_depth":{"default":12,"description":"Maximum permitted depth for this operation.","maximum":64,"minimum":0,"type":"integer"},"max_edges":{"default":4000,"description":"Maximum permitted edges for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_functions":{"default":500,"description":"Maximum permitted functions for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_modules":{"default":500,"description":"Maximum permitted modules for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_nodes":{"default":2000,"description":"Maximum permitted nodes for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_seed_matches":{"default":25,"description":"Maximum permitted seed matches for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_unknowns":{"default":1000,"description":"Maximum permitted unknowns for this operation.","maximum":10000,"minimum":0,"type":"integer"},"page_size":{"default":200,"description":"Value for page size.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"seed":{"description":"Value for seed.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"semantic-node","description":"Value for kind.","type":"string"},"node_id":{"description":"Value for node id.","pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"application-node","description":"Value for kind.","type":"string"},"node_id":{"description":"Value for node id.","pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"literal","description":"Value for kind.","type":"string"},"value":{"$ref":"#/$defs/__schema0","description":"Value for value."}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"fingerprint_sha256":{"description":"Exact SHA-256 digest of fingerprint.","pattern":"^[a-f0-9]{64}$","type":"string"},"kind":{"const":"function","description":"Value for kind.","type":"string"}},"required":["kind","fingerprint_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"property","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"endpoint","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"event","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"field":{"description":"Value for field.","maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"boundary-field","description":"Value for kind.","type":"string"}},"required":["kind","field"],"type":"object"}]},"source_map_authority":{"additionalProperties":false,"default":{"authority":"none"},"description":"Value for source map authority.","properties":{"authority":{"const":"none","description":"Value for authority.","type":"string"}},"required":["authority"],"type":"object"}},"required":["seed","direction"],"type":"object"}},"required":["application_evidence_id","query"],"type":"object"}],"examples":[{"application_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","query":{"direction":"backward-provenance","seed":{"kind":"semantic-node","node_id":"jsrg_node_0000000000000000000000000000000000000000000000000000000000000000"},"source_map_authority":{"authority":"none"}}}],"type":"object"},"kind":"application","name":"trace_javascript_semantics","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"accepted_limit_ranges":{"additionalProperties":false,"properties":{"max_depth":{"additionalProperties":false,"properties":{"maximum":{"const":64,"type":"number"},"minimum":{"const":0,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_edges":{"additionalProperties":false,"properties":{"maximum":{"const":100000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_functions":{"additionalProperties":false,"properties":{"maximum":{"const":10000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_modules":{"additionalProperties":false,"properties":{"maximum":{"const":10000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_nodes":{"additionalProperties":false,"properties":{"maximum":{"const":50000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_seed_matches":{"additionalProperties":false,"properties":{"maximum":{"const":1000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_unknowns":{"additionalProperties":false,"properties":{"maximum":{"const":10000,"type":"number"},"minimum":{"const":0,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"page_size":{"additionalProperties":false,"properties":{"maximum":{"const":1000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"}},"required":["max_seed_matches","max_nodes","max_edges","max_depth","max_functions","max_modules","max_unknowns","page_size"],"type":"object"},"applied_limits":{"additionalProperties":false,"properties":{"max_depth":{"default":12,"maximum":64,"minimum":0,"type":"integer"},"max_edges":{"default":4000,"maximum":100000,"minimum":1,"type":"integer"},"max_functions":{"default":500,"maximum":10000,"minimum":1,"type":"integer"},"max_modules":{"default":500,"maximum":10000,"minimum":1,"type":"integer"},"max_nodes":{"default":2000,"maximum":50000,"minimum":1,"type":"integer"},"max_seed_matches":{"default":25,"maximum":1000,"minimum":1,"type":"integer"},"max_unknowns":{"default":1000,"maximum":10000,"minimum":0,"type":"integer"},"page_size":{"default":200,"maximum":1000,"minimum":1,"type":"integer"}},"required":["max_seed_matches","max_nodes","max_edges","max_depth","max_functions","max_modules","max_unknowns","page_size"],"type":"object"},"coverage":{"additionalProperties":false,"properties":{"frontier":{"items":{"additionalProperties":false,"properties":{"depth":{"maximum":65,"minimum":0,"type":"integer"},"node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"reason":{"enum":["max-depth","max-edges","max-functions","max-modules","max-nodes","max-seed-matches"],"type":"string"}},"required":["node_id","depth","reason"],"type":"object"},"maxItems":100000,"type":"array"},"status":{"enum":["complete","partial","truncated","unavailable"],"type":"string"}},"required":["status","frontier"],"type":"object"},"direction":{"enum":["backward-provenance","forward-influence","callers","ownership"],"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1,"minItems":1,"type":"array"},"expected_match_node_ids":{"items":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"maxItems":50000,"type":"array"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"application_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"function_node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"identity":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"role_key":{"maxLength":1024,"minLength":1,"type":"string"},"source_range":{"anyOf":[{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["start","end"],"type":"object"},{"type":"null"}]}},"required":["artifact_sha256","module_path","source_range","role_key"],"type":"object"},"kind":{"enum":["module","function","parameter","binding","expression","literal","property-slot","call-site","return-site","closure-capture","promise","task","event","listener","timer","child-process","stdio","signal","config-source","request","response","boundary","resource","unknown-frontier"],"type":"string"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["kind","identity","function_node_id","application_node_ids","label","properties","evidence","node_id","identifier_strategy"],"type":"object"},"maxItems":3000,"type":"array"},"page":{"additionalProperties":false,"properties":{"next_cursor":{"anyOf":[{"pattern":"^jsrqc_[0-9]+_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"size":{"maximum":1000,"minimum":0,"type":"integer"}},"required":["offset","size","next_cursor"],"type":"object"},"query_id":{"pattern":"^jsrq_[a-f0-9]{64}$","type":"string"},"relations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"relation_id":{"pattern":"^jsrg_relation_[a-f0-9]{64}$","type":"string"},"resolution":{"enum":["resolved","candidate"],"type":"string"},"source_node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","resolution","properties","evidence","relation_id","identifier_strategy"],"type":"object"},"maxItems":1000,"type":"array"},"schema_version":{"const":1,"type":"number"},"seed":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"semantic-node","type":"string"},"node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"application-node","type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"literal","type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"kind":{"const":"function","type":"string"}},"required":["kind","fingerprint_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"property","type":"string"},"name":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"endpoint","type":"string"},"value":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"event","type":"string"},"name":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"field":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"boundary-field","type":"string"}},"required":["kind","field"],"type":"object"}]},"seed_node_ids":{"items":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"source_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"source_graph_id":{"pattern":"^jsrg_[a-f0-9]{64}$","type":"string"},"status":{"enum":["found","no-match","ambiguous","partial","truncated","unsupported"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"relevant_unknowns":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_seed_matches":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_unknowns":{"maximum":10000,"minimum":0,"type":"integer"},"total_seed_matches":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traversed_functions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traversed_modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traversed_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traversed_relations":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_seed_matches","retained_seed_matches","traversed_nodes","traversed_relations","traversed_functions","traversed_modules","relevant_unknowns","retained_unknowns"],"type":"object"},"unknowns":{"items":{"additionalProperties":false,"properties":{"candidate_node_ids":{"items":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"family":{"enum":["boundary","call-flow","child-process","closure","configuration","data-flow","event","object-flow","promise-ownership","request","resource-lifecycle","timer"],"type":"string"},"node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"reason":{"enum":["ambiguous-target","bound-reached","dynamic-call","dynamic-property","eval-or-generated-code","incomplete-module","missing-source","unsupported-syntax"],"type":"string"},"relation_kinds":{"items":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"maxItems":45,"minItems":1,"type":"array"},"unknown_id":{"pattern":"^jsrg_unknown_[a-f0-9]{64}$","type":"string"}},"required":["node_id","family","relation_kinds","reason","detail","candidate_node_ids","evidence","unknown_id"],"type":"object"},"maxItems":100000,"type":"array"}},"required":["schema_version","query_id","source_graph_id","seed","direction","status","seed_node_ids","nodes","relations","unknowns","expected_match_node_ids","summary","coverage","page","applied_limits","accepted_limit_ranges","limitations","source_evidence_id","evidence_links"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Trace Javascript Semantics"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two authenticated JavaScript Application Graph versions supplied as full Evidence or Evidence IDs returned earlier in this session. Uses unique-only exact digest, module source digest, source-map identity, structural fingerprint, and non-module semantic-key tiers. Reports added, removed, changed, ambiguous, and unknown entities plus a bounded changed_from graph without fuzzy or module-ordinal pairing.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"left_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the left native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"left_native_observations":{"default":[],"description":"Value for left native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"limits":{"additionalProperties":false,"default":{"max_candidate_nodes":100,"max_comparison_items":20000,"max_graph_edges":40000,"max_graph_nodes":20000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_comparison_items":{"default":20000,"description":"Maximum permitted comparison items for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_graph_edges":{"default":40000,"description":"Maximum permitted graph edges for this operation.","maximum":200000,"minimum":1,"type":"integer"},"max_graph_nodes":{"default":20000,"description":"Maximum permitted graph nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"right_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the right native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"right_native_observations":{"default":[],"description":"Value for right native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left","right"],"type":"object"},{"additionalProperties":false,"properties":{"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"left_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the left native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"left_native_observations":{"default":[],"description":"Value for left native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"limits":{"additionalProperties":false,"default":{"max_candidate_nodes":100,"max_comparison_items":20000,"max_graph_edges":40000,"max_graph_nodes":20000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_comparison_items":{"default":20000,"description":"Maximum permitted comparison items for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_graph_edges":{"default":40000,"description":"Maximum permitted graph edges for this operation.","maximum":200000,"minimum":1,"type":"integer"},"max_graph_nodes":{"default":20000,"description":"Maximum permitted graph nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"right_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"right_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the right native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"right_native_observations":{"default":[],"description":"Value for right native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left","right_evidence_id"],"type":"object"},{"additionalProperties":false,"properties":{"left_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"left_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the left native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"left_native_observations":{"default":[],"description":"Value for left native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"limits":{"additionalProperties":false,"default":{"max_candidate_nodes":100,"max_comparison_items":20000,"max_graph_edges":40000,"max_graph_nodes":20000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_comparison_items":{"default":20000,"description":"Maximum permitted comparison items for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_graph_edges":{"default":40000,"description":"Maximum permitted graph edges for this operation.","maximum":200000,"minimum":1,"type":"integer"},"max_graph_nodes":{"default":20000,"description":"Maximum permitted graph nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"right_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the right native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"right_native_observations":{"default":[],"description":"Value for right native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_evidence_id","right"],"type":"object"},{"additionalProperties":false,"properties":{"left_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"left_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the left native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"left_native_observations":{"default":[],"description":"Value for left native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"limits":{"additionalProperties":false,"default":{"max_candidate_nodes":100,"max_comparison_items":20000,"max_graph_edges":40000,"max_graph_nodes":20000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_comparison_items":{"default":20000,"description":"Maximum permitted comparison items for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_graph_edges":{"default":40000,"description":"Maximum permitted graph edges for this operation.","maximum":200000,"minimum":1,"type":"integer"},"max_graph_nodes":{"default":20000,"description":"Maximum permitted graph nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"right_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"right_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the right native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"right_native_observations":{"default":[],"description":"Value for right native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_evidence_id","right_evidence_id"],"type":"object"}],"examples":[{"left_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","right_evidence_id":"ev_1111111111111111111111111111111111111111111111111111111111111111"}],"type":"object"},"kind":"application","name":"compare_application_versions","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"comparison_id":{"pattern":"^javc_[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"left_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"omitted_candidate_references":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_comparison_items":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_graph_edges":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_graph_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_graph_observations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"right_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"}},"required":["status","left_graph_status","right_graph_status","omitted_comparison_items","omitted_candidate_references","omitted_graph_nodes","omitted_graph_edges","omitted_graph_observations"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":130,"minItems":2,"type":"array"},"graph":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},"items":{"items":{"additionalProperties":false,"properties":{"dimensions":{"items":{"enum":["content","location","properties","relationships","availability","coverage"],"type":"string"},"maxItems":6,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":130,"minItems":2,"type":"array"},"item_id":{"pattern":"^javc_item_[a-f0-9]{64}$","type":"string"},"left_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"enum":["exact-node-identity","exact-content-digest","exact-module-source-digest","source-map-identity","structural-fingerprint","semantic-key","none"],"type":"string"},"candidate_left_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"candidate_right_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"confidence":{"enum":["exact","high","medium","unknown"],"type":"string"},"status":{"enum":["matched","unmatched","ambiguous"],"type":"string"}},"required":["status","basis","confidence","candidate_left_node_ids","candidate_right_node_ids"],"type":"object"},"node_kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"right_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"enum":["unchanged","added","removed","changed","unknown"],"type":"string"}},"required":["item_id","status","node_kind","left_node_id","right_node_id","match","dimensions","evidence_links","limitations"],"type":"object"},"maxItems":50000,"type":"array"},"left":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["evidence_id","graph_id","root_artifact_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"matching":{"additionalProperties":false,"properties":{"ambiguous":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exact_content_digest":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exact_module_source_digest":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exact_node_identity":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"semantic_key":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source_map_identity":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"structural_fingerprint":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unmatched":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["exact_node_identity","exact_content_digest","exact_module_source_digest","source_map_identity","structural_fingerprint","semantic_key","ambiguous","unmatched"],"type":"object"},"right":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["evidence_id","graph_id","root_artifact_sha256"],"type":"object"},"schema_version":{"const":1,"type":"number"},"summary":{"additionalProperties":false,"properties":{"added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unchanged","added","removed","changed","unknown"],"type":"object"}},"required":["schema_version","comparison_id","left","right","summary","matching","items","graph","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Compare Application Versions"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare a cryptographically committed HistoricalSourceGraph/v1 with authenticated JavaScript Application Graph Evidence supplied directly or by session Evidence ID. Uses explicit exact-digest, source-map path, current-path, suffix, and basename signals with stable weights. Classifies unchanged, modified, removed, split, merged, duplicated, and unknown; incomplete coverage and ambiguous weak signals never become absence or forced matches.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"application":{"additionalProperties":false,"description":"Value for application.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"limits":{"additionalProperties":false,"default":{"max_application_nodes":20000,"max_candidate_evaluations":1000000,"max_candidate_nodes":100,"max_source_files":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_application_nodes":{"default":20000,"description":"Maximum permitted application nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_candidate_evaluations":{"default":1000000,"description":"Maximum permitted candidate evaluations for this operation.","maximum":10000000,"minimum":1,"type":"integer"},"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_source_files":{"default":10000,"description":"Maximum permitted source files for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"reference":{"additionalProperties":false,"description":"Value for reference.","properties":{"authority":{"const":"historical-reference","description":"Value for authority.","type":"string"},"entries":{"description":"Value for entries.","items":{"oneOf":[{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"content_state":{"description":"Value for content state.","enum":["hashed","redacted-secret","excluded","unreadable","too-large","unknown"],"type":"string"},"kind":{"const":"file","description":"Value for kind.","type":"string"},"language":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for language."},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for sha256."},"size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for size."}},"required":["path","classifications","limitations","kind","sha256","size","language","content_state"],"type":"object"},{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"kind":{"const":"directory","description":"Value for kind.","type":"string"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"tree_state":{"description":"Value for tree state.","enum":["enumerated","partial","excluded","unreadable","unknown"],"type":"string"}},"required":["path","classifications","limitations","kind","tree_state"],"type":"object"},{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"kind":{"const":"symlink","description":"Value for kind.","type":"string"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"target":{"description":"Value for target.","maxLength":4096,"minLength":1,"type":"string"},"target_state":{"description":"Value for target state.","enum":["internal","external","missing","unreadable","unknown"],"type":"string"}},"required":["path","classifications","limitations","kind","target","target_state"],"type":"object"}]},"maxItems":100000,"type":"array"},"exclusions":{"description":"Value for exclusions.","items":{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"reason":{"description":"Value for reason.","enum":["configured-secret","symlink-escape","size-limit","inventory-limit","unreadable","caller-excluded"],"type":"string"}},"required":["path","reason"],"type":"object"},"maxItems":100000,"type":"array"},"inventory_state":{"description":"Value for inventory state.","enum":["complete","partial","unknown"],"type":"string"},"languages":{"description":"Value for languages.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"manifests":{"description":"Value for manifests.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":10000,"type":"array"},"parse_failures":{"description":"Value for parse failures.","items":{"additionalProperties":false,"properties":{"parser":{"description":"Value for parser.","maxLength":100,"minLength":1,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"}},"required":["path","parser","reason"],"type":"object"},"maxItems":10000,"type":"array"},"provenance":{"additionalProperties":false,"description":"Value for provenance.","properties":{"caller":{"description":"Value for caller.","maxLength":200,"minLength":1,"pattern":"^[\\\\w .:@/+-]+$","type":"string"},"importer":{"description":"Value for importer.","maxLength":100,"minLength":1,"type":"string"},"importer_version":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for importer version."}},"required":["importer","importer_version","caller"],"type":"object"},"relationships":{"description":"Value for relationships.","items":{"additionalProperties":false,"properties":{"from_path":{"description":"Local filesystem path for from.","maxLength":4096,"minLength":1,"type":"string"},"kind":{"description":"Value for kind.","enum":["imports","requires","references","declares-module"],"type":"string"},"parse_state":{"description":"Value for parse state.","enum":["parsed","partial","unknown"],"type":"string"},"resolution":{"description":"Value for resolution.","enum":["internal","external","unresolved","unknown"],"type":"string"},"to":{"description":"Value for to.","maxLength":4096,"minLength":1,"type":"string"}},"required":["from_path","to","kind","resolution","parse_state"],"type":"object"},"maxItems":200000,"type":"array"},"root_alias":{"const":"$REFERENCE_ROOT","description":"Value for root alias.","type":"string"},"root_sha256":{"description":"Exact SHA-256 digest of root.","pattern":"^[a-f0-9]{64}$","type":"string"},"schema":{"const":"HistoricalSourceGraph/v1","description":"Value for schema.","type":"string"},"vcs":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"dirty":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for dirty."},"head":{"description":"Value for head.","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$","type":"string"},"kind":{"const":"git","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"},{"additionalProperties":false,"properties":{"dirty":{"description":"Value for dirty.","type":"null"},"head":{"description":"Value for head.","type":"null"},"kind":{"const":"none","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"},{"additionalProperties":false,"properties":{"dirty":{"description":"Value for dirty.","type":"null"},"head":{"description":"Value for head.","type":"null"},"kind":{"const":"unknown","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"}]},{"type":"null"}],"description":"Value for vcs."}},"required":["schema","authority","root_alias","root_sha256","inventory_state","entries","relationships","parse_failures","exclusions","languages","manifests","vcs","provenance","limitations"],"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["reference","application"],"type":"object"},{"additionalProperties":false,"properties":{"application_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"limits":{"additionalProperties":false,"default":{"max_application_nodes":20000,"max_candidate_evaluations":1000000,"max_candidate_nodes":100,"max_source_files":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_application_nodes":{"default":20000,"description":"Maximum permitted application nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_candidate_evaluations":{"default":1000000,"description":"Maximum permitted candidate evaluations for this operation.","maximum":10000000,"minimum":1,"type":"integer"},"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_source_files":{"default":10000,"description":"Maximum permitted source files for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"reference":{"additionalProperties":false,"description":"Value for reference.","properties":{"authority":{"const":"historical-reference","description":"Value for authority.","type":"string"},"entries":{"description":"Value for entries.","items":{"oneOf":[{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"content_state":{"description":"Value for content state.","enum":["hashed","redacted-secret","excluded","unreadable","too-large","unknown"],"type":"string"},"kind":{"const":"file","description":"Value for kind.","type":"string"},"language":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for language."},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for sha256."},"size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for size."}},"required":["path","classifications","limitations","kind","sha256","size","language","content_state"],"type":"object"},{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"kind":{"const":"directory","description":"Value for kind.","type":"string"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"tree_state":{"description":"Value for tree state.","enum":["enumerated","partial","excluded","unreadable","unknown"],"type":"string"}},"required":["path","classifications","limitations","kind","tree_state"],"type":"object"},{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"kind":{"const":"symlink","description":"Value for kind.","type":"string"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"target":{"description":"Value for target.","maxLength":4096,"minLength":1,"type":"string"},"target_state":{"description":"Value for target state.","enum":["internal","external","missing","unreadable","unknown"],"type":"string"}},"required":["path","classifications","limitations","kind","target","target_state"],"type":"object"}]},"maxItems":100000,"type":"array"},"exclusions":{"description":"Value for exclusions.","items":{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"reason":{"description":"Value for reason.","enum":["configured-secret","symlink-escape","size-limit","inventory-limit","unreadable","caller-excluded"],"type":"string"}},"required":["path","reason"],"type":"object"},"maxItems":100000,"type":"array"},"inventory_state":{"description":"Value for inventory state.","enum":["complete","partial","unknown"],"type":"string"},"languages":{"description":"Value for languages.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"manifests":{"description":"Value for manifests.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":10000,"type":"array"},"parse_failures":{"description":"Value for parse failures.","items":{"additionalProperties":false,"properties":{"parser":{"description":"Value for parser.","maxLength":100,"minLength":1,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"}},"required":["path","parser","reason"],"type":"object"},"maxItems":10000,"type":"array"},"provenance":{"additionalProperties":false,"description":"Value for provenance.","properties":{"caller":{"description":"Value for caller.","maxLength":200,"minLength":1,"pattern":"^[\\\\w .:@/+-]+$","type":"string"},"importer":{"description":"Value for importer.","maxLength":100,"minLength":1,"type":"string"},"importer_version":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for importer version."}},"required":["importer","importer_version","caller"],"type":"object"},"relationships":{"description":"Value for relationships.","items":{"additionalProperties":false,"properties":{"from_path":{"description":"Local filesystem path for from.","maxLength":4096,"minLength":1,"type":"string"},"kind":{"description":"Value for kind.","enum":["imports","requires","references","declares-module"],"type":"string"},"parse_state":{"description":"Value for parse state.","enum":["parsed","partial","unknown"],"type":"string"},"resolution":{"description":"Value for resolution.","enum":["internal","external","unresolved","unknown"],"type":"string"},"to":{"description":"Value for to.","maxLength":4096,"minLength":1,"type":"string"}},"required":["from_path","to","kind","resolution","parse_state"],"type":"object"},"maxItems":200000,"type":"array"},"root_alias":{"const":"$REFERENCE_ROOT","description":"Value for root alias.","type":"string"},"root_sha256":{"description":"Exact SHA-256 digest of root.","pattern":"^[a-f0-9]{64}$","type":"string"},"schema":{"const":"HistoricalSourceGraph/v1","description":"Value for schema.","type":"string"},"vcs":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"dirty":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for dirty."},"head":{"description":"Value for head.","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$","type":"string"},"kind":{"const":"git","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"},{"additionalProperties":false,"properties":{"dirty":{"description":"Value for dirty.","type":"null"},"head":{"description":"Value for head.","type":"null"},"kind":{"const":"none","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"},{"additionalProperties":false,"properties":{"dirty":{"description":"Value for dirty.","type":"null"},"head":{"description":"Value for head.","type":"null"},"kind":{"const":"unknown","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"}]},{"type":"null"}],"description":"Value for vcs."}},"required":["schema","authority","root_alias","root_sha256","inventory_state","entries","relationships","parse_failures","exclusions","languages","manifests","vcs","provenance","limitations"],"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["reference","application_evidence_id"],"type":"object"}],"examples":[{"application_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","reference":{"authority":"historical-reference","entries":[{"classifications":["source"],"kind":"directory","limitations":[],"path":"src","tree_state":"enumerated"},{"classifications":["source"],"content_state":"hashed","kind":"file","language":"TypeScript","limitations":[],"path":"src/main.ts","sha256":"2222222222222222222222222222222222222222222222222222222222222222","size":128}],"exclusions":[],"inventory_state":"complete","languages":["TypeScript"],"limitations":[],"manifests":[],"parse_failures":[],"provenance":{"caller":"contract-example","importer":"rea","importer_version":"1"},"relationships":[],"root_alias":"$REFERENCE_ROOT","root_sha256":"683969414c3e674a368392213c78021322fb39609b0c57f346b22da6464b2110","schema":"HistoricalSourceGraph/v1","vcs":{"dirty":null,"head":null,"kind":"none"}}}],"type":"object"},"kind":"application","name":"compare_source_to_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"application":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["evidence_id","graph_id","root_artifact_sha256"],"type":"object"},"comparison_id":{"pattern":"^stbc_[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"application_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"candidate_evaluations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_application_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_candidate_evaluations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_candidate_references":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_source_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_unmapped_current_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reference_inventory_state":{"enum":["complete","partial","unknown"],"type":"string"},"retained_application_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_source_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"}},"required":["status","reference_inventory_state","application_graph_status","retained_source_files","omitted_source_files","retained_application_nodes","omitted_application_nodes","candidate_evaluations","omitted_candidate_evaluations","omitted_candidate_references","omitted_unmapped_current_nodes"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1,"minItems":1,"type":"array"},"items":{"items":{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"confidence":{"enum":["exact","high","medium","low"],"type":"string"},"current_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"current_node_kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"score":{"maximum":300,"minimum":1,"type":"integer"},"signals":{"items":{"additionalProperties":false,"properties":{"current_values":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":64,"minItems":1,"type":"array"},"kind":{"enum":["exact-source-digest","source-map-original-path","current-path-exact","current-path-suffix","basename-match","language-extension"],"type":"string"},"source_value":{"maxLength":4096,"minLength":1,"type":"string"},"weight":{"maximum":100,"minimum":1,"type":"integer"}},"required":["kind","weight","source_value","current_values"],"type":"object"},"maxItems":6,"minItems":1,"type":"array"}},"required":["current_node_id","current_node_kind","score","confidence","signals"],"type":"object"},"maxItems":1000,"type":"array"},"confidence":{"enum":["exact","high","medium","unknown"],"type":"string"},"current_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"mapping_id":{"pattern":"^stbc_item_[a-f0-9]{64}$","type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source_language":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]},"source_path":{"maxLength":4096,"minLength":1,"type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"enum":["unchanged","modified","removed","split","merged","duplicated","unknown"],"type":"string"}},"required":["mapping_id","source_path","source_sha256","source_language","status","confidence","current_node_ids","candidates","omitted_candidates","limitations"],"type":"object"},"maxItems":100000,"type":"array"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"reference":{"additionalProperties":false,"properties":{"inventory_state":{"enum":["complete","partial","unknown"],"type":"string"},"root_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["root_sha256","inventory_state"],"type":"object"},"schema_version":{"const":1,"type":"number"},"scoring":{"additionalProperties":false,"properties":{"algorithm":{"const":"rea-source-to-bundle-signals/v1","type":"string"},"minimum_candidate_score":{"const":20,"type":"number"},"weights":{"items":{"additionalProperties":false,"properties":{"signal":{"enum":["exact-source-digest","source-map-original-path","current-path-exact","current-path-suffix","basename-match","language-extension"],"type":"string"},"weight":{"maximum":100,"minimum":1,"type":"integer"}},"required":["signal","weight"],"type":"object"},"type":"array"}},"required":["algorithm","minimum_candidate_score","weights"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"duplicated":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"merged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modified":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"split":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unchanged","modified","removed","split","merged","duplicated","unknown"],"type":"object"},"unmapped_current_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":100000,"type":"array"}},"required":["schema_version","comparison_id","reference","application","scoring","summary","items","unmapped_current_node_ids","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Compare Source To Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare bounded static return shapes for one exact module/export selector on each authenticated JavaScript Application Graph, supplied as full Evidence or session Evidence IDs. Variants pair only by reciprocal unique literal discriminants; dynamic values, incomplete properties, and ambiguous variants remain unknown. Reports JSON Pointer changes and recommends controlled replay separately without executing JavaScript.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"left_export_name":{"description":"Value for left export name.","maxLength":4096,"minLength":1,"type":"string"},"left_module_path":{"description":"Local filesystem path for left module.","maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_candidate_exports":100,"max_changes":1000,"max_return_variants":128},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_exports":{"default":100,"description":"Maximum permitted candidate exports for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_changes":{"default":1000,"description":"Maximum permitted changes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_return_variants":{"default":128,"description":"Maximum permitted return variants for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"right_export_name":{"description":"Value for right export name.","maxLength":4096,"minLength":1,"type":"string"},"right_module_path":{"description":"Local filesystem path for right module.","maxLength":4096,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_module_path","left_export_name","right_module_path","right_export_name","left","right"],"type":"object"},{"additionalProperties":false,"properties":{"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"left_export_name":{"description":"Value for left export name.","maxLength":4096,"minLength":1,"type":"string"},"left_module_path":{"description":"Local filesystem path for left module.","maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_candidate_exports":100,"max_changes":1000,"max_return_variants":128},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_exports":{"default":100,"description":"Maximum permitted candidate exports for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_changes":{"default":1000,"description":"Maximum permitted changes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_return_variants":{"default":128,"description":"Maximum permitted return variants for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"right_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"right_export_name":{"description":"Value for right export name.","maxLength":4096,"minLength":1,"type":"string"},"right_module_path":{"description":"Local filesystem path for right module.","maxLength":4096,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_module_path","left_export_name","right_module_path","right_export_name","left","right_evidence_id"],"type":"object"},{"additionalProperties":false,"properties":{"left_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"left_export_name":{"description":"Value for left export name.","maxLength":4096,"minLength":1,"type":"string"},"left_module_path":{"description":"Local filesystem path for left module.","maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_candidate_exports":100,"max_changes":1000,"max_return_variants":128},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_exports":{"default":100,"description":"Maximum permitted candidate exports for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_changes":{"default":1000,"description":"Maximum permitted changes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_return_variants":{"default":128,"description":"Maximum permitted return variants for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"right_export_name":{"description":"Value for right export name.","maxLength":4096,"minLength":1,"type":"string"},"right_module_path":{"description":"Local filesystem path for right module.","maxLength":4096,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_module_path","left_export_name","right_module_path","right_export_name","left_evidence_id","right"],"type":"object"},{"additionalProperties":false,"properties":{"left_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"left_export_name":{"description":"Value for left export name.","maxLength":4096,"minLength":1,"type":"string"},"left_module_path":{"description":"Local filesystem path for left module.","maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_candidate_exports":100,"max_changes":1000,"max_return_variants":128},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_exports":{"default":100,"description":"Maximum permitted candidate exports for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_changes":{"default":1000,"description":"Maximum permitted changes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_return_variants":{"default":128,"description":"Maximum permitted return variants for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"right_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"right_export_name":{"description":"Value for right export name.","maxLength":4096,"minLength":1,"type":"string"},"right_module_path":{"description":"Local filesystem path for right module.","maxLength":4096,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_module_path","left_export_name","right_module_path","right_export_name","left_evidence_id","right_evidence_id"],"type":"object"}],"examples":[{"left_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","left_export_name":"default","left_module_path":"parser.mjs","right_evidence_id":"ev_1111111111111111111111111111111111111111111111111111111111111111","right_export_name":"default","right_module_path":"parser.mjs"}],"type":"object"},"kind":"application","name":"compare_javascript_export_shapes","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change_id":{"pattern":"^jesc_change_[a-f0-9]{64}$","type":"string"},"discriminant":{"anyOf":[{"additionalProperties":false,"properties":{"path":{"maxLength":4096,"type":"string"},"value":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"required":["path","value"],"type":"object"},{"type":"null"}]},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"left":{"oneOf":[{"additionalProperties":false,"properties":{"availability":{"const":"absent","type":"string"}},"required":["availability"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"literal","type":"string"},"value":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"required":["availability","value"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"union","type":"string"},"values":{"items":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"maxItems":32,"minItems":1,"type":"array"}},"required":["availability","values"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"unknown","type":"string"},"reason":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["availability","reason"],"type":"object"}]},"left_source_range":{"anyOf":[{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["start","end"],"type":"object"},{"type":"null"}]},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"path":{"maxLength":4096,"type":"string"},"right":{"oneOf":[{"additionalProperties":false,"properties":{"availability":{"const":"absent","type":"string"}},"required":["availability"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"literal","type":"string"},"value":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"required":["availability","value"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"union","type":"string"},"values":{"items":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"maxItems":32,"minItems":1,"type":"array"}},"required":["availability","values"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"unknown","type":"string"},"reason":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["availability","reason"],"type":"object"}]},"right_source_range":{"anyOf":[{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["start","end"],"type":"object"},{"type":"null"}]},"status":{"enum":["added","removed","changed","unknown"],"type":"string"}},"required":["change_id","status","path","discriminant","left","right","left_source_range","right_source_range","evidence_links","limitations"],"type":"object"},"maxItems":10000,"type":"array"},"comparison_id":{"pattern":"^jesc_[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"left_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"left_omitted_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"left_omitted_property_coverage":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"left_source_omitted_variants":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_left_variants":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_right_variants":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paired_variants":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"right_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"right_omitted_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"right_omitted_property_coverage":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"right_source_omitted_variants":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"},"unpaired_left_variants":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unpaired_right_variants":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","left_graph_status","right_graph_status","paired_variants","unpaired_left_variants","unpaired_right_variants","omitted_left_variants","omitted_right_variants","left_source_omitted_variants","right_source_omitted_variants","left_omitted_fields","right_omitted_fields","left_omitted_property_coverage","right_omitted_property_coverage","omitted_candidates","omitted_changes"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"left":{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"export_name":{"maxLength":4096,"minLength":1,"type":"string"},"matches_requested_export":{"type":"boolean"},"matches_requested_module":{"type":"boolean"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["node_id","module_path","export_name","matches_requested_module","matches_requested_export"],"type":"object"},"maxItems":1000,"type":"array"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"requested_export_name":{"maxLength":4096,"minLength":1,"type":"string"},"requested_module_path":{"maxLength":4096,"minLength":1,"type":"string"},"selected_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"enum":["selected","missing","ambiguous","unavailable"],"type":"string"}},"required":["evidence_id","graph_id","requested_module_path","requested_export_name","status","selected_node_id","candidates","omitted_candidates"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"right":{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"export_name":{"maxLength":4096,"minLength":1,"type":"string"},"matches_requested_export":{"type":"boolean"},"matches_requested_module":{"type":"boolean"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["node_id","module_path","export_name","matches_requested_module","matches_requested_export"],"type":"object"},"maxItems":1000,"type":"array"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"requested_export_name":{"maxLength":4096,"minLength":1,"type":"string"},"requested_module_path":{"maxLength":4096,"minLength":1,"type":"string"},"selected_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"enum":["selected","missing","ambiguous","unavailable"],"type":"string"}},"required":["evidence_id","graph_id","requested_module_path","requested_export_name","status","selected_node_id","candidates","omitted_candidates"],"type":"object"},"runtime_validation":{"additionalProperties":false,"properties":{"automatically_started":{"const":false,"type":"boolean"},"recommended_tool":{"const":"run_controlled_replay","type":"string"},"required_for":{"const":"runtime-semantics","type":"string"}},"required":["recommended_tool","automatically_started","required_for"],"type":"object"},"schema_version":{"const":1,"type":"number"},"summary":{"additionalProperties":false,"properties":{"added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["added","removed","changed","unknown"],"type":"object"}},"required":["schema_version","comparison_id","left","right","summary","changes","coverage","evidence_links","limitations","runtime_validation"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Compare Javascript Export Shapes"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Plan or execute a content-bound extracted-module JavaScript replay inside the Linux Bubblewrap, seccomp, and cgroup boundary. Execution requires approved: true and the exact plan digest. Supports deterministic boundary cases and optional left/right differential comparison; observations have controlled-replay authority and do not claim real application runtime behavior.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"cases":[{"arguments":[""],"case_id":"empty"}],"determinism":{"clock_iso":"2000-01-01T00:00:00.000Z","locale":"en-US","platform":"linux","random_seed":0,"timezone":"UTC"},"left":{"entry_alias":"parser","entry_export":"default","modules":[{"alias":"parser","dependencies":{},"format":"esm","path":"/approved/parser.mjs","role":"module"}]},"limits":{"cpu_quota_percent":50,"input_bytes":262144,"memory_bytes":134217728,"module_bytes":4194304,"output_bytes":524288,"protocol_bytes":16777216,"result_depth":16,"result_nodes":10000,"stderr_bytes":32768,"tasks":8,"tmpfs_bytes":16777216,"wall_time_ms":3000},"mode":"plan"}],"oneOf":[{"additionalProperties":false,"properties":{"cases":{"default":[],"description":"Value for cases.","items":{"additionalProperties":false,"properties":{"arguments":{"description":"Value for arguments.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"type":"array"},"case_id":{"description":"Value for case id.","maxLength":128,"minLength":1,"type":"string"}},"required":["case_id","arguments"],"type":"object"},"maxItems":128,"type":"array"},"determinism":{"additionalProperties":false,"default":{"clock_iso":"2000-01-01T00:00:00.000Z","locale":"en-US","platform":"linux","random_seed":0,"timezone":"UTC"},"description":"Value for determinism.","properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","description":"Value for clock iso.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","description":"Value for locale.","type":"string"},"platform":{"const":"linux","default":"linux","description":"Value for platform.","type":"string"},"random_seed":{"default":0,"description":"Value for random seed.","maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","description":"Value for timezone.","type":"string"}},"type":"object"},"generator":{"additionalProperties":false,"description":"Value for generator.","properties":{"count":{"description":"Value for count.","maximum":64,"minimum":1,"type":"integer"},"preset":{"description":"Value for preset.","enum":["parser-boundaries","sanitizer-boundaries","clipboard-boundaries"],"type":"string"},"seed":{"description":"Value for seed.","maximum":4294967295,"minimum":0,"type":"integer"}},"required":["preset","seed","count"],"type":"object"},"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"},"limits":{"additionalProperties":false,"default":{"cpu_quota_percent":50,"input_bytes":262144,"memory_bytes":134217728,"module_bytes":4194304,"output_bytes":524288,"protocol_bytes":16777216,"result_depth":16,"result_nodes":10000,"stderr_bytes":32768,"tasks":8,"tmpfs_bytes":16777216,"wall_time_ms":3000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"cpu_quota_percent":{"default":50,"description":"Value for cpu quota percent.","maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"description":"Bounded byte count for input.","maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"description":"Bounded byte count for memory.","maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"description":"Bounded byte count for module.","maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"description":"Bounded byte count for output.","maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"description":"Bounded byte count for protocol.","maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"description":"Value for result depth.","maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"description":"Value for result nodes.","maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"description":"Bounded byte count for stderr.","maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"description":"Value for tasks.","maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"description":"Bounded byte count for tmpfs.","maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"description":"Value for wall time ms.","maximum":10000,"minimum":100,"type":"integer"}},"type":"object"},"mode":{"const":"plan","description":"Operation mode that selects the requested behavior.","type":"string"},"reproducer_export":{"additionalProperties":false,"description":"Value for reproducer export.","properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"include_sources":{"default":false,"description":"Whether to include sources in the result.","type":"boolean"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"}},"required":["path","approved"],"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"}},"required":["left","mode"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cases":{"default":[],"description":"Value for cases.","items":{"additionalProperties":false,"properties":{"arguments":{"description":"Value for arguments.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"type":"array"},"case_id":{"description":"Value for case id.","maxLength":128,"minLength":1,"type":"string"}},"required":["case_id","arguments"],"type":"object"},"maxItems":128,"type":"array"},"determinism":{"additionalProperties":false,"default":{"clock_iso":"2000-01-01T00:00:00.000Z","locale":"en-US","platform":"linux","random_seed":0,"timezone":"UTC"},"description":"Value for determinism.","properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","description":"Value for clock iso.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","description":"Value for locale.","type":"string"},"platform":{"const":"linux","default":"linux","description":"Value for platform.","type":"string"},"random_seed":{"default":0,"description":"Value for random seed.","maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","description":"Value for timezone.","type":"string"}},"type":"object"},"generator":{"additionalProperties":false,"description":"Value for generator.","properties":{"count":{"description":"Value for count.","maximum":64,"minimum":1,"type":"integer"},"preset":{"description":"Value for preset.","enum":["parser-boundaries","sanitizer-boundaries","clipboard-boundaries"],"type":"string"},"seed":{"description":"Value for seed.","maximum":4294967295,"minimum":0,"type":"integer"}},"required":["preset","seed","count"],"type":"object"},"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"},"limits":{"additionalProperties":false,"default":{"cpu_quota_percent":50,"input_bytes":262144,"memory_bytes":134217728,"module_bytes":4194304,"output_bytes":524288,"protocol_bytes":16777216,"result_depth":16,"result_nodes":10000,"stderr_bytes":32768,"tasks":8,"tmpfs_bytes":16777216,"wall_time_ms":3000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"cpu_quota_percent":{"default":50,"description":"Value for cpu quota percent.","maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"description":"Bounded byte count for input.","maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"description":"Bounded byte count for memory.","maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"description":"Bounded byte count for module.","maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"description":"Bounded byte count for output.","maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"description":"Bounded byte count for protocol.","maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"description":"Value for result depth.","maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"description":"Value for result nodes.","maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"description":"Bounded byte count for stderr.","maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"description":"Value for tasks.","maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"description":"Bounded byte count for tmpfs.","maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"description":"Value for wall time ms.","maximum":10000,"minimum":100,"type":"integer"}},"type":"object"},"mode":{"const":"execute","description":"Operation mode that selects the requested behavior.","type":"string"},"plan_digest":{"description":"Value for plan digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer_export":{"additionalProperties":false,"description":"Value for reproducer export.","properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"include_sources":{"default":false,"description":"Whether to include sources in the result.","type":"boolean"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"}},"required":["path","approved"],"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"}},"required":["left","mode","approved","plan_digest"],"type":"object"}],"type":"object"},"kind":"application","name":"run_controlled_replay","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema2":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema2"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema2"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"additionalProperties":false,"properties":{"evidence":{"type":"null"},"phase":{"const":"plan","type":"string"},"plan":{"additionalProperties":false,"properties":{"cases":{"items":{"additionalProperties":false,"properties":{"arguments":{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},"case_id":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["case_id","arguments","sha256"],"type":"object"},"type":"array"},"determinism":{"additionalProperties":false,"properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","type":"string"},"platform":{"const":"linux","default":"linux","type":"string"},"random_seed":{"default":0,"maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","type":"string"}},"required":["clock_iso","random_seed","locale","timezone","platform"],"type":"object"},"effects":{"items":{"type":"string"},"type":"array"},"filesystem":{"additionalProperties":false,"properties":{"host_writes":{"const":false,"type":"boolean"},"private_tmpfs_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["host_writes","private_tmpfs_bytes"],"type":"object"},"left":{"additionalProperties":false,"properties":{"entry_alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"type":"string"},"modules":{"items":{"additionalProperties":false,"properties":{"alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"byte_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"canonical_path":{"minLength":1,"type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"propertyNames":{"type":"string"},"type":"object"},"format":{"enum":["esm","commonjs-factory"],"type":"string"},"role":{"enum":["module","stub"],"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["alias","canonical_path","format","role","byte_count","sha256","dependencies"],"type":"object"},"type":"array"}},"required":["modules","entry_alias","entry_export"],"type":"object"},"limits":{"additionalProperties":false,"properties":{"cpu_quota_percent":{"default":50,"maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"maximum":10000,"minimum":100,"type":"integer"}},"required":["wall_time_ms","memory_bytes","tasks","cpu_quota_percent","tmpfs_bytes","module_bytes","input_bytes","protocol_bytes","output_bytes","stderr_bytes","result_depth","result_nodes"],"type":"object"},"network":{"const":"none","type":"string"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"policy_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"policy_version":{"const":"linux-bwrap-systemd-v1","type":"string"},"reproducer_export":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"const":"evidence_write","type":"string"},"include_sources":{"type":"boolean"},"path":{"minLength":1,"type":"string"}},"required":["path","include_sources","authority"],"type":"object"},{"type":"null"}]},"right":{"additionalProperties":false,"properties":{"entry_alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"type":"string"},"modules":{"items":{"additionalProperties":false,"properties":{"alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"byte_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"canonical_path":{"minLength":1,"type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"propertyNames":{"type":"string"},"type":"object"},"format":{"enum":["esm","commonjs-factory"],"type":"string"},"role":{"enum":["module","stub"],"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["alias","canonical_path","format","role","byte_count","sha256","dependencies"],"type":"object"},"type":"array"}},"required":["modules","entry_alias","entry_export"],"type":"object"},"runtime":{"additionalProperties":false,"properties":{"executable":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"read_only_files":{"items":{"additionalProperties":false,"properties":{"destination_path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_path":{"minLength":1,"type":"string"}},"required":["source_path","destination_path","sha256"],"type":"object"},"minItems":1,"type":"array"},"worker":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"}},"required":["executable","worker","read_only_files"],"type":"object"},"sandbox":{"additionalProperties":false,"properties":{"bubblewrap":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"seccomp_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"shell":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"systemctl":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"systemd_run":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"}},"required":["bubblewrap","systemd_run","systemctl","shell","seccomp_sha256"],"type":"object"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","plan_digest","policy_version","policy_sha256","network","filesystem","runtime","sandbox","left","cases","determinism","limits","effects","reproducer_export"],"type":"object"},"source_evidence":{"items":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema2"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema1"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"maxItems":0,"minItems":0,"type":"array"}},"required":["phase","plan","source_evidence","evidence"],"type":"object"},{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema2"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema1"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"phase":{"const":"execute","type":"string"},"plan":{"type":"null"},"source_evidence":{"items":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema2"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema1"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"minItems":1,"type":"array"}},"required":["phase","plan","source_evidence","evidence"],"type":"object"}],"type":"object"},"requiresSession":false,"title":"Run Controlled Replay"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Prepare a hash-bound Node/JavaScript characterization plan and deterministic reversible export transformation without executing target code. The exact source, selected byte range, runtime closure, sandbox profile, cases, and limits are committed for separate execution approval.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"expected_effect":"pure","instrumentation":{"artifact_path":"/approved/bundle.js","artifact_sha256":"0000000000000000000000000000000000000000000000000000000000000000","selection":{"byte_end":120,"byte_start":100,"export_name":"selected","selected_sha256":"0000000000000000000000000000000000000000000000000000000000000000"}},"preparation_approved":true,"replay":{"cases":[{"arguments":[""],"case_id":"empty"}],"left":{"entry_alias":"bundle","entry_export":"selected","modules":[{"alias":"bundle","dependencies":{},"format":"commonjs-factory","path":"/approved/bundle.js","role":"module"}]},"mode":"plan"},"selected_alias":"bundle"}],"properties":{"expected_effect":{"description":"Expected effect used to reject stale or mismatched input.","enum":["pure","observation-only"],"type":"string"},"instrumentation":{"additionalProperties":false,"description":"Value for instrumentation.","properties":{"artifact_path":{"description":"Local filesystem path for artifact.","maxLength":4096,"minLength":1,"type":"string"},"artifact_sha256":{"description":"Exact SHA-256 digest of artifact.","pattern":"^[a-f0-9]{64}$","type":"string"},"selection":{"additionalProperties":false,"description":"Value for selection.","properties":{"byte_end":{"description":"Value for byte end.","maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"description":"Value for byte start.","maximum":9007199254740991,"minimum":0,"type":"integer"},"export_name":{"description":"Value for export name.","pattern":"^[A-Za-z_$][A-Za-z0-9_$]{0,199}$","type":"string"},"selected_sha256":{"description":"Exact SHA-256 digest of selected.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["byte_start","byte_end","selected_sha256","export_name"],"type":"object"}},"required":["artifact_path","artifact_sha256","selection"],"type":"object"},"preparation_approved":{"const":true,"description":"Explicit operator approval for preparation.","type":"boolean"},"replay":{"additionalProperties":false,"description":"Value for replay.","properties":{"cases":{"default":[],"description":"Value for cases.","items":{"additionalProperties":false,"properties":{"arguments":{"description":"Value for arguments.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"type":"array"},"case_id":{"description":"Value for case id.","maxLength":128,"minLength":1,"type":"string"}},"required":["case_id","arguments"],"type":"object"},"maxItems":128,"type":"array"},"determinism":{"additionalProperties":false,"default":{"clock_iso":"2000-01-01T00:00:00.000Z","locale":"en-US","platform":"linux","random_seed":0,"timezone":"UTC"},"description":"Value for determinism.","properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","description":"Value for clock iso.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","description":"Value for locale.","type":"string"},"platform":{"const":"linux","default":"linux","description":"Value for platform.","type":"string"},"random_seed":{"default":0,"description":"Value for random seed.","maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","description":"Value for timezone.","type":"string"}},"type":"object"},"generator":{"additionalProperties":false,"description":"Value for generator.","properties":{"count":{"description":"Value for count.","maximum":64,"minimum":1,"type":"integer"},"preset":{"description":"Value for preset.","enum":["parser-boundaries","sanitizer-boundaries","clipboard-boundaries"],"type":"string"},"seed":{"description":"Value for seed.","maximum":4294967295,"minimum":0,"type":"integer"}},"required":["preset","seed","count"],"type":"object"},"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"},"limits":{"additionalProperties":false,"default":{"cpu_quota_percent":50,"input_bytes":262144,"memory_bytes":134217728,"module_bytes":4194304,"output_bytes":524288,"protocol_bytes":16777216,"result_depth":16,"result_nodes":10000,"stderr_bytes":32768,"tasks":8,"tmpfs_bytes":16777216,"wall_time_ms":3000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"cpu_quota_percent":{"default":50,"description":"Value for cpu quota percent.","maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"description":"Bounded byte count for input.","maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"description":"Bounded byte count for memory.","maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"description":"Bounded byte count for module.","maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"description":"Bounded byte count for output.","maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"description":"Bounded byte count for protocol.","maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"description":"Value for result depth.","maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"description":"Value for result nodes.","maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"description":"Bounded byte count for stderr.","maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"description":"Value for tasks.","maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"description":"Bounded byte count for tmpfs.","maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"description":"Value for wall time ms.","maximum":10000,"minimum":100,"type":"integer"}},"type":"object"},"mode":{"const":"plan","description":"Operation mode that selects the requested behavior.","type":"string"},"reproducer_export":{"additionalProperties":false,"description":"Value for reproducer export.","properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"include_sources":{"default":false,"description":"Whether to include sources in the result.","type":"boolean"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"}},"required":["path","approved"],"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"}},"required":["left","mode"],"type":"object"},"selected_alias":{"description":"Value for selected alias.","maxLength":200,"minLength":1,"type":"string"}},"required":["preparation_approved","selected_alias","expected_effect","instrumentation","replay"],"type":"object"},"kind":"application","name":"prepare_node_characterization","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema2":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema2"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema2"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"phase":{"const":"preparation","type":"string"},"plan":{"additionalProperties":false,"properties":{"allowed_boundaries":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"artifact":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","sha256","byte_length"],"type":"object"},"authority":{"additionalProperties":false,"properties":{"execution_approved":{"const":false,"type":"boolean"},"network":{"enum":["none","loopback"],"type":"string"},"preparation_approved":{"const":true,"type":"boolean"},"provider_owned_process_only":{"const":true,"type":"boolean"}},"required":["preparation_approved","execution_approved","network","provider_owned_process_only"],"type":"object"},"callable":{"additionalProperties":false,"properties":{"callable_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"export_name":{"maxLength":1000,"minLength":1,"type":"string"},"module_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"selector_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"semantic_evidence_id":{"anyOf":[{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["callable_id","module_id","export_name","semantic_evidence_id","selector_sha256"],"type":"object"},"determinism":{"additionalProperties":false,"properties":{"clock":{"enum":["fixed","real"],"type":"string"},"identifiers":{"enum":["deterministic","runtime"],"type":"string"},"randomness":{"enum":["seeded","system"],"type":"string"},"seed":{"maximum":4294967295,"minimum":0,"type":"integer"}},"required":["clock","randomness","identifiers","seed"],"type":"object"},"expected_effect":{"enum":["pure","observation-only"],"type":"string"},"isolated_home":{"maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"properties":{"idle_timeout_ms":{"maximum":300000,"minimum":1,"type":"integer"},"max_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_calls":{"maximum":10000,"minimum":1,"type":"integer"},"max_files":{"maximum":100000,"minimum":0,"type":"integer"},"max_handles":{"maximum":100000,"minimum":0,"type":"integer"},"max_processes":{"maximum":1000,"minimum":0,"type":"integer"},"timeout_ms":{"maximum":300000,"minimum":1,"type":"integer"}},"required":["max_calls","max_processes","max_files","max_bytes","max_handles","timeout_ms","idle_timeout_ms"],"type":"object"},"plan_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"preparation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime":{"additionalProperties":false,"properties":{"executable_path":{"maxLength":4096,"minLength":1,"type":"string"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"family":{"maxLength":100,"minLength":1,"type":"string"},"profile_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"provider_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"version":{"maxLength":500,"minLength":1,"type":"string"}},"required":["family","provider_id","executable_path","executable_sha256","version","profile_sha256"],"type":"object"},"schema_version":{"const":1,"type":"number"},"working_directory":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["schema_version","plan_sha256","preparation_sha256","artifact","runtime","callable","working_directory","isolated_home","expected_effect","allowed_boundaries","limits","determinism","authority"],"type":"object"},"replay":{"additionalProperties":false,"properties":{"evidence":{"type":"null"},"phase":{"const":"plan","type":"string"},"plan":{"additionalProperties":false,"properties":{"cases":{"items":{"additionalProperties":false,"properties":{"arguments":{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},"case_id":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["case_id","arguments","sha256"],"type":"object"},"type":"array"},"determinism":{"additionalProperties":false,"properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","type":"string"},"platform":{"const":"linux","default":"linux","type":"string"},"random_seed":{"default":0,"maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","type":"string"}},"required":["clock_iso","random_seed","locale","timezone","platform"],"type":"object"},"effects":{"items":{"type":"string"},"type":"array"},"filesystem":{"additionalProperties":false,"properties":{"host_writes":{"const":false,"type":"boolean"},"private_tmpfs_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["host_writes","private_tmpfs_bytes"],"type":"object"},"left":{"additionalProperties":false,"properties":{"entry_alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"type":"string"},"modules":{"items":{"additionalProperties":false,"properties":{"alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"byte_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"canonical_path":{"minLength":1,"type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"propertyNames":{"type":"string"},"type":"object"},"format":{"enum":["esm","commonjs-factory"],"type":"string"},"role":{"enum":["module","stub"],"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["alias","canonical_path","format","role","byte_count","sha256","dependencies"],"type":"object"},"type":"array"}},"required":["modules","entry_alias","entry_export"],"type":"object"},"limits":{"additionalProperties":false,"properties":{"cpu_quota_percent":{"default":50,"maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"maximum":10000,"minimum":100,"type":"integer"}},"required":["wall_time_ms","memory_bytes","tasks","cpu_quota_percent","tmpfs_bytes","module_bytes","input_bytes","protocol_bytes","output_bytes","stderr_bytes","result_depth","result_nodes"],"type":"object"},"network":{"const":"none","type":"string"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"policy_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"policy_version":{"const":"linux-bwrap-systemd-v1","type":"string"},"reproducer_export":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"const":"evidence_write","type":"string"},"include_sources":{"type":"boolean"},"path":{"minLength":1,"type":"string"}},"required":["path","include_sources","authority"],"type":"object"},{"type":"null"}]},"right":{"additionalProperties":false,"properties":{"entry_alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"type":"string"},"modules":{"items":{"additionalProperties":false,"properties":{"alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"byte_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"canonical_path":{"minLength":1,"type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"propertyNames":{"type":"string"},"type":"object"},"format":{"enum":["esm","commonjs-factory"],"type":"string"},"role":{"enum":["module","stub"],"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["alias","canonical_path","format","role","byte_count","sha256","dependencies"],"type":"object"},"type":"array"}},"required":["modules","entry_alias","entry_export"],"type":"object"},"runtime":{"additionalProperties":false,"properties":{"executable":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"read_only_files":{"items":{"additionalProperties":false,"properties":{"destination_path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_path":{"minLength":1,"type":"string"}},"required":["source_path","destination_path","sha256"],"type":"object"},"minItems":1,"type":"array"},"worker":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"}},"required":["executable","worker","read_only_files"],"type":"object"},"sandbox":{"additionalProperties":false,"properties":{"bubblewrap":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"seccomp_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"shell":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"systemctl":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"systemd_run":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"}},"required":["bubblewrap","systemd_run","systemctl","shell","seccomp_sha256"],"type":"object"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","plan_digest","policy_version","policy_sha256","network","filesystem","runtime","sandbox","left","cases","determinism","limits","effects","reproducer_export"],"type":"object"},"source_evidence":{"items":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema2"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"maxItems":0,"minItems":0,"type":"array"}},"required":["phase","plan","source_evidence","evidence"],"type":"object"},"schema_version":{"const":1,"type":"number"},"transformation":{"additionalProperties":false,"properties":{"artifact_path":{"maxLength":4096,"minLength":1,"type":"string"},"inserted_ranges":{"items":{"additionalProperties":false,"properties":{"byte_end":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"inserted_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"purpose":{"enum":["factory-prefix","export-binding","factory-suffix"],"type":"string"}},"required":["byte_start","byte_end","inserted_sha256","purpose"],"type":"object"},"maxItems":3,"minItems":3,"type":"array"},"instrumented_byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"instrumented_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"kind":{"const":"commonjs-factory-export-v1","type":"string"},"original_byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"original_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"output_format":{"const":"commonjs-factory","type":"string"},"schema_version":{"const":1,"type":"number"},"selected_range":{"additionalProperties":false,"properties":{"byte_end":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"selected_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["byte_start","byte_end","selected_sha256"],"type":"object"},"source_map":{"const":null,"type":"null"}},"required":["schema_version","kind","artifact_path","original_sha256","original_byte_length","instrumented_sha256","instrumented_byte_length","selected_range","inserted_ranges","output_format","source_map"],"type":"object"},"transformation_evidence":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]}},"required":["schema_version","phase","plan","transformation","transformation_evidence","replay"],"type":"object"},"requiresSession":false,"title":"Prepare Node Characterization"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Recompute and execute one separately approved exact Node characterization plan in the owned controlled-replay boundary. Returns transformation, replay, cleanup, and provider-neutral characterization Evidence v2; stale plans fail before execution.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"approved_plan_sha256":"0000000000000000000000000000000000000000000000000000000000000000","execution_approved":true,"preparation":{"expected_effect":"pure","instrumentation":{"artifact_path":"/approved/bundle.js","artifact_sha256":"0000000000000000000000000000000000000000000000000000000000000000","selection":{"byte_end":120,"byte_start":100,"export_name":"selected","selected_sha256":"0000000000000000000000000000000000000000000000000000000000000000"}},"preparation_approved":true,"replay":{"cases":[{"arguments":[""],"case_id":"empty"}],"left":{"entry_alias":"bundle","entry_export":"selected","modules":[{"alias":"bundle","dependencies":{},"format":"commonjs-factory","path":"/approved/bundle.js","role":"module"}]},"mode":"plan"},"selected_alias":"bundle"}}],"properties":{"approved_plan_sha256":{"description":"Exact SHA-256 digest of approved plan.","pattern":"^[a-f0-9]{64}$","type":"string"},"execution_approved":{"const":true,"description":"Explicit operator approval for execution.","type":"boolean"},"preparation":{"additionalProperties":false,"description":"Value for preparation.","properties":{"expected_effect":{"description":"Expected effect used to reject stale or mismatched input.","enum":["pure","observation-only"],"type":"string"},"instrumentation":{"additionalProperties":false,"description":"Value for instrumentation.","properties":{"artifact_path":{"description":"Local filesystem path for artifact.","maxLength":4096,"minLength":1,"type":"string"},"artifact_sha256":{"description":"Exact SHA-256 digest of artifact.","pattern":"^[a-f0-9]{64}$","type":"string"},"selection":{"additionalProperties":false,"description":"Value for selection.","properties":{"byte_end":{"description":"Value for byte end.","maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"description":"Value for byte start.","maximum":9007199254740991,"minimum":0,"type":"integer"},"export_name":{"description":"Value for export name.","pattern":"^[A-Za-z_$][A-Za-z0-9_$]{0,199}$","type":"string"},"selected_sha256":{"description":"Exact SHA-256 digest of selected.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["byte_start","byte_end","selected_sha256","export_name"],"type":"object"}},"required":["artifact_path","artifact_sha256","selection"],"type":"object"},"preparation_approved":{"const":true,"description":"Explicit operator approval for preparation.","type":"boolean"},"replay":{"additionalProperties":false,"description":"Value for replay.","properties":{"cases":{"default":[],"description":"Value for cases.","items":{"additionalProperties":false,"properties":{"arguments":{"description":"Value for arguments.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"type":"array"},"case_id":{"description":"Value for case id.","maxLength":128,"minLength":1,"type":"string"}},"required":["case_id","arguments"],"type":"object"},"maxItems":128,"type":"array"},"determinism":{"additionalProperties":false,"default":{"clock_iso":"2000-01-01T00:00:00.000Z","locale":"en-US","platform":"linux","random_seed":0,"timezone":"UTC"},"description":"Value for determinism.","properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","description":"Value for clock iso.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","description":"Value for locale.","type":"string"},"platform":{"const":"linux","default":"linux","description":"Value for platform.","type":"string"},"random_seed":{"default":0,"description":"Value for random seed.","maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","description":"Value for timezone.","type":"string"}},"type":"object"},"generator":{"additionalProperties":false,"description":"Value for generator.","properties":{"count":{"description":"Value for count.","maximum":64,"minimum":1,"type":"integer"},"preset":{"description":"Value for preset.","enum":["parser-boundaries","sanitizer-boundaries","clipboard-boundaries"],"type":"string"},"seed":{"description":"Value for seed.","maximum":4294967295,"minimum":0,"type":"integer"}},"required":["preset","seed","count"],"type":"object"},"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"},"limits":{"additionalProperties":false,"default":{"cpu_quota_percent":50,"input_bytes":262144,"memory_bytes":134217728,"module_bytes":4194304,"output_bytes":524288,"protocol_bytes":16777216,"result_depth":16,"result_nodes":10000,"stderr_bytes":32768,"tasks":8,"tmpfs_bytes":16777216,"wall_time_ms":3000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"cpu_quota_percent":{"default":50,"description":"Value for cpu quota percent.","maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"description":"Bounded byte count for input.","maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"description":"Bounded byte count for memory.","maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"description":"Bounded byte count for module.","maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"description":"Bounded byte count for output.","maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"description":"Bounded byte count for protocol.","maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"description":"Value for result depth.","maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"description":"Value for result nodes.","maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"description":"Bounded byte count for stderr.","maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"description":"Value for tasks.","maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"description":"Bounded byte count for tmpfs.","maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"description":"Value for wall time ms.","maximum":10000,"minimum":100,"type":"integer"}},"type":"object"},"mode":{"const":"plan","description":"Operation mode that selects the requested behavior.","type":"string"},"reproducer_export":{"additionalProperties":false,"description":"Value for reproducer export.","properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"include_sources":{"default":false,"description":"Whether to include sources in the result.","type":"boolean"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"}},"required":["path","approved"],"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"}},"required":["left","mode"],"type":"object"},"selected_alias":{"description":"Value for selected alias.","maxLength":200,"minLength":1,"type":"string"}},"required":["preparation_approved","selected_alias","expected_effect","instrumentation","replay"],"type":"object"}},"required":["execution_approved","approved_plan_sha256","preparation"],"type":"object"},"kind":"application","name":"execute_node_characterization","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]},"phase":{"const":"execution","type":"string"},"plan":{"additionalProperties":false,"properties":{"allowed_boundaries":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"artifact":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","sha256","byte_length"],"type":"object"},"authority":{"additionalProperties":false,"properties":{"execution_approved":{"const":false,"type":"boolean"},"network":{"enum":["none","loopback"],"type":"string"},"preparation_approved":{"const":true,"type":"boolean"},"provider_owned_process_only":{"const":true,"type":"boolean"}},"required":["preparation_approved","execution_approved","network","provider_owned_process_only"],"type":"object"},"callable":{"additionalProperties":false,"properties":{"callable_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"export_name":{"maxLength":1000,"minLength":1,"type":"string"},"module_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"selector_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"semantic_evidence_id":{"anyOf":[{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["callable_id","module_id","export_name","semantic_evidence_id","selector_sha256"],"type":"object"},"determinism":{"additionalProperties":false,"properties":{"clock":{"enum":["fixed","real"],"type":"string"},"identifiers":{"enum":["deterministic","runtime"],"type":"string"},"randomness":{"enum":["seeded","system"],"type":"string"},"seed":{"maximum":4294967295,"minimum":0,"type":"integer"}},"required":["clock","randomness","identifiers","seed"],"type":"object"},"expected_effect":{"enum":["pure","observation-only"],"type":"string"},"isolated_home":{"maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"properties":{"idle_timeout_ms":{"maximum":300000,"minimum":1,"type":"integer"},"max_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_calls":{"maximum":10000,"minimum":1,"type":"integer"},"max_files":{"maximum":100000,"minimum":0,"type":"integer"},"max_handles":{"maximum":100000,"minimum":0,"type":"integer"},"max_processes":{"maximum":1000,"minimum":0,"type":"integer"},"timeout_ms":{"maximum":300000,"minimum":1,"type":"integer"}},"required":["max_calls","max_processes","max_files","max_bytes","max_handles","timeout_ms","idle_timeout_ms"],"type":"object"},"plan_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"preparation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime":{"additionalProperties":false,"properties":{"executable_path":{"maxLength":4096,"minLength":1,"type":"string"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"family":{"maxLength":100,"minLength":1,"type":"string"},"profile_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"provider_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"version":{"maxLength":500,"minLength":1,"type":"string"}},"required":["family","provider_id","executable_path","executable_sha256","version","profile_sha256"],"type":"object"},"schema_version":{"const":1,"type":"number"},"working_directory":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["schema_version","plan_sha256","preparation_sha256","artifact","runtime","callable","working_directory","isolated_home","expected_effect","allowed_boundaries","limits","determinism","authority"],"type":"object"},"replay":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema1"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"phase":{"const":"execute","type":"string"},"plan":{"type":"null"},"source_evidence":{"items":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema1"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"minItems":1,"type":"array"}},"required":["phase","plan","source_evidence","evidence"],"type":"object"},"schema_version":{"const":1,"type":"number"},"transformation":{"additionalProperties":false,"properties":{"artifact_path":{"maxLength":4096,"minLength":1,"type":"string"},"inserted_ranges":{"items":{"additionalProperties":false,"properties":{"byte_end":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"inserted_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"purpose":{"enum":["factory-prefix","export-binding","factory-suffix"],"type":"string"}},"required":["byte_start","byte_end","inserted_sha256","purpose"],"type":"object"},"maxItems":3,"minItems":3,"type":"array"},"instrumented_byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"instrumented_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"kind":{"const":"commonjs-factory-export-v1","type":"string"},"original_byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"original_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"output_format":{"const":"commonjs-factory","type":"string"},"schema_version":{"const":1,"type":"number"},"selected_range":{"additionalProperties":false,"properties":{"byte_end":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"selected_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["byte_start","byte_end","selected_sha256"],"type":"object"},"source_map":{"const":null,"type":"null"}},"required":["schema_version","kind","artifact_path","original_sha256","original_byte_length","instrumented_sha256","instrumented_byte_length","selected_range","inserted_ranges","output_format","source_map"],"type":"object"},"transformation_evidence":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]}},"required":["schema_version","phase","plan","transformation","transformation_evidence","evidence","replay"],"type":"object"},"requiresSession":false,"title":"Execute Node Characterization"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Generate one deterministic page of a ReconstructionObligationLedger/v1 from an authenticated Evidence v2 bundle, reviewed obligations, and an explicit reconstruction manifest. Static candidates remain candidates; duplicate ownership, missing original or reconstruction cases, missing parser/type, weak verifier authority, unenumerated claims, contradictions, dependencies, and residual unknowns fail closed. Every page carries the same full-ledger closure digest and typed per-obligation diagnostics.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"evidence_bundle":{"artifacts":[],"bundle_version":2,"captures":[],"environments":[],"providers":[],"records":[],"scenarios":[],"unknowns":[]},"limits":{"max_obligations":1000},"manifest":{"bindings":[],"contradictions":[],"schema_version":1},"page":{"limit":50,"offset":0},"reviewed_obligations":[]}],"properties":{"evidence_bundle":{"description":"Value for evidence bundle.","properties":{"artifacts":{"description":"Value for artifacts.","items":{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"}},"required":["digest","format","architecture"],"type":"object"},"type":"array"},"bundle_version":{"const":2,"description":"Value for bundle version.","type":"number"},"captures":{"description":"Value for captures.","items":{"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"}},"required":["evidence_id","predicate_type"],"type":"object"},"type":"array"},"environments":{"description":"Value for environments.","items":{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},"type":"array"},"providers":{"description":"Value for providers.","items":{"properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"type":"array"},"records":{"description":"Value for records.","items":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]},"type":"array"},"scenarios":{"description":"Value for scenarios.","items":{"properties":{"authority":{"const":"controlled-replay","description":"Value for authority.","type":"string"},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"operation":{"description":"Value for operation.","minLength":1,"type":"string"}},"required":["evidence_id","operation","authority"],"type":"object"},"type":"array"},"unknowns":{"description":"Value for unknowns.","items":{"properties":{"contradicting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the contradicting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"description":"Value for domain.","maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the mutation observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for previous revision digest."},"question":{"description":"Concrete unresolved question to retain for later investigation.","maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"description":"Value for recommended probes.","items":{"properties":{"operation":{"description":"Value for operation.","maxLength":200,"minLength":1,"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"description":"Value for registry version.","type":"number"},"relationships":{"description":"Value for relationships.","items":{"properties":{"type":{"description":"Value for type.","enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}],"description":"Value for required authority."},"required_confidence":{"description":"Value for required confidence.","enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for architecture."},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for id."},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}],"description":"Value for isolation."},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for platform."}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for required environment."},"resolution":{"anyOf":[{"oneOf":[{"properties":{"disposition":{"const":"verified","description":"Value for disposition.","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"properties":{"disposition":{"description":"Value for disposition.","enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}],"description":"Value for resolution."},"revision":{"description":"Value for revision.","maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"description":"Value for revision digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for scope digest."},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the supporting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"},"type":"array"}},"required":["bundle_version","artifacts","providers","environments","scenarios","captures","unknowns","records"],"type":"object"},"limits":{"additionalProperties":false,"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_obligations":{"description":"Maximum permitted obligations for this operation.","maximum":10000,"minimum":1,"type":"integer"}},"required":["max_obligations"],"type":"object"},"manifest":{"additionalProperties":false,"description":"Value for manifest.","properties":{"bindings":{"description":"Value for bindings.","items":{"additionalProperties":false,"properties":{"fixtures":{"description":"Value for fixtures.","items":{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"case_kind":{"description":"Value for case kind.","enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"fixture_id":{"description":"Value for fixture id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["fixture_id","case_kind","authority","evidence_ids"],"type":"object"},"maxItems":100,"type":"array"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"original_cases":{"description":"Value for original cases.","items":{"additionalProperties":false,"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"description":"Value for kind.","enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","evidence_id","location"],"type":"object"},"maxItems":100,"type":"array"},"owner":{"additionalProperties":false,"description":"Value for owner.","properties":{"module_path":{"description":"Local filesystem path for module.","maxLength":4096,"minLength":1,"type":"string"},"owner_sha256":{"description":"Exact SHA-256 digest of owner.","pattern":"^[a-f0-9]{64}$","type":"string"},"symbol":{"description":"Value for symbol.","maxLength":1024,"minLength":1,"type":"string"}},"required":["module_path","symbol","owner_sha256"],"type":"object"},"parser_type":{"anyOf":[{"additionalProperties":false,"properties":{"domain_type":{"description":"Value for domain type.","maxLength":4096,"minLength":1,"type":"string"},"parser":{"description":"Value for parser.","maxLength":4096,"minLength":1,"type":"string"},"schema":{"description":"Value for schema.","maxLength":4096,"minLength":1,"type":"string"}},"required":["parser","schema","domain_type"],"type":"object"},{"type":"null"}],"description":"Value for parser type."},"verifier":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"command":{"description":"Value for command.","maxLength":4096,"minLength":1,"type":"string"},"enumerated_obligation_ids":{"description":"Value for enumerated obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"nondeterminism":{"additionalProperties":false,"description":"Value for nondeterminism.","properties":{"mode":{"description":"Operation mode that selects the requested behavior.","enum":["total-order","partial-order","finite-traces"],"type":"string"},"specification":{"description":"Value for specification.","maxLength":4096,"minLength":1,"type":"string"}},"required":["mode","specification"],"type":"object"},"result_evidence_id":{"description":"Exact Evidence v2 identifier for the result observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","skipped"],"type":"string"},"verifier_id":{"description":"Value for verifier id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["verifier_id","claim_id","command","authority","status","result_evidence_id","enumerated_obligation_ids","nondeterminism"],"type":"object"},{"type":"null"}],"description":"Value for verifier."}},"required":["obligation_id","owner","parser_type","original_cases","fixtures","verifier"],"type":"object"},"maxItems":10000,"type":"array"},"contradictions":{"description":"Value for contradictions.","items":{"additionalProperties":false,"properties":{"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":2,"type":"array"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["obligation_id","evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","bindings","contradictions"],"type":"object"},"page":{"additionalProperties":false,"description":"Value for page.","properties":{"limit":{"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"offset":{"description":"Zero-based index of the first result to return.","maximum":10000,"minimum":0,"type":"integer"}},"required":["offset","limit"],"type":"object"},"reviewed_obligations":{"description":"Value for reviewed obligations.","items":{"additionalProperties":false,"properties":{"application_layer":{"description":"Value for application layer.","enum":["cli","protocol","electron","persistence","process","runtime","packaging","native-abi","application","other"],"type":"string"},"dependency_obligation_ids":{"description":"Value for dependency obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"disposition":{"description":"Value for disposition.","enum":["active","blocked","out-of-scope"],"type":"string"},"family":{"description":"Value for family.","maxLength":100,"minLength":1,"type":"string"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"obligation_version":{"description":"Value for obligation version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"required":{"description":"Value for required.","type":"boolean"},"required_case_kinds":{"description":"Value for required case kinds.","items":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"maxItems":5,"minItems":1,"type":"array"},"required_fixture_authority":{"description":"Value for required fixture authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"required_next_evidence":{"description":"Value for required next evidence.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"required_original_authority":{"description":"Value for required original authority.","enum":["static","runtime","process","external"],"type":"string"},"required_verifier_authority":{"description":"Value for required verifier authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"requires_parser_type":{"description":"Value for requires parser type.","type":"boolean"},"residual_unknown_ids":{"description":"Value for residual unknown ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"review_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the review observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"target":{"additionalProperties":false,"description":"Value for target.","properties":{"application_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for application node id."},"artifact_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of artifact."},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"},"semantic_node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for semantic node id."}},"required":["artifact_sha256","application_node_id","semantic_node_id","location"],"type":"object"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"},"unavailable_authority":{"description":"Value for unavailable authority.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"}},"required":["obligation_id","obligation_version","title","application_layer","family","target","required","required_case_kinds","required_original_authority","required_fixture_authority","required_verifier_authority","requires_parser_type","dependency_obligation_ids","residual_unknown_ids","unavailable_authority","required_next_evidence","disposition","review_evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"}},"required":["evidence_bundle","reviewed_obligations","manifest","limits","page"],"type":"object"},"kind":"application","name":"build_reconstruction_obligation_ledger","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"closure_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"max_obligations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"omitted_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete","partial"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","max_obligations"],"type":"object"},"dependency_graph":{"items":{"additionalProperties":false,"properties":{"depends_on_obligation_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"obligation_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["obligation_id","depends_on_obligation_id"],"type":"object"},"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100000,"type":"array"},"ledger_id":{"pattern":"^rol_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"obligations":{"items":{"additionalProperties":false,"properties":{"application_layer":{"enum":["cli","protocol","electron","persistence","process","runtime","packaging","native-abi","application","other"],"type":"string"},"authority_references":{"items":{"additionalProperties":false,"properties":{"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"location":{"maxLength":4096,"minLength":1,"type":"string"},"state":{"enum":["candidate","observed","reviewed","unknown"],"type":"string"}},"required":["evidence_id","authority","state","location"],"type":"object"},"maxItems":1000,"minItems":1,"type":"array"},"binding":{"anyOf":[{"additionalProperties":false,"properties":{"fixtures":{"items":{"additionalProperties":false,"properties":{"authority":{"enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"case_kind":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"fixture_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["fixture_id","case_kind","authority","evidence_ids"],"type":"object"},"maxItems":100,"type":"array"},"obligation_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"original_cases":{"items":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"location":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","evidence_id","location"],"type":"object"},"maxItems":100,"type":"array"},"owner":{"additionalProperties":false,"properties":{"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"owner_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"symbol":{"maxLength":1024,"minLength":1,"type":"string"}},"required":["module_path","symbol","owner_sha256"],"type":"object"},"parser_type":{"anyOf":[{"additionalProperties":false,"properties":{"domain_type":{"maxLength":4096,"minLength":1,"type":"string"},"parser":{"maxLength":4096,"minLength":1,"type":"string"},"schema":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["parser","schema","domain_type"],"type":"object"},{"type":"null"}]},"verifier":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"claim_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"command":{"maxLength":4096,"minLength":1,"type":"string"},"enumerated_obligation_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"nondeterminism":{"additionalProperties":false,"properties":{"mode":{"enum":["total-order","partial-order","finite-traces"],"type":"string"},"specification":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["mode","specification"],"type":"object"},"result_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"status":{"enum":["pass","fail","unknown","unsupported","skipped"],"type":"string"},"verifier_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["verifier_id","claim_id","command","authority","status","result_evidence_id","enumerated_obligation_ids","nondeterminism"],"type":"object"},{"type":"null"}]}},"required":["obligation_id","owner","parser_type","original_cases","fixtures","verifier"],"type":"object"},{"type":"null"}]},"dependency_obligation_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"diagnostics":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["duplicate-definition","missing-owner","ambiguous-owner","missing-parser-type","missing-original-case","weak-original-case-authority","missing-case","weak-fixture-authority","missing-verifier","verifier-does-not-enumerate","missing-verifier-result","weak-verifier-authority","verifier-failed","static-only","contradiction","contradiction-evidence-missing","residual-unknown","dependency-missing","dependency-open","unavailable-authority","blocked","out-of-scope"],"type":"string"},"detail":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["code","detail"],"type":"object"},"maxItems":1000,"type":"array"},"family":{"maxLength":100,"minLength":1,"type":"string"},"obligation_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"obligation_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_cases":{"items":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"location":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","evidence_id","location"],"type":"object"},"maxItems":100,"type":"array"},"origin":{"enum":["generated","reviewed"],"type":"string"},"required":{"type":"boolean"},"required_case_kinds":{"items":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"maxItems":5,"minItems":1,"type":"array"},"required_fixture_authority":{"enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"required_next_evidence":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"required_original_authority":{"enum":["static","runtime","process","external"],"type":"string"},"required_verifier_authority":{"enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"requires_parser_type":{"type":"boolean"},"residual_unknown_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"source_state":{"enum":["candidate","observed","reviewed","unknown"],"type":"string"},"status":{"enum":["unowned","characterized","implemented","verified","contradicted","blocked","out-of-scope","unknown"],"type":"string"},"target":{"additionalProperties":false,"properties":{"application_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"artifact_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"location":{"maxLength":4096,"minLength":1,"type":"string"},"semantic_node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["artifact_sha256","application_node_id","semantic_node_id","location"],"type":"object"},"title":{"maxLength":500,"minLength":1,"type":"string"},"unavailable_authority":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"}},"required":["obligation_id","obligation_version","title","origin","application_layer","family","target","authority_references","source_state","observed_cases","required","required_case_kinds","required_original_authority","required_fixture_authority","required_verifier_authority","requires_parser_type","dependency_obligation_ids","residual_unknown_ids","unavailable_authority","required_next_evidence","binding","status","diagnostics"],"type":"object"},"maxItems":100,"type":"array"},"ownership_graph":{"items":{"additionalProperties":false,"properties":{"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"obligation_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"symbol":{"maxLength":1024,"minLength":1,"type":"string"}},"required":["obligation_id","module_path","symbol"],"type":"object"},"type":"array"},"page":{"additionalProperties":false,"properties":{"limit":{"maximum":100,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["offset","limit","total","returned","next_offset"],"type":"object"},"reports":{"additionalProperties":false,"properties":{"contradicted_obligation_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"missing_owner_obligation_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"missing_verifier_obligation_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"residual_unknown_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"}},"required":["missing_owner_obligation_ids","missing_verifier_obligation_ids","contradicted_obligation_ids","residual_unknown_ids"],"type":"object"},"schema":{"const":"ReconstructionObligationLedger","type":"string"},"schema_version":{"const":1,"type":"number"},"status":{"enum":["ready","open","failed","unknown"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"by_application_layer":{"items":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"enum":["cli","protocol","electron","persistence","process","runtime","packaging","native-abi","application","other"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"by_evidence_authority":{"items":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"enum":["candidate","observed","reviewed","unknown"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"by_status":{"items":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"enum":["unowned","characterized","implemented","verified","contradicted","blocked","out-of-scope","unknown"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"required":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"required_open":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"verified":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","required","verified","required_open","by_status","by_application_layer","by_evidence_authority"],"type":"object"}},"required":["schema","schema_version","ledger_id","closure_digest","status","coverage","summary","reports","ownership_graph","dependency_graph","evidence_links","limitations","page","obligations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Build Reconstruction Obligation Ledger"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Evaluate the fixed nine-stage public reconstruction journey into a deterministic ReconstructionReadinessReport/v1. Exact capability limits, provider routing, CLI/MCP status parity, bounded authority, partial-order comparison, contradictions, obligation closure, cleanup, and replay digests fail closed. Aggregate pass is emitted only when every required stage and check passes with attributable Evidence.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"capabilities":[{"authority_scopes":["investigation-input"],"available":true,"bounded":true,"capability_id":"analyze-javascript-application","limits":[{"name":"max-ast-nodes","unit":"count","value":2000000}],"side_effect":"reads-target","unavailable_reason":null}],"cleanup":[{"cancelled":true,"diagnostic_evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"owned_resources_remaining":0,"run_id":"run.cancelled"}],"client":{"name":"synthetic-mcp-client","negotiated_capabilities":["elicitation","progress","resources"],"version":"1"},"closure_history":[{"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"ledger_digest":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","newly_verified_obligation_ids":[],"required_open":1,"sequence":0,"status":"open"},{"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"ledger_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","newly_verified_obligation_ids":["obl.readiness"],"required_open":0,"sequence":1,"status":"ready"}],"comparisons":[{"comparison_id":"comparison.concurrent","concurrent":true,"contradiction_ids":[],"deliberate_divergence_ref":null,"divergence_refs":[],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"schedule_semantics":"partial-order","truncated":false,"unavailable_authority":false,"unstable":false,"verdict":"equivalent"},{"comparison_id":"comparison.divergence","concurrent":true,"contradiction_ids":[],"deliberate_divergence_ref":"/events/primary","divergence_refs":["/events/primary"],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"schedule_semantics":"finite-traces","truncated":false,"unavailable_authority":false,"unstable":false,"verdict":"different"},{"comparison_id":"comparison.contradicted","concurrent":false,"contradiction_ids":["contradiction.artifact"],"deliberate_divergence_ref":null,"divergence_refs":[],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"schedule_semantics":"finite-traces","truncated":false,"unavailable_authority":false,"unstable":false,"verdict":"unknown"}],"contradictions":[{"affected_comparison_ids":["comparison.contradicted"],"contradiction_id":"contradiction.artifact","declared_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","ev_b05c548cf5d0ba30bb6043ec26e583b551e793c636b747e1ed8630c511439f91"],"observed_sha256":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","policy":"record-and-continue"}],"delegation_checks":[{"candidate_id":"candidate.reconstructed","delegates_to_authority":false,"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"]}],"evidence_bundle":{"artifacts":[],"bundle_version":2,"captures":[],"environments":[],"providers":[{"id":"rea-readiness-fixture","name":"REA readiness fixture","version":"1"}],"records":[{"authority":"controlled-replay","confidence":"observed","environment":null,"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","evidence_links":[],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"passed":true,"variant":"authority"},"operation":"run_reconstruction_readiness_fixture","parameters":{"variant":"authority"},"predicate_type":"rea.reconstruction-readiness-fixture/v1","provider":{"id":"rea-readiness-fixture","name":"REA readiness fixture","version":"1"},"raw_result":null,"schema_version":2,"subject":null},{"authority":"controlled-replay","confidence":"observed","environment":null,"evidence_id":"ev_b05c548cf5d0ba30bb6043ec26e583b551e793c636b747e1ed8630c511439f91","evidence_links":[],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"passed":true,"variant":"contradiction"},"operation":"run_reconstruction_readiness_fixture","parameters":{"variant":"contradiction"},"predicate_type":"rea.reconstruction-readiness-fixture/v1","provider":{"id":"rea-readiness-fixture","name":"REA readiness fixture","version":"1"},"raw_result":null,"schema_version":2,"subject":null}],"scenarios":[{"authority":"controlled-replay","evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","operation":"run_reconstruction_readiness_fixture"},{"authority":"controlled-replay","evidence_id":"ev_b05c548cf5d0ba30bb6043ec26e583b551e793c636b747e1ed8630c511439f91","operation":"run_reconstruction_readiness_fixture"}],"unknowns":[]},"fixtures":[{"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","deliberate_faults":["fault.native"],"environment_id":"environment.synthetic","fixture_id":"fixture.native","kind":"native"},{"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","deliberate_faults":["fault.javascript-cli"],"environment_id":"environment.synthetic","fixture_id":"fixture.javascript-cli","kind":"javascript-cli"},{"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","deliberate_faults":["fault.electron"],"environment_id":"environment.synthetic","fixture_id":"fixture.electron","kind":"electron"},{"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","deliberate_faults":["fault.incomplete-reconstruction"],"environment_id":"environment.synthetic","fixture_id":"fixture.incomplete-reconstruction","kind":"incomplete-reconstruction"},{"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","deliberate_faults":["fault.broken-runtime"],"environment_id":"environment.synthetic","fixture_id":"fixture.broken-runtime","kind":"broken-runtime"}],"grants":[{"decision":"denied","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"grant_id":"grant.denied","launched_process":false,"scope":"process-capture"},{"decision":"granted","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"grant_id":"grant.session","launched_process":true,"scope":"process-capture"}],"identity":{"catalog_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","cli_version":"2.4.0","providers":[{"digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","provider_id":"javascript-application","reason_code":null,"state":"available","version":"1"},{"digest":null,"provider_id":"broken-runtime-probe","reason_code":"host-runtime-linker-failure","state":"broken-host","version":null}],"server_version":"2.4.0","skill_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","versions":[{"component":"rea-cli","digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","remediation":null,"state":"current","version":"2.4.0"},{"component":"rea-server","digest":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","remediation":"Restart the connected MCP server.","state":"stale","version":"2.3.0"},{"component":"rea-server","digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","remediation":null,"state":"current","version":"2.4.0"}]},"obligation_ledger":{"closure_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","coverage":{"max_obligations":100,"omitted_count":0,"status":"complete","truncated":false},"dependency_graph":[],"evidence_links":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"ledger_id":"rol_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limitations":[],"obligations":[{"application_layer":"process","authority_references":[{"authority":"controlled-replay","evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","location":"/fixture","state":"observed"}],"binding":{"fixtures":[{"authority":"packaged-process","case_kind":"positive","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"fixture_id":"fixture.positive"},{"authority":"packaged-process","case_kind":"negative","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"fixture_id":"fixture.negative"},{"authority":"packaged-process","case_kind":"malformed","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"fixture_id":"fixture.malformed"},{"authority":"packaged-process","case_kind":"cancellation","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"fixture_id":"fixture.cancellation"},{"authority":"packaged-process","case_kind":"teardown","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"fixture_id":"fixture.teardown"}],"obligation_id":"obl.readiness","original_cases":[{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"positive","location":"/original/positive"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"negative","location":"/original/negative"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"malformed","location":"/original/malformed"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"cancellation","location":"/original/cancellation"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"teardown","location":"/original/teardown"}],"owner":{"module_path":"src/readiness.ts","owner_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","symbol":"runReadiness"},"parser_type":null,"verifier":{"authority":"packaged-process","claim_id":"claim.readiness","command":"npm run verify:readiness","enumerated_obligation_ids":["obl.readiness"],"nondeterminism":{"mode":"partial-order","specification":"Startup precedes teardown."},"result_evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","status":"pass","verifier_id":"verifier.readiness"}},"dependency_obligation_ids":[],"diagnostics":[],"family":"packaged-process-lifecycle","obligation_id":"obl.readiness","obligation_version":1,"observed_cases":[{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"positive","location":"/original/positive"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"negative","location":"/original/negative"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"malformed","location":"/original/malformed"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"cancellation","location":"/original/cancellation"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"teardown","location":"/original/teardown"}],"origin":"reviewed","required":true,"required_case_kinds":["positive","negative","malformed","cancellation","teardown"],"required_fixture_authority":"packaged-process","required_next_evidence":[],"required_original_authority":"process","required_verifier_authority":"packaged-process","requires_parser_type":false,"residual_unknown_ids":[],"source_state":"observed","status":"verified","target":{"application_node_id":null,"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","location":"/fixture","semantic_node_id":null},"title":"Preserve the packaged readiness fixture lifecycle","unavailable_authority":[]}],"ownership_graph":[{"module_path":"src/readiness.ts","obligation_id":"obl.readiness","symbol":"runReadiness"}],"reports":{"contradicted_obligation_ids":[],"missing_owner_obligation_ids":[],"missing_verifier_obligation_ids":[],"residual_unknown_ids":[]},"schema":"ReconstructionObligationLedger","schema_version":1,"status":"ready","summary":{"by_application_layer":[{"count":0,"key":"cli"},{"count":0,"key":"protocol"},{"count":0,"key":"electron"},{"count":0,"key":"persistence"},{"count":1,"key":"process"},{"count":0,"key":"runtime"},{"count":0,"key":"packaging"},{"count":0,"key":"native-abi"},{"count":0,"key":"application"},{"count":0,"key":"other"}],"by_evidence_authority":[{"count":0,"key":"candidate"},{"count":1,"key":"observed"},{"count":0,"key":"reviewed"},{"count":0,"key":"unknown"}],"by_status":[{"count":0,"key":"unowned"},{"count":0,"key":"characterized"},{"count":0,"key":"implemented"},{"count":1,"key":"verified"},{"count":0,"key":"contradicted"},{"count":0,"key":"blocked"},{"count":0,"key":"out-of-scope"},{"count":0,"key":"unknown"}],"required":1,"required_open":0,"total":1,"verified":1}},"operation_outcomes":[{"call_kind":"valid","cli_exit_code":0,"error_code":null,"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"expected_success":true,"mcp_status":null,"operation":"inspect-artifact","recovered":false,"sequence":0,"surface":"cli"},{"call_kind":"valid","cli_exit_code":null,"error_code":null,"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"expected_success":true,"mcp_status":"success","operation":"inspect-artifact","recovered":false,"sequence":1,"surface":"mcp"},{"call_kind":"permission","cli_exit_code":2,"error_code":"permission-required","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"expected_success":false,"mcp_status":null,"operation":"capture-process","recovered":true,"sequence":2,"surface":"cli"},{"call_kind":"permission","cli_exit_code":null,"error_code":"permission-required","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"expected_success":false,"mcp_status":"non-success","operation":"capture-process","recovered":true,"sequence":3,"surface":"mcp"}],"replay":{"deterministic":true,"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"expected_source_digest":null,"stale_input_detected":true,"tamper_detected":true},"schema_version":1,"stages":[{"capability_issue":null,"checks":[{"check_id":"target-free-start","detail":"Synthetic conformance proved target-free-start.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"artifact-inventory","detail":"Synthetic conformance proved artifact-inventory.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"compatible-workflow-selected","detail":"Synthetic conformance proved compatible-workflow-selected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"limits-visible","detail":"Synthetic conformance proved limits-visible.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"discover-classify","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"broken-runtime-distinguished","detail":"Synthetic conformance proved broken-runtime-distinguished.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"version-skew-detected","detail":"Synthetic conformance proved version-skew-detected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"revision-changed-after-recovery","detail":"Synthetic conformance proved revision-changed-after-recovery.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"diagnose-environment","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"missing-scope-reported","detail":"Synthetic conformance proved missing-scope-reported.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"narrow-grant-resumed","detail":"Synthetic conformance proved narrow-grant-resumed.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"expansion-reprompted","detail":"Synthetic conformance proved expansion-reprompted.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"denial-launched-nothing","detail":"Synthetic conformance proved denial-launched-nothing.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"acquire-authority","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"native-routed","detail":"Synthetic conformance proved native-routed.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"javascript-routed","detail":"Synthetic conformance proved javascript-routed.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"unknowns-preserved","detail":"Synthetic conformance proved unknowns-preserved.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"static-analysis","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"predicate-driven","detail":"Synthetic conformance proved predicate-driven.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"descendant-settled","detail":"Synthetic conformance proved descendant-settled.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"electron-correlated","detail":"Synthetic conformance proved electron-correlated.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"cancel-cleanup-preserved-evidence","detail":"Synthetic conformance proved cancel-cleanup-preserved-evidence.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"reactive-scenarios","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"partial-order-accepted","detail":"Synthetic conformance proved partial-order-accepted.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"divergence-localized","detail":"Synthetic conformance proved divergence-localized.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"incomplete-is-unknown","detail":"Synthetic conformance proved incomplete-is-unknown.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"compare-authority-candidate","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"record-and-continue","detail":"Synthetic conformance proved record-and-continue.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"affected-equivalence-blocked","detail":"Synthetic conformance proved affected-equivalence-blocked.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"unaffected-comparison-continued","detail":"Synthetic conformance proved unaffected-comparison-continued.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"preserve-contradictions","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"incomplete-detected","detail":"Synthetic conformance proved incomplete-detected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"incremental-verifier-closure","detail":"Synthetic conformance proved incremental-verifier-closure.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"delegation-rejected","detail":"Synthetic conformance proved delegation-rejected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"verify-reconstruction-closure","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"cli-mcp-parity","detail":"Synthetic conformance proved cli-mcp-parity.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"failure-status-parity","detail":"Synthetic conformance proved failure-status-parity.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"deterministic-replay","detail":"Synthetic conformance proved deterministic-replay.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"tamper-detected","detail":"Synthetic conformance proved tamper-detected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"stale-input-detected","detail":"Synthetic conformance proved stale-input-detected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"export-replay","status":"pass"}],"workflow_candidates":[{"compatibility":"compatible","fixture_id":"fixture.native","invoked":true,"provider_id":"provider.native","reason_code":"compatible-artifact-family","selected":true,"workflow_id":"workflow.native"},{"compatibility":"compatible","fixture_id":"fixture.javascript-cli","invoked":true,"provider_id":"provider.javascript-cli","reason_code":"compatible-artifact-family","selected":true,"workflow_id":"workflow.javascript-cli"},{"compatibility":"compatible","fixture_id":"fixture.electron","invoked":true,"provider_id":"provider.electron","reason_code":"compatible-artifact-family","selected":true,"workflow_id":"workflow.electron"},{"compatibility":"compatible","fixture_id":"fixture.incomplete-reconstruction","invoked":true,"provider_id":"provider.incomplete-reconstruction","reason_code":"compatible-artifact-family","selected":true,"workflow_id":"workflow.incomplete-reconstruction"},{"compatibility":"compatible","fixture_id":"fixture.broken-runtime","invoked":true,"provider_id":null,"reason_code":"compatible-artifact-family","selected":true,"workflow_id":"workflow.broken-runtime"}]}],"properties":{"capabilities":{"description":"Value for capabilities.","items":{"additionalProperties":false,"properties":{"authority_scopes":{"description":"Value for authority scopes.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"type":"array"},"available":{"description":"Value for available.","type":"boolean"},"bounded":{"description":"Value for bounded.","type":"boolean"},"capability_id":{"description":"Value for capability id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"limits":{"description":"Bounded resource-consumption and result-size limits for this operation.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"unit":{"description":"Value for unit.","enum":["count","bytes","milliseconds","ratio"],"type":"string"},"value":{"description":"Value for value.","minimum":0,"type":"number"}},"required":["name","value","unit"],"type":"object"},"maxItems":100,"type":"array"},"side_effect":{"description":"Value for side effect.","enum":["none","reads-target","launches-process","writes-workspace","network-observation"],"type":"string"},"unavailable_reason":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for unavailable reason."}},"required":["capability_id","available","bounded","side_effect","authority_scopes","limits","unavailable_reason"],"type":"object"},"maxItems":1000,"minItems":1,"type":"array"},"cleanup":{"description":"Value for cleanup.","items":{"additionalProperties":false,"properties":{"cancelled":{"description":"Value for cancelled.","type":"boolean"},"diagnostic_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the diagnostic observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"owned_resources_remaining":{"description":"Value for owned resources remaining.","maximum":9007199254740991,"minimum":0,"type":"integer"},"run_id":{"description":"Value for run id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["run_id","cancelled","owned_resources_remaining","diagnostic_evidence_ids"],"type":"object"},"maxItems":1000,"type":"array"},"client":{"additionalProperties":false,"description":"Value for client.","properties":{"name":{"description":"Exact name used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"negotiated_capabilities":{"description":"Value for negotiated capabilities.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"type":"array"},"version":{"description":"Value for version.","maxLength":4096,"minLength":1,"type":"string"}},"required":["name","version","negotiated_capabilities"],"type":"object"},"closure_history":{"description":"Value for closure history.","items":{"additionalProperties":false,"properties":{"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"ledger_digest":{"description":"Value for ledger digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"newly_verified_obligation_ids":{"description":"Value for newly verified obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"type":"array"},"required_open":{"description":"Value for required open.","maximum":9007199254740991,"minimum":0,"type":"integer"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["ready","open","failed","unknown"],"type":"string"}},"required":["sequence","ledger_digest","status","required_open","newly_verified_obligation_ids","evidence_ids"],"type":"object"},"maxItems":1000,"minItems":2,"type":"array"},"comparisons":{"description":"Validated comparison Evidence records to aggregate.","items":{"additionalProperties":false,"properties":{"comparison_id":{"description":"Value for comparison id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"concurrent":{"description":"Value for concurrent.","type":"boolean"},"contradiction_ids":{"description":"Value for contradiction ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"type":"array"},"deliberate_divergence_ref":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for deliberate divergence ref."},"divergence_refs":{"description":"Value for divergence refs.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schedule_semantics":{"description":"Value for schedule semantics.","enum":["total-order","partial-order","finite-traces"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"},"unavailable_authority":{"description":"Value for unavailable authority.","type":"boolean"},"unstable":{"description":"Value for unstable.","type":"boolean"},"verdict":{"description":"Value for verdict.","enum":["equivalent","different","unknown"],"type":"string"}},"required":["comparison_id","verdict","schedule_semantics","concurrent","truncated","unavailable_authority","unstable","deliberate_divergence_ref","divergence_refs","contradiction_ids","evidence_ids"],"type":"object"},"maxItems":1000,"type":"array"},"contradictions":{"description":"Value for contradictions.","items":{"additionalProperties":false,"properties":{"affected_comparison_ids":{"description":"Value for affected comparison ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"contradiction_id":{"description":"Value for contradiction id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"declared_sha256":{"description":"Exact SHA-256 digest of declared.","pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":2,"type":"array"},"observed_sha256":{"description":"Exact SHA-256 digest of observed.","pattern":"^[a-f0-9]{64}$","type":"string"},"policy":{"const":"record-and-continue","description":"Value for policy.","type":"string"}},"required":["contradiction_id","declared_sha256","observed_sha256","policy","affected_comparison_ids","evidence_ids"],"type":"object"},"maxItems":1000,"type":"array"},"delegation_checks":{"description":"Value for delegation checks.","items":{"additionalProperties":false,"properties":{"candidate_id":{"description":"Value for candidate id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"delegates_to_authority":{"description":"Value for delegates to authority.","type":"boolean"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"}},"required":["candidate_id","delegates_to_authority","evidence_ids"],"type":"object"},"maxItems":1000,"minItems":1,"type":"array"},"evidence_bundle":{"description":"Value for evidence bundle.","properties":{"artifacts":{"description":"Value for artifacts.","items":{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"}},"required":["digest","format","architecture"],"type":"object"},"type":"array"},"bundle_version":{"const":2,"description":"Value for bundle version.","type":"number"},"captures":{"description":"Value for captures.","items":{"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"}},"required":["evidence_id","predicate_type"],"type":"object"},"type":"array"},"environments":{"description":"Value for environments.","items":{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},"type":"array"},"providers":{"description":"Value for providers.","items":{"properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"type":"array"},"records":{"description":"Value for records.","items":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]},"type":"array"},"scenarios":{"description":"Value for scenarios.","items":{"properties":{"authority":{"const":"controlled-replay","description":"Value for authority.","type":"string"},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"operation":{"description":"Value for operation.","minLength":1,"type":"string"}},"required":["evidence_id","operation","authority"],"type":"object"},"type":"array"},"unknowns":{"description":"Value for unknowns.","items":{"properties":{"contradicting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the contradicting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"description":"Value for domain.","maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the mutation observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for previous revision digest."},"question":{"description":"Concrete unresolved question to retain for later investigation.","maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"description":"Value for recommended probes.","items":{"properties":{"operation":{"description":"Value for operation.","maxLength":200,"minLength":1,"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"description":"Value for registry version.","type":"number"},"relationships":{"description":"Value for relationships.","items":{"properties":{"type":{"description":"Value for type.","enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}],"description":"Value for required authority."},"required_confidence":{"description":"Value for required confidence.","enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for architecture."},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for id."},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}],"description":"Value for isolation."},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for platform."}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for required environment."},"resolution":{"anyOf":[{"oneOf":[{"properties":{"disposition":{"const":"verified","description":"Value for disposition.","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"properties":{"disposition":{"description":"Value for disposition.","enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}],"description":"Value for resolution."},"revision":{"description":"Value for revision.","maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"description":"Value for revision digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for scope digest."},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the supporting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"},"type":"array"}},"required":["bundle_version","artifacts","providers","environments","scenarios","captures","unknowns","records"],"type":"object"},"fixtures":{"description":"Value for fixtures.","items":{"additionalProperties":false,"properties":{"artifact_sha256":{"description":"Exact SHA-256 digest of artifact.","pattern":"^[a-f0-9]{64}$","type":"string"},"deliberate_faults":{"description":"Value for deliberate faults.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"environment_id":{"description":"Value for environment id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"fixture_id":{"description":"Value for fixture id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"kind":{"description":"Value for kind.","enum":["native","javascript-cli","electron","incomplete-reconstruction","broken-runtime"],"type":"string"}},"required":["fixture_id","kind","artifact_sha256","environment_id","deliberate_faults"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"},"grants":{"description":"Value for grants.","items":{"additionalProperties":false,"properties":{"decision":{"description":"Value for decision.","enum":["granted","denied","cancelled","restart-required"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"grant_id":{"description":"Value for grant id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"launched_process":{"description":"Value for launched process.","type":"boolean"},"scope":{"description":"Value for scope.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["grant_id","scope","decision","launched_process","evidence_ids"],"type":"object"},"maxItems":1000,"type":"array"},"identity":{"additionalProperties":false,"description":"Value for identity.","properties":{"catalog_digest":{"description":"Value for catalog digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"cli_version":{"description":"Value for cli version.","maxLength":4096,"minLength":1,"type":"string"},"providers":{"description":"Value for providers.","items":{"additionalProperties":false,"properties":{"digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for digest."},"provider_id":{"description":"Exact deep-analysis provider ID, or automatic selection when omitted.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"reason_code":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},{"type":"null"}],"description":"Value for reason code."},"state":{"description":"Value for state.","enum":["available","unavailable","incompatible","broken-host"],"type":"string"},"version":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["provider_id","version","digest","state","reason_code"],"type":"object"},"maxItems":100,"type":"array"},"server_version":{"description":"Value for server version.","maxLength":4096,"minLength":1,"type":"string"},"skill_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for skill digest."},"versions":{"description":"Value for versions.","items":{"additionalProperties":false,"properties":{"component":{"description":"Value for component.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for digest."},"remediation":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for remediation."},"state":{"description":"Value for state.","enum":["current","stale","unavailable"],"type":"string"},"version":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["component","version","digest","state","remediation"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"}},"required":["cli_version","server_version","catalog_digest","skill_digest","versions","providers"],"type":"object"},"obligation_ledger":{"additionalProperties":false,"description":"Value for obligation ledger.","properties":{"closure_digest":{"description":"Value for closure digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"description":"Exact reconstruction-coverage commitment to verify.","properties":{"max_obligations":{"description":"Maximum permitted obligations for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"omitted_count":{"description":"Value for omitted count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["complete","partial"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["status","truncated","omitted_count","max_obligations"],"type":"object"},"dependency_graph":{"description":"Value for dependency graph.","items":{"additionalProperties":false,"properties":{"depends_on_obligation_id":{"description":"Value for depends on obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["obligation_id","depends_on_obligation_id"],"type":"object"},"type":"array"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100000,"type":"array"},"ledger_id":{"description":"Value for ledger id.","pattern":"^rol_[a-f0-9]{64}$","type":"string"},"limitations":{"description":"Value for limitations.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"obligations":{"description":"Value for obligations.","items":{"additionalProperties":false,"properties":{"application_layer":{"description":"Value for application layer.","enum":["cli","protocol","electron","persistence","process","runtime","packaging","native-abi","application","other"],"type":"string"},"authority_references":{"description":"Value for authority references.","items":{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"},"state":{"description":"Value for state.","enum":["candidate","observed","reviewed","unknown"],"type":"string"}},"required":["evidence_id","authority","state","location"],"type":"object"},"maxItems":1000,"minItems":1,"type":"array"},"binding":{"anyOf":[{"additionalProperties":false,"properties":{"fixtures":{"description":"Value for fixtures.","items":{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"case_kind":{"description":"Value for case kind.","enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"fixture_id":{"description":"Value for fixture id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["fixture_id","case_kind","authority","evidence_ids"],"type":"object"},"maxItems":100,"type":"array"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"original_cases":{"description":"Value for original cases.","items":{"additionalProperties":false,"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"description":"Value for kind.","enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","evidence_id","location"],"type":"object"},"maxItems":100,"type":"array"},"owner":{"additionalProperties":false,"description":"Value for owner.","properties":{"module_path":{"description":"Local filesystem path for module.","maxLength":4096,"minLength":1,"type":"string"},"owner_sha256":{"description":"Exact SHA-256 digest of owner.","pattern":"^[a-f0-9]{64}$","type":"string"},"symbol":{"description":"Value for symbol.","maxLength":1024,"minLength":1,"type":"string"}},"required":["module_path","symbol","owner_sha256"],"type":"object"},"parser_type":{"anyOf":[{"additionalProperties":false,"properties":{"domain_type":{"description":"Value for domain type.","maxLength":4096,"minLength":1,"type":"string"},"parser":{"description":"Value for parser.","maxLength":4096,"minLength":1,"type":"string"},"schema":{"description":"Value for schema.","maxLength":4096,"minLength":1,"type":"string"}},"required":["parser","schema","domain_type"],"type":"object"},{"type":"null"}],"description":"Value for parser type."},"verifier":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"command":{"description":"Value for command.","maxLength":4096,"minLength":1,"type":"string"},"enumerated_obligation_ids":{"description":"Value for enumerated obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"nondeterminism":{"additionalProperties":false,"description":"Value for nondeterminism.","properties":{"mode":{"description":"Operation mode that selects the requested behavior.","enum":["total-order","partial-order","finite-traces"],"type":"string"},"specification":{"description":"Value for specification.","maxLength":4096,"minLength":1,"type":"string"}},"required":["mode","specification"],"type":"object"},"result_evidence_id":{"description":"Exact Evidence v2 identifier for the result observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","skipped"],"type":"string"},"verifier_id":{"description":"Value for verifier id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["verifier_id","claim_id","command","authority","status","result_evidence_id","enumerated_obligation_ids","nondeterminism"],"type":"object"},{"type":"null"}],"description":"Value for verifier."}},"required":["obligation_id","owner","parser_type","original_cases","fixtures","verifier"],"type":"object"},{"type":"null"}],"description":"Value for binding."},"dependency_obligation_ids":{"description":"Value for dependency obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"diagnostics":{"description":"Value for diagnostics.","items":{"additionalProperties":false,"properties":{"code":{"description":"Value for code.","enum":["duplicate-definition","missing-owner","ambiguous-owner","missing-parser-type","missing-original-case","weak-original-case-authority","missing-case","weak-fixture-authority","missing-verifier","verifier-does-not-enumerate","missing-verifier-result","weak-verifier-authority","verifier-failed","static-only","contradiction","contradiction-evidence-missing","residual-unknown","dependency-missing","dependency-open","unavailable-authority","blocked","out-of-scope"],"type":"string"},"detail":{"description":"Requested response detail level.","maxLength":4096,"minLength":1,"type":"string"}},"required":["code","detail"],"type":"object"},"maxItems":1000,"type":"array"},"family":{"description":"Value for family.","maxLength":100,"minLength":1,"type":"string"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"obligation_version":{"description":"Value for obligation version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_cases":{"description":"Value for observed cases.","items":{"additionalProperties":false,"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"description":"Value for kind.","enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","evidence_id","location"],"type":"object"},"maxItems":100,"type":"array"},"origin":{"description":"Value for origin.","enum":["generated","reviewed"],"type":"string"},"required":{"description":"Value for required.","type":"boolean"},"required_case_kinds":{"description":"Value for required case kinds.","items":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"maxItems":5,"minItems":1,"type":"array"},"required_fixture_authority":{"description":"Value for required fixture authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"required_next_evidence":{"description":"Value for required next evidence.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"required_original_authority":{"description":"Value for required original authority.","enum":["static","runtime","process","external"],"type":"string"},"required_verifier_authority":{"description":"Value for required verifier authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"requires_parser_type":{"description":"Value for requires parser type.","type":"boolean"},"residual_unknown_ids":{"description":"Value for residual unknown ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"source_state":{"description":"Value for source state.","enum":["candidate","observed","reviewed","unknown"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["unowned","characterized","implemented","verified","contradicted","blocked","out-of-scope","unknown"],"type":"string"},"target":{"additionalProperties":false,"description":"Value for target.","properties":{"application_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for application node id."},"artifact_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of artifact."},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"},"semantic_node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for semantic node id."}},"required":["artifact_sha256","application_node_id","semantic_node_id","location"],"type":"object"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"},"unavailable_authority":{"description":"Value for unavailable authority.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"}},"required":["obligation_id","obligation_version","title","origin","application_layer","family","target","authority_references","source_state","observed_cases","required","required_case_kinds","required_original_authority","required_fixture_authority","required_verifier_authority","requires_parser_type","dependency_obligation_ids","residual_unknown_ids","unavailable_authority","required_next_evidence","binding","status","diagnostics"],"type":"object"},"maxItems":10000,"type":"array"},"ownership_graph":{"description":"Value for ownership graph.","items":{"additionalProperties":false,"properties":{"module_path":{"description":"Local filesystem path for module.","maxLength":4096,"minLength":1,"type":"string"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"symbol":{"description":"Value for symbol.","maxLength":1024,"minLength":1,"type":"string"}},"required":["obligation_id","module_path","symbol"],"type":"object"},"type":"array"},"reports":{"additionalProperties":false,"description":"Value for reports.","properties":{"contradicted_obligation_ids":{"description":"Value for contradicted obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"missing_owner_obligation_ids":{"description":"Value for missing owner obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"missing_verifier_obligation_ids":{"description":"Value for missing verifier obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"residual_unknown_ids":{"description":"Value for residual unknown ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"}},"required":["missing_owner_obligation_ids","missing_verifier_obligation_ids","contradicted_obligation_ids","residual_unknown_ids"],"type":"object"},"schema":{"const":"ReconstructionObligationLedger","description":"Value for schema.","type":"string"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"status":{"description":"Current lifecycle or verification status.","enum":["ready","open","failed","unknown"],"type":"string"},"summary":{"additionalProperties":false,"description":"Concise evidence-backed summary of the result.","properties":{"by_application_layer":{"description":"Value for by application layer.","items":{"additionalProperties":false,"properties":{"count":{"description":"Value for count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"description":"Value for key.","enum":["cli","protocol","electron","persistence","process","runtime","packaging","native-abi","application","other"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"by_evidence_authority":{"description":"Value for by evidence authority.","items":{"additionalProperties":false,"properties":{"count":{"description":"Value for count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"description":"Value for key.","enum":["candidate","observed","reviewed","unknown"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"by_status":{"description":"Value for by status.","items":{"additionalProperties":false,"properties":{"count":{"description":"Value for count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"description":"Value for key.","enum":["unowned","characterized","implemented","verified","contradicted","blocked","out-of-scope","unknown"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"required":{"description":"Value for required.","maximum":9007199254740991,"minimum":0,"type":"integer"},"required_open":{"description":"Value for required open.","maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"},"verified":{"description":"Value for verified.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","required","verified","required_open","by_status","by_application_layer","by_evidence_authority"],"type":"object"}},"required":["schema","schema_version","ledger_id","closure_digest","status","coverage","summary","reports","ownership_graph","dependency_graph","obligations","evidence_links","limitations"],"type":"object"},"operation_outcomes":{"description":"Value for operation outcomes.","items":{"additionalProperties":false,"properties":{"call_kind":{"description":"Value for call kind.","enum":["valid","malformed","over-limit","incompatible-provider","setup","permission","operation"],"type":"string"},"cli_exit_code":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for cli exit code."},"error_code":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},{"type":"null"}],"description":"Value for error code."},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"expected_success":{"description":"Expected success used to reject stale or mismatched input.","type":"boolean"},"mcp_status":{"anyOf":[{"enum":["success","non-success"],"type":"string"},{"type":"null"}],"description":"Value for mcp status."},"operation":{"description":"Value for operation.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"recovered":{"description":"Value for recovered.","type":"boolean"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":0,"type":"integer"},"surface":{"description":"Value for surface.","enum":["cli","mcp"],"type":"string"}},"required":["sequence","operation","surface","call_kind","expected_success","cli_exit_code","mcp_status","error_code","recovered","evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"},"replay":{"additionalProperties":false,"description":"Value for replay.","properties":{"deterministic":{"description":"Value for deterministic.","type":"boolean"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"expected_source_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Expected source digest used to reject stale or mismatched input."},"stale_input_detected":{"description":"Value for stale input detected.","type":"boolean"},"tamper_detected":{"description":"Value for tamper detected.","type":"boolean"}},"required":["expected_source_digest","deterministic","tamper_detected","stale_input_detected","evidence_ids"],"type":"object"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"stages":{"description":"Value for stages.","items":{"additionalProperties":false,"properties":{"capability_issue":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},{"type":"null"}],"description":"Value for capability issue."},"checks":{"description":"Value for checks.","items":{"additionalProperties":false,"properties":{"check_id":{"description":"Value for check id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"detail":{"description":"Requested response detail level.","maxLength":4096,"minLength":1,"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","truncated","skipped"],"type":"string"}},"required":["check_id","status","detail","evidence_ids"],"type":"object"},"maxItems":100,"type":"array"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"next_action":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for next action."},"required":{"description":"Value for required.","type":"boolean"},"stage_id":{"description":"Value for stage id.","enum":["discover-classify","diagnose-environment","acquire-authority","static-analysis","reactive-scenarios","compare-authority-candidate","preserve-contradictions","verify-reconstruction-closure","export-replay"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","truncated","skipped"],"type":"string"}},"required":["stage_id","required","status","capability_issue","next_action","evidence_ids","checks"],"type":"object"},"maxItems":9,"minItems":9,"type":"array"},"workflow_candidates":{"description":"Value for workflow candidates.","items":{"additionalProperties":false,"properties":{"compatibility":{"description":"Value for compatibility.","enum":["compatible","incompatible","unavailable"],"type":"string"},"fixture_id":{"description":"Value for fixture id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"invoked":{"description":"Value for invoked.","type":"boolean"},"provider_id":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},{"type":"null"}],"description":"Exact deep-analysis provider ID, or automatic selection when omitted."},"reason_code":{"description":"Value for reason code.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"selected":{"description":"Value for selected.","type":"boolean"},"workflow_id":{"description":"Value for workflow id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["fixture_id","workflow_id","provider_id","selected","invoked","compatibility","reason_code"],"type":"object"},"maxItems":1000,"minItems":1,"type":"array"}},"required":["schema_version","identity","client","capabilities","fixtures","workflow_candidates","grants","evidence_bundle","comparisons","contradictions","obligation_ledger","operation_outcomes","cleanup","closure_history","delegation_checks","replay","stages"],"type":"object"},"kind":"application","name":"evaluate_reconstruction_readiness","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"metrics":{"additionalProperties":false,"properties":{"cleanup_leak_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"divergence_localization_precision":{"maximum":1,"minimum":0,"type":"number"},"failed_calls_before_prerequisites":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"false_equivalence_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"first_valid_workflow_selection_rate":{"maximum":1,"minimum":0,"type":"number"},"incompatible_provider_invocations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"malformed_or_over_limit_call_rate":{"maximum":1,"minimum":0,"type":"number"},"nondeterministic_replay_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"recovery_rate":{"maximum":1,"minimum":0,"type":"number"},"unowned_obligation_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["first_valid_workflow_selection_rate","malformed_or_over_limit_call_rate","incompatible_provider_invocations","failed_calls_before_prerequisites","recovery_rate","divergence_localization_precision","false_equivalence_count","unowned_obligation_count","cleanup_leak_count","nondeterministic_replay_count"],"type":"object"},"report_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"report_id":{"pattern":"^rr_[a-f0-9]{64}$","type":"string"},"report_resource_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}\\\\/reconstruction-readiness-report$","type":"string"},"schema":{"const":"ReconstructionReadinessReport","type":"string"},"schema_version":{"const":1,"type":"number"},"source_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"status":{"enum":["pass","fail","unknown","unsupported","truncated","skipped"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"failed_findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"passed_required_stages":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"required_stages":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stages":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["stages","required_stages","passed_required_stages","findings","failed_findings","unknown_findings"],"type":"object"}},"required":["schema","schema_version","report_id","source_digest","report_digest","status","summary","metrics","report_resource_uri"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Evaluate Reconstruction Readiness"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Atomically commit one canonical evidence-backed reconstruction coverage workspace revision under an approved root. CAS revisions reject lost updates; every Evidence and residual-unknown reference must resolve in the embedded canonical bundle.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"approved":true,"expected_revision":null,"workspace":{"artifacts":[],"boundaries":[],"claims":[],"contradictions":[],"evidence_bundle":{"artifacts":[],"bundle_version":2,"captures":[],"environments":[],"providers":[],"records":[],"scenarios":[],"unknowns":[]},"name":"replacement","owners":[],"package_proofs":[],"previous_revision_sha256":null,"residual_unknown_ids":[],"revision":1,"revision_sha256":"0000000000000000000000000000000000000000000000000000000000000000","schema_version":1,"surfaces":[],"verifier_contracts":[],"verifier_results":[],"workspace_id":"rcw_0000000000000000000000000000000000000000000000000000000000000000"},"workspace_path":"/approved/coverage.json"}],"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"expected_revision":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}],"description":"Expected revision used to reject stale or mismatched input."},"workspace":{"additionalProperties":false,"description":"Value for workspace.","properties":{"artifacts":{"description":"Value for artifacts.","items":{"additionalProperties":false,"properties":{"artifact_id":{"description":"Value for artifact id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"artifact_sha256":{"description":"Exact SHA-256 digest of artifact.","pattern":"^[a-f0-9]{64}$","type":"string"},"environment_sha256":{"description":"Exact SHA-256 digest of environment.","pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"version":{"description":"Value for version.","maxLength":500,"minLength":1,"type":"string"}},"required":["artifact_id","artifact_sha256","version","environment_sha256","evidence_ids"],"type":"object"},"maxItems":1000,"type":"array"},"boundaries":{"description":"Value for boundaries.","items":{"additionalProperties":false,"properties":{"allowed_dispositions":{"description":"Value for allowed dispositions.","items":{"enum":["external","non-goal"],"type":"string"},"maxItems":2,"type":"array"},"allowed_unknown_ids":{"description":"Value for allowed unknown ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"boundary_id":{"description":"Exact reconstruction boundary identifier to evaluate.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"required_claim_ids":{"description":"Value for required claim ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"required_package_proof_kinds":{"description":"Value for required package proof kinds.","items":{"enum":["build","clean-install","package-contents","runtime-routing","authority-independence"],"type":"string"},"maxItems":5,"minItems":1,"type":"array"},"required_surface_ids":{"description":"Value for required surface ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"}},"required":["boundary_id","title","required_surface_ids","required_claim_ids","required_package_proof_kinds","allowed_dispositions","allowed_unknown_ids"],"type":"object"},"maxItems":1000,"type":"array"},"claims":{"description":"Value for claims.","items":{"additionalProperties":false,"properties":{"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"kind":{"description":"Value for kind.","maxLength":100,"minLength":1,"type":"string"},"required_authority":{"description":"Value for required authority.","enum":["shipped-artifact","controlled-replay","live-observation","external"],"type":"string"},"required_dimensions":{"description":"Value for required dimensions.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"surface_ids":{"description":"Value for surface ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"}},"required":["claim_id","title","kind","surface_ids","required_dimensions","required_authority"],"type":"object"},"maxItems":10000,"type":"array"},"contradictions":{"description":"Value for contradictions.","items":{"additionalProperties":false,"properties":{"claim_ids":{"description":"Value for claim ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"contradiction_id":{"description":"Value for contradiction id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":2,"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["active","resolved"],"type":"string"},"surface_ids":{"description":"Value for surface ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"}},"required":["contradiction_id","status","surface_ids","claim_ids","evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"},"evidence_bundle":{"description":"Value for evidence bundle.","properties":{"artifacts":{"description":"Value for artifacts.","items":{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"}},"required":["digest","format","architecture"],"type":"object"},"type":"array"},"bundle_version":{"const":2,"description":"Value for bundle version.","type":"number"},"captures":{"description":"Value for captures.","items":{"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"}},"required":["evidence_id","predicate_type"],"type":"object"},"type":"array"},"environments":{"description":"Value for environments.","items":{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},"type":"array"},"providers":{"description":"Value for providers.","items":{"properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"type":"array"},"records":{"description":"Value for records.","items":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]},"type":"array"},"scenarios":{"description":"Value for scenarios.","items":{"properties":{"authority":{"const":"controlled-replay","description":"Value for authority.","type":"string"},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"operation":{"description":"Value for operation.","minLength":1,"type":"string"}},"required":["evidence_id","operation","authority"],"type":"object"},"type":"array"},"unknowns":{"description":"Value for unknowns.","items":{"properties":{"contradicting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the contradicting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"description":"Value for domain.","maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the mutation observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for previous revision digest."},"question":{"description":"Concrete unresolved question to retain for later investigation.","maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"description":"Value for recommended probes.","items":{"properties":{"operation":{"description":"Value for operation.","maxLength":200,"minLength":1,"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"description":"Value for registry version.","type":"number"},"relationships":{"description":"Value for relationships.","items":{"properties":{"type":{"description":"Value for type.","enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}],"description":"Value for required authority."},"required_confidence":{"description":"Value for required confidence.","enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for architecture."},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for id."},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}],"description":"Value for isolation."},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for platform."}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for required environment."},"resolution":{"anyOf":[{"oneOf":[{"properties":{"disposition":{"const":"verified","description":"Value for disposition.","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"properties":{"disposition":{"description":"Value for disposition.","enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}],"description":"Value for resolution."},"revision":{"description":"Value for revision.","maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"description":"Value for revision digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for scope digest."},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the supporting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"},"type":"array"}},"required":["bundle_version","artifacts","providers","environments","scenarios","captures","unknowns","records"],"type":"object"},"name":{"description":"Exact name used by this operation.","maxLength":200,"minLength":1,"type":"string"},"owners":{"description":"Value for owners.","items":{"additionalProperties":false,"properties":{"ownership":{"description":"Value for ownership.","oneOf":[{"additionalProperties":false,"properties":{"authority_route":{"description":"Value for authority route.","enum":["none","detected","unknown"],"type":"string"},"disposition":{"const":"implemented","description":"Value for disposition.","type":"string"},"owner_export":{"anyOf":[{"maxLength":500,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for owner export."},"owner_path":{"description":"Local filesystem path for owner.","maxLength":4096,"minLength":1,"type":"string"},"owner_sha256":{"description":"Exact SHA-256 digest of owner.","pattern":"^[a-f0-9]{64}$","type":"string"},"package_state":{"description":"Value for package state.","enum":["distributed","missing","unknown"],"type":"string"},"path_state":{"description":"Value for path state.","enum":["present","missing","unknown"],"type":"string"}},"required":["disposition","owner_path","owner_export","owner_sha256","path_state","package_state","authority_route"],"type":"object"},{"additionalProperties":false,"properties":{"disposition":{"description":"Value for disposition.","enum":["external","non-goal"],"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":4096,"minLength":1,"type":"string"}},"required":["disposition","rationale"],"type":"object"}]},"surface_id":{"description":"Value for surface id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["surface_id","ownership"],"type":"object"},"maxItems":10000,"type":"array"},"package_proofs":{"description":"Value for package proofs.","items":{"additionalProperties":false,"properties":{"artifact_sha256s":{"description":"Value for artifact sha256s.","items":{"pattern":"^[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"kind":{"description":"Value for kind.","enum":["build","clean-install","package-contents","runtime-routing","authority-independence"],"type":"string"},"proof_id":{"description":"Value for proof id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","skipped"],"type":"string"}},"required":["proof_id","kind","status","artifact_sha256s","evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"},"previous_revision_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of previous revision."},"residual_unknown_ids":{"description":"Value for residual unknown ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"type":"array"},"revision":{"description":"Value for revision.","maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_sha256":{"description":"Exact SHA-256 digest of revision.","pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"surfaces":{"description":"Value for surfaces.","items":{"additionalProperties":false,"properties":{"artifact_id":{"description":"Value for artifact id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"authority":{"description":"Value for authority.","enum":["observed","derived","inferred","historical","external"],"type":"string"},"dependency_surface_ids":{"description":"Value for dependency surface ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"family":{"description":"Value for family.","maxLength":100,"minLength":1,"type":"string"},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"},"occurrence_id":{"anyOf":[{"maxLength":500,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for occurrence id."},"surface_id":{"description":"Value for surface id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["surface_id","family","artifact_id","occurrence_id","location","authority","dependency_surface_ids","evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"},"verifier_contracts":{"description":"Value for verifier contracts.","items":{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","live-observation","external"],"type":"string"},"claim_ids":{"description":"Value for claim ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"contract_sha256":{"description":"Exact SHA-256 digest of contract.","pattern":"^[a-f0-9]{64}$","type":"string"},"dimensions":{"description":"Value for dimensions.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"max_age_ms":{"description":"Maximum permitted age ms for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"minimum_repeats":{"description":"Value for minimum repeats.","maximum":1000,"minimum":1,"type":"integer"},"normalization_removes_dimensions":{"const":false,"description":"Value for normalization removes dimensions.","type":"boolean"},"normalization_sha256":{"description":"Exact SHA-256 digest of normalization.","pattern":"^[a-f0-9]{64}$","type":"string"},"verifier_id":{"description":"Value for verifier id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["verifier_id","claim_ids","dimensions","authority","max_age_ms","minimum_repeats","normalization_sha256","normalization_removes_dimensions","contract_sha256"],"type":"object"},"maxItems":10000,"type":"array"},"verifier_results":{"description":"Value for verifier results.","items":{"additionalProperties":false,"properties":{"artifact_sha256s":{"description":"Value for artifact sha256s.","items":{"pattern":"^[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"contract_sha256":{"description":"Exact SHA-256 digest of contract.","pattern":"^[a-f0-9]{64}$","type":"string"},"covered_claim_ids":{"description":"Value for covered claim ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"covered_dimensions":{"description":"Value for covered dimensions.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"normalization_sha256":{"description":"Exact SHA-256 digest of normalization.","pattern":"^[a-f0-9]{64}$","type":"string"},"observed_at":{"description":"Value for observed at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z|([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)))$","type":"string"},"owner_sha256s":{"description":"Value for owner sha256s.","items":{"pattern":"^[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"repeats":{"description":"Value for repeats.","maximum":1000,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","truncated","skipped"],"type":"string"},"verifier_id":{"description":"Value for verifier id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["verifier_id","contract_sha256","observed_at","status","covered_claim_ids","covered_dimensions","artifact_sha256s","owner_sha256s","normalization_sha256","repeats","evidence_ids"],"type":"object"},"maxItems":100000,"type":"array"},"workspace_id":{"description":"Value for workspace id.","pattern":"^rcw_[a-f0-9]{64}$","type":"string"}},"required":["schema_version","workspace_id","name","revision","previous_revision_sha256","evidence_bundle","artifacts","surfaces","owners","claims","verifier_contracts","verifier_results","residual_unknown_ids","contradictions","package_proofs","boundaries","revision_sha256"],"type":"object"},"workspace_path":{"description":"Approved local path of the persistent investigation workspace.","maxLength":4096,"minLength":1,"type":"string"}},"required":["approved","workspace_path","expected_revision","workspace"],"type":"object"},"kind":"application","name":"commit_reconstruction_coverage","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"evidence_records":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"workspace_id":{"pattern":"^rcw_[a-f0-9]{64}$","type":"string"},"workspace_path":{"type":"string"}},"required":["workspace_path","bytes","workspace_id","revision","revision_sha256","evidence_records"],"type":"object"},"requiresSession":false,"title":"Commit Reconstruction Coverage"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Evaluate one named reconstruction boundary from a canonical coverage workspace. Missing ownership or inventory is partial; stale, weak, truncated, skipped, or unresolved proof is unknown; contradictions, failed proof, missing owners, and authority routing fail closed.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"boundary_id":"replacement.cli","workspace_path":"/approved/coverage.json"}],"properties":{"boundary_id":{"description":"Exact reconstruction boundary identifier to evaluate.","maxLength":200,"minLength":1,"type":"string"},"workspace_path":{"description":"Approved local path of the persistent investigation workspace.","maxLength":4096,"minLength":1,"type":"string"}},"required":["workspace_path","boundary_id"],"type":"object"},"kind":"application","name":"query_reconstruction_coverage","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"boundary_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100000,"type":"array"},"reasons":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["surface-missing","owner-missing","owner-duplicate","owner-path-missing","owner-path-unknown","owner-undistributed","owner-distribution-unknown","authority-routing-detected","authority-routing-unknown","disposition-not-allowed","dependency-surface-missing","claim-missing","verifier-missing","verifier-duplicate","verifier-result-missing","verifier-result-stale","verifier-result-incompatible","verifier-failed","verifier-unknown","active-unknown","active-contradiction","package-proof-missing","package-proof-failed","package-proof-unknown"],"type":"string"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"subject_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["code","subject_id","detail"],"type":"object"},"maxItems":100000,"type":"array"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"operation":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"rationale":{"maxLength":4096,"minLength":1,"type":"string"},"subject_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["operation","subject_id","rationale"],"type":"object"},"maxItems":100000,"type":"array"},"status":{"enum":["partial","failed","unknown","ready"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"reasons":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"required_claims":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"required_surfaces":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["required_surfaces","required_claims","reasons"],"type":"object"},"workspace_revision_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["boundary_id","status","workspace_revision_sha256","summary","reasons","recommended_probes","evidence_ids"],"type":"object"},"requiresSession":false,"title":"Query Reconstruction Coverage"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Open a local executable, application bundle, archive, JavaScript, source map, plist, or analysis database after validation. provider_id selects one deep provider or deterministic auto selection; the binding remains stable until close or an explicit switch, with no failure fallback. An optional snapshot v2 is imported atomically and must match the binary identity, concrete provider, and canonical analysis profile exactly.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"path":"/tmp/fixture"}],"properties":{"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"},"provider_id":{"anyOf":[{"const":"auto","type":"string"},{"maxLength":64,"minLength":1,"pattern":"^[a-z][a-z0-9-]*$","type":"string"}],"description":"Exact deep-analysis provider ID, or automatic selection when omitted."},"snapshot_path":{"description":"Local filesystem path for snapshot.","minLength":1,"type":"string"}},"required":["path"],"type":"object"},"kind":"session","name":"open_binary","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map"],"type":"string"},"kind":{"enum":["executable","database","archive","artifact"],"type":"string"},"loaderArgs":{"items":{"type":"string"},"type":"array"},"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","format","kind","loaderArgs","sha256","architecture"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Open Binary"},{"analysisOperation":null,"annotations":{"destructiveHint":true,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Optionally write a provider-neutral analysis snapshot atomically, then close the active target and every provider resource started for it. Snapshot files require an operator-approved root and explicit overwrite; a failed save leaves the session open so cached analysis is not lost.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":true,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"overwrite":false}],"properties":{"overwrite":{"default":false,"description":"Whether an existing destination may be replaced.","type":"boolean"},"snapshot_path":{"description":"Local filesystem path for snapshot.","minLength":1,"type":"string"}},"type":"object"},"kind":"session","name":"close_binary","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"anyOf":[{"type":"null"},{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"entries":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"}},"required":["path","bytes","entries"],"type":"object"}]}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Close Binary"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Report compact target, provider, and alignment state without starting analysis. The default summary is the routing check agents should use; detail=capabilities returns one family-filtered availability page, while detail=full is reserved for complete provider diagnostics.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":false,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"cursor":0,"detail":"summary","limit":25}],"properties":{"capability_family":{"description":"Optional tool family for detail=capabilities","enum":["official-proxy","enhanced","native-provider","artifact-provider","managed-provider","browser-provider","electron-provider","runtime-provider","application","session"],"type":"string"},"cursor":{"default":0,"description":"Zero-based capability cursor for detail=capabilities","maximum":9007199254740991,"minimum":0,"type":"integer"},"detail":{"default":"summary","description":"summary returns routing state; capabilities returns one filtered tool-availability page; full returns complete diagnostics only when required","enum":["summary","capabilities","full"],"type":"string"},"expected_catalog_digest":{"description":"Expected catalog digest used to reject stale or mismatched input.","pattern":"^[a-f0-9]{64}$","type":"string"},"expected_package_version":{"description":"Expected package version used to reject stale or mismatched input.","minLength":1,"type":"string"},"expected_server_path":{"description":"Expected server path used to reject stale or mismatched input.","minLength":1,"type":"string"},"limit":{"default":25,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"}},"type":"object"},"kind":"session","name":"binary_session","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema2":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema2"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema2"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"anyOf":[{"additionalProperties":false,"properties":{"active_provider":{"anyOf":[{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},{"type":"null"}]},"alignment":{"additionalProperties":false,"properties":{"reasons":{"items":{"type":"string"},"type":"array"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"enum":["aligned","mcp_server_restart_required","unknown"],"type":"string"}},"required":["state","reasons","remediation"],"type":"object"},"analysis_activity":{"additionalProperties":false,"properties":{"providers":{"items":{"additionalProperties":false,"properties":{"active":{"anyOf":[{"additionalProperties":false,"properties":{"caller_state":{"enum":["waiting","timed_out","cancelled"],"type":"string"},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operation":{"minLength":1,"type":"string"},"request_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"timeout_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["request_id","operation","elapsed_ms","timeout_ms","caller_state"],"type":"object"},{"type":"null"}]},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"queued_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["provider","active","queued_requests"],"type":"object"},"type":"array"},"status":{"enum":["not_observed","idle","busy","timed_out_busy"],"type":"string"}},"required":["status","providers"],"type":"object"},"open":{"type":"boolean"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"recommended_actions":{"items":{"type":"string"},"type":"array"},"target":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map"],"type":"string"},"kind":{"enum":["executable","database","archive","artifact"],"type":"string"},"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","format","kind","sha256","architecture"],"type":"object"},{"type":"null"}]},"view":{"const":"summary","type":"string"}},"required":["view","open","provider","active_provider","target","alignment","analysis_activity","recommended_actions"],"type":"object"},{"additionalProperties":false,"properties":{"active_provider":{"anyOf":[{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},{"type":"null"}]},"capabilities":{"additionalProperties":false,"properties":{"cursor":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"has_more":{"type":"boolean"},"items":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":true,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"const":"available","type":"string"},"remediation":{"type":"null"},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":false,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"enum":["client_capability_missing","target_required","provider_missing","provider_unavailable","target_unsupported","unsupported_host","policy_disabled"],"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"}]},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_cursor":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","cursor","limit","total","next_cursor","has_more"],"type":"object"},"capability_family":{"anyOf":[{"type":"string"},{"type":"null"}]},"client_features":{"additionalProperties":false,"properties":{"elicitation_form":{"type":"boolean"},"elicitation_url":{"type":"boolean"},"roots":{"type":"boolean"},"sampling":{"type":"boolean"}},"required":["elicitation_form","elicitation_url","roots","sampling"],"type":"object"},"open":{"type":"boolean"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"view":{"const":"capabilities","type":"string"}},"required":["view","open","provider","active_provider","capability_family","capabilities","client_features"],"type":"object"},{"anyOf":[{"additionalProperties":false,"properties":{"analysis_activity":{"additionalProperties":false,"properties":{"providers":{"items":{"additionalProperties":false,"properties":{"active":{"anyOf":[{"additionalProperties":false,"properties":{"caller_state":{"enum":["waiting","timed_out","cancelled"],"type":"string"},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operation":{"minLength":1,"type":"string"},"request_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"timeout_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["request_id","operation","elapsed_ms","timeout_ms","caller_state"],"type":"object"},{"type":"null"}]},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"queued_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["provider","active","queued_requests"],"type":"object"},"type":"array"},"status":{"enum":["not_observed","idle","busy","timed_out_busy"],"type":"string"}},"required":["status","providers"],"type":"object"},"analysis_provider_binding":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"selection_source":{"enum":["request","environment","auto-single-candidate"],"type":"string"}},"required":["provider","selection_source","analysis_profile"],"type":"object"},{"type":"null"}]},"analysis_provider_candidates":{"items":{"additionalProperties":false,"properties":{"availability":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"type":"null"},"status":{"const":"available","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unavailable","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"}]},"capabilities":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"availability_code":{"type":"null"},"available":{"const":true,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"type":"null"}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"},{"additionalProperties":false,"properties":{"availability_code":{"anyOf":[{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},{"type":"null"}]},"available":{"const":false,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"}]},"type":"array"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"selected":{"type":"boolean"},"target_support":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unknown","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"type":"null"},"status":{"const":"supported","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"enum":["target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported"],"type":"string"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unsupported","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"}]}},"required":["provider","availability","target_support","selected","capabilities"],"type":"object"},"type":"array"},"analysis_run":{"anyOf":[{"additionalProperties":false,"properties":{"process_lineage":{"oneOf":[{"additionalProperties":false,"properties":{"status":{"const":"not_observed","type":"string"}},"required":["status"],"type":"object"},{"additionalProperties":false,"properties":{"snapshots":{"items":{"additionalProperties":false,"properties":{"observation":{"oneOf":[{"additionalProperties":false,"properties":{"launcher_pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unavailable","type":"string"}},"required":["status","observed_at","launcher_pid","process_group_id","reason"],"type":"object"},{"additionalProperties":false,"properties":{"descendants":{"items":{"additionalProperties":false,"properties":{"parent_pid":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["pid","parent_pid","process_group_id"],"type":"object"},"type":"array"},"launcher_parent_pid":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"launcher_pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"},"status":{"const":"verified","type":"string"}},"required":["status","observed_at","schema_version","launcher_pid","process_group_id","launcher_parent_pid","descendants"],"type":"object"}]},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"}},"required":["provider","observation"],"type":"object"},"type":"array"},"status":{"const":"snapshots","type":"string"}},"required":["status","snapshots"],"type":"object"}]},"run_id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["run_id","process_lineage"],"type":"object"},{"type":"null"}]},"capabilities":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"availability_code":{"type":"null"},"available":{"const":true,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"type":"null"}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"},{"additionalProperties":false,"properties":{"availability_code":{"anyOf":[{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},{"type":"null"}]},"available":{"const":false,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"}]},"type":"array"},"client_features":{"additionalProperties":false,"properties":{"elicitation_form":{"type":"boolean"},"elicitation_url":{"type":"boolean"},"roots":{"type":"boolean"},"sampling":{"type":"boolean"}},"required":["elicitation_form","elicitation_url","roots","sampling"],"type":"object"},"open":{"const":false,"type":"boolean"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"providers":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"type":"array"},"server_identity":{"additionalProperties":false,"properties":{"alignment":{"additionalProperties":false,"properties":{"reasons":{"items":{"type":"string"},"type":"array"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"enum":["aligned","mcp_server_restart_required","unknown"],"type":"string"}},"required":["state","reasons","remediation"],"type":"object"},"catalog":{"additionalProperties":{"$ref":"#/$defs/__schema2"},"propertyNames":{"type":"string"},"type":"object"},"client":{"anyOf":[{"additionalProperties":false,"properties":{"name":{"type":"string"},"version":{"type":"string"}},"required":["name","version"],"type":"object"},{"type":"null"}]},"negotiated_protocol_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"package":{"additionalProperties":false,"properties":{"build_commit":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"root_path":{"type":"string"},"version":{"type":"string"}},"required":["name","version","root_path","build_commit"],"type":"object"},"protocol_features":{"additionalProperties":false,"properties":{"cancellation":{"type":"boolean"},"elicitation":{"type":"boolean"},"evidence_resources":{"type":"boolean"},"progress":{"type":"boolean"}},"required":["progress","cancellation","evidence_resources","elicitation"],"type":"object"},"sdk":{"additionalProperties":false,"properties":{"client_test":{"type":"string"},"core":{"type":"string"},"server":{"type":"string"}},"required":["server","client_test","core"],"type":"object"},"server":{"additionalProperties":false,"properties":{"command_path":{"type":"string"},"name":{"type":"string"},"started_at":{"type":"string"},"version":{"type":"string"}},"required":["name","version","started_at","command_path"],"type":"object"},"skill":{"additionalProperties":false,"properties":{"expected_version":{"type":"string"},"name":{"type":"string"}},"required":["name","expected_version"],"type":"object"}},"required":["package","server","sdk","negotiated_protocol_version","client","skill","catalog","protocol_features","alignment"],"type":"object"},"tool_availability":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":true,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"const":"available","type":"string"},"remediation":{"type":"null"},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":false,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"enum":["client_capability_missing","target_required","provider_missing","provider_unavailable","target_unsupported","unsupported_host","policy_disabled"],"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"}]},"type":"array"},"view":{"const":"full","type":"string"}},"required":["provider","providers","capabilities","analysis_run","analysis_activity","analysis_provider_binding","analysis_provider_candidates","tool_availability","client_features","server_identity","view","open"],"type":"object"},{"additionalProperties":false,"properties":{"analysis_activity":{"additionalProperties":false,"properties":{"providers":{"items":{"additionalProperties":false,"properties":{"active":{"anyOf":[{"additionalProperties":false,"properties":{"caller_state":{"enum":["waiting","timed_out","cancelled"],"type":"string"},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operation":{"minLength":1,"type":"string"},"request_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"timeout_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["request_id","operation","elapsed_ms","timeout_ms","caller_state"],"type":"object"},{"type":"null"}]},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"queued_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["provider","active","queued_requests"],"type":"object"},"type":"array"},"status":{"enum":["not_observed","idle","busy","timed_out_busy"],"type":"string"}},"required":["status","providers"],"type":"object"},"analysis_provider_binding":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"selection_source":{"enum":["request","environment","auto-single-candidate"],"type":"string"}},"required":["provider","selection_source","analysis_profile"],"type":"object"},{"type":"null"}]},"analysis_provider_candidates":{"items":{"additionalProperties":false,"properties":{"availability":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"type":"null"},"status":{"const":"available","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unavailable","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"}]},"capabilities":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"availability_code":{"type":"null"},"available":{"const":true,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"type":"null"}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"},{"additionalProperties":false,"properties":{"availability_code":{"anyOf":[{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},{"type":"null"}]},"available":{"const":false,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"}]},"type":"array"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"selected":{"type":"boolean"},"target_support":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unknown","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"type":"null"},"status":{"const":"supported","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"enum":["target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported"],"type":"string"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unsupported","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"}]}},"required":["provider","availability","target_support","selected","capabilities"],"type":"object"},"type":"array"},"analysis_run":{"anyOf":[{"additionalProperties":false,"properties":{"process_lineage":{"oneOf":[{"additionalProperties":false,"properties":{"status":{"const":"not_observed","type":"string"}},"required":["status"],"type":"object"},{"additionalProperties":false,"properties":{"snapshots":{"items":{"additionalProperties":false,"properties":{"observation":{"oneOf":[{"additionalProperties":false,"properties":{"launcher_pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unavailable","type":"string"}},"required":["status","observed_at","launcher_pid","process_group_id","reason"],"type":"object"},{"additionalProperties":false,"properties":{"descendants":{"items":{"additionalProperties":false,"properties":{"parent_pid":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["pid","parent_pid","process_group_id"],"type":"object"},"type":"array"},"launcher_parent_pid":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"launcher_pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"},"status":{"const":"verified","type":"string"}},"required":["status","observed_at","schema_version","launcher_pid","process_group_id","launcher_parent_pid","descendants"],"type":"object"}]},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"}},"required":["provider","observation"],"type":"object"},"type":"array"},"status":{"const":"snapshots","type":"string"}},"required":["status","snapshots"],"type":"object"}]},"run_id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["run_id","process_lineage"],"type":"object"},{"type":"null"}]},"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"capabilities":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"availability_code":{"type":"null"},"available":{"const":true,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"type":"null"}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"},{"additionalProperties":false,"properties":{"availability_code":{"anyOf":[{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},{"type":"null"}]},"available":{"const":false,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"}]},"type":"array"},"client_features":{"additionalProperties":false,"properties":{"elicitation_form":{"type":"boolean"},"elicitation_url":{"type":"boolean"},"roots":{"type":"boolean"},"sampling":{"type":"boolean"}},"required":["elicitation_form","elicitation_url","roots","sampling"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map"],"type":"string"},"kind":{"enum":["executable","database","archive","artifact"],"type":"string"},"open":{"const":true,"type":"boolean"},"path":{"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"providers":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"type":"array"},"server_identity":{"additionalProperties":false,"properties":{"alignment":{"additionalProperties":false,"properties":{"reasons":{"items":{"type":"string"},"type":"array"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"enum":["aligned","mcp_server_restart_required","unknown"],"type":"string"}},"required":["state","reasons","remediation"],"type":"object"},"catalog":{"additionalProperties":{"$ref":"#/$defs/__schema2"},"propertyNames":{"type":"string"},"type":"object"},"client":{"anyOf":[{"additionalProperties":false,"properties":{"name":{"type":"string"},"version":{"type":"string"}},"required":["name","version"],"type":"object"},{"type":"null"}]},"negotiated_protocol_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"package":{"additionalProperties":false,"properties":{"build_commit":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"root_path":{"type":"string"},"version":{"type":"string"}},"required":["name","version","root_path","build_commit"],"type":"object"},"protocol_features":{"additionalProperties":false,"properties":{"cancellation":{"type":"boolean"},"elicitation":{"type":"boolean"},"evidence_resources":{"type":"boolean"},"progress":{"type":"boolean"}},"required":["progress","cancellation","evidence_resources","elicitation"],"type":"object"},"sdk":{"additionalProperties":false,"properties":{"client_test":{"type":"string"},"core":{"type":"string"},"server":{"type":"string"}},"required":["server","client_test","core"],"type":"object"},"server":{"additionalProperties":false,"properties":{"command_path":{"type":"string"},"name":{"type":"string"},"started_at":{"type":"string"},"version":{"type":"string"}},"required":["name","version","started_at","command_path"],"type":"object"},"skill":{"additionalProperties":false,"properties":{"expected_version":{"type":"string"},"name":{"type":"string"}},"required":["name","expected_version"],"type":"object"}},"required":["package","server","sdk","negotiated_protocol_version","client","skill","catalog","protocol_features","alignment"],"type":"object"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"tool_availability":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":true,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"const":"available","type":"string"},"remediation":{"type":"null"},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":false,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"enum":["client_capability_missing","target_required","provider_missing","provider_unavailable","target_unsupported","unsupported_host","policy_disabled"],"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"}]},"type":"array"},"view":{"const":"full","type":"string"}},"required":["provider","providers","capabilities","analysis_run","analysis_activity","analysis_provider_binding","analysis_provider_candidates","tool_availability","client_features","server_identity","view","open","path","format","kind","sha256","architecture"],"type":"object"}]}]}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Binary Session"},{"analysisOperation":null,"annotations":{"destructiveHint":true,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Atomically write the session\'s deterministic Evidence v2 bundle beneath an operator-approved root. Existing files require overwrite: true; records and manifests use canonical byte-stable ordering. For an in-session read, use snapshot_evidence_bundle and read its exact resource URI instead.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":true,"mutatesSession":false,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"overwrite":false,"path":"/tmp/evidence.json"}],"properties":{"overwrite":{"default":false,"description":"Whether an existing destination may be replaced.","type":"boolean"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["path"],"type":"object"},"kind":"session","name":"export_evidence_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"records":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["path","bytes","records","unknowns"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Export Evidence Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Read a bounded local JSON bundle beneath an operator-approved root, validate every Evidence v2 ID and canonical manifest, then atomically merge it. Imported content is data only and is never executed.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"path":"evidence.json"}],"properties":{"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["path"],"type":"object"},"kind":"session","name":"import_evidence_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"imported":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_added":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["imported","unknowns_added","total"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Import Evidence Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Run one bounded process under a PTY using operator-approved executable and working roots. Produces Process Capture v4; legacy v3 captures cannot be upgraded and must be recaptured with this tool. Requires approved: true; unknown_registry_approved: true separately records capture residuals. Captures raw and xterm-rendered terminal frames, scripted interactions, lifecycle filesystem checkpoints, process ownership, declarative command shims, and loopback replay. Disabled unless operator policy enables it; not a security sandbox.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":false,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$defs":{"__schema0":{"oneOf":[{"additionalProperties":false,"properties":{"cardinality":{"additionalProperties":false,"description":"Value for cardinality.","properties":{"max":{"description":"Value for max.","exclusiveMinimum":0,"maximum":256,"type":"integer"},"min":{"description":"Value for min.","exclusiveMinimum":0,"maximum":256,"type":"integer"}},"required":["min","max"],"type":"object"},"consume":{"description":"Value for consume.","type":"boolean"},"exact":{"$ref":"#/$defs/__schema1","description":"Value for exact."},"ignore_fields":{"description":"Value for ignore fields.","items":{"enum":["sequence","at_ms","scheduled_at_ms","dispatched_at_ms","elapsed_ms"],"type":"string"},"maxItems":5,"type":"array"},"kind":{"const":"event","description":"Value for kind.","type":"string"},"since":{"description":"Value for since.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"scenario_start","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"state_entry","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"checkpoint","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"event_id":{"description":"Value for event id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"kind":{"const":"event_id","description":"Value for kind.","type":"string"}},"required":["kind","event_id"],"type":"object"}]},"source":{"description":"Value for source.","enum":["terminal_raw","terminal_rendered","interaction","lifecycle","process","filesystem","http","websocket","shim","replay_transition"],"type":"string"}},"required":["kind","source","exact","ignore_fields","since","consume","cardinality"],"type":"object"},{"additionalProperties":false,"properties":{"case_sensitive":{"const":true,"description":"Whether text matching distinguishes uppercase and lowercase.","type":"boolean"},"consume":{"description":"Value for consume.","type":"boolean"},"control_sequences":{"const":"include","description":"Value for control sequences.","type":"string"},"encoding":{"const":"utf8","description":"Value for encoding.","type":"string"},"kind":{"const":"terminal_text","description":"Value for kind.","type":"string"},"literal":{"description":"Value for literal.","maxLength":10000,"minLength":1,"type":"string"},"occurrence":{"description":"Value for occurrence.","exclusiveMinimum":0,"maximum":1000,"type":"integer"},"since":{"description":"Value for since.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"scenario_start","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"state_entry","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"checkpoint","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"event_id":{"description":"Value for event id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"kind":{"const":"event_id","description":"Value for kind.","type":"string"}},"required":["kind","event_id"],"type":"object"}]},"view":{"const":"decoded","description":"Value for view.","type":"string"}},"required":["kind","view","encoding","literal","case_sensitive","control_sequences","occurrence","since","consume"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"all","description":"Value for kind.","type":"string"},"triggers":{"description":"Value for triggers.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"minItems":2,"type":"array"}},"required":["kind","triggers"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"any","description":"Value for kind.","type":"string"},"triggers":{"description":"Value for triggers.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"minItems":2,"type":"array"}},"required":["kind","triggers"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"sequence","description":"Value for kind.","type":"string"},"triggers":{"description":"Value for triggers.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"minItems":1,"type":"array"}},"required":["kind","triggers"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"repeat","description":"Value for kind.","type":"string"},"max":{"description":"Value for max.","exclusiveMinimum":0,"maximum":64,"type":"integer"},"min":{"description":"Value for min.","exclusiveMinimum":0,"maximum":64,"type":"integer"},"trigger":{"$ref":"#/$defs/__schema0","description":"Value for trigger."}},"required":["kind","trigger","min","max"],"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"approved":true,"arguments":[],"checkpoints":[],"command_shims":[],"environment":{},"events":[],"executable":"/usr/bin/true","filesystem_roots":[],"idle_timeout_ms":30000,"inherit_environment":[],"limits":{"connections":100,"file_bytes":10000000,"files":10000,"filesystem_depth":16,"frames":10000,"output_bytes":1000000,"processes":1000,"protocol_body_bytes":1000000,"protocol_events":10000},"network_access":"host","normalization":{"paths":true,"patterns":[],"pids":true,"ports":true,"time_bucket_ms":10},"reactive":null,"replay":{"http":[],"machine":null,"websocket_connections":[],"websocket_messages":[]},"secret_aliases":[],"settle_ms":100,"terminal":{"columns":80,"rows":24,"scrollback":1000},"timeout_ms":30000,"working_directory":"/tmp"}],"properties":{"approved":{"const":true,"description":"Explicit per-call acknowledgement that this operation launches the target","type":"boolean"},"arguments":{"default":[],"description":"Value for arguments.","items":{"type":"string"},"maxItems":256,"type":"array"},"checkpoints":{"default":[],"description":"Value for checkpoints.","items":{"properties":{"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","type":"string"},"trigger":{"description":"Value for trigger.","oneOf":[{"properties":{"at_ms":{"description":"Value for at ms.","maximum":300000,"minimum":0,"type":"integer"},"type":{"const":"time","description":"Value for type.","type":"string"}},"required":["type","at_ms"],"type":"object"},{"properties":{"occurrence":{"default":1,"description":"Value for occurrence.","exclusiveMinimum":0,"maximum":1000,"type":"integer"},"type":{"const":"terminal_literal","description":"Value for type.","type":"string"},"value":{"description":"Value for value.","maxLength":10000,"minLength":1,"type":"string"}},"required":["type","value"],"type":"object"},{"properties":{"type":{"const":"root_exit","description":"Value for type.","type":"string"}},"required":["type"],"type":"object"},{"properties":{"type":{"const":"settled","description":"Value for type.","type":"string"}},"required":["type"],"type":"object"}]}},"required":["name","trigger"],"type":"object"},"maxItems":64,"type":"array"},"command_shims":{"default":[],"description":"Value for command shims.","items":{"properties":{"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$","type":"string"},"routes":{"description":"Value for routes.","items":{"properties":{"arguments":{"description":"Value for arguments.","items":{"type":"string"},"maxItems":256,"type":"array"},"max_calls":{"default":1,"description":"Maximum permitted calls for this operation.","exclusiveMinimum":0,"maximum":100,"type":"integer"},"outputs":{"default":[],"description":"Value for outputs.","items":{"properties":{"at_ms":{"description":"Value for at ms.","maximum":300000,"minimum":0,"type":"integer"},"data":{"description":"Value for data.","maxLength":1000000,"type":"string"},"stream":{"description":"Value for stream.","enum":["stdout","stderr"],"type":"string"}},"required":["at_ms","stream","data"],"type":"object"},"maxItems":1000,"type":"array"},"termination":{"description":"Value for termination.","oneOf":[{"properties":{"code":{"description":"Value for code.","maximum":255,"minimum":0,"type":"integer"},"type":{"const":"exit","description":"Value for type.","type":"string"}},"required":["type","code"],"type":"object"},{"properties":{"signal":{"description":"Value for signal.","enum":["SIGINT","SIGTERM","SIGKILL"],"type":"string"},"type":{"const":"signal","description":"Value for type.","type":"string"}},"required":["type","signal"],"type":"object"}]}},"required":["arguments","termination"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"}},"required":["name","routes"],"type":"object"},"maxItems":32,"type":"array"},"environment":{"additionalProperties":{"type":"string"},"default":{},"description":"Value for environment.","propertyNames":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*$","type":"string"},"type":"object"},"events":{"default":[],"description":"Value for events.","items":{"oneOf":[{"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"data":{"description":"Value for data.","type":"string"},"sensitive":{"default":false,"description":"Value for sensitive.","type":"boolean"},"type":{"const":"input","description":"Value for type.","type":"string"}},"required":["at_ms","type","data"],"type":"object"},{"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"columns":{"description":"Value for columns.","maximum":1000,"minimum":1,"type":"integer"},"rows":{"description":"Value for rows.","maximum":1000,"minimum":1,"type":"integer"},"type":{"const":"resize","description":"Value for type.","type":"string"}},"required":["at_ms","type","columns","rows"],"type":"object"},{"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"signal":{"description":"Value for signal.","enum":["SIGINT","SIGTERM","SIGKILL"],"type":"string"},"type":{"const":"signal","description":"Value for type.","type":"string"}},"required":["at_ms","type","signal"],"type":"object"}]},"maxItems":1000,"type":"array"},"executable":{"description":"Approved absolute path of the executable to run.","pattern":"^\\\\/.*","type":"string"},"filesystem_roots":{"default":[],"description":"Approved canonical filesystem filesystem roots.","items":{"pattern":"^\\\\/.*","type":"string"},"maxItems":16,"type":"array"},"idle_timeout_ms":{"default":30000,"description":"Value for idle timeout ms.","exclusiveMinimum":0,"maximum":300000,"type":"integer"},"inherit_environment":{"default":[],"description":"Value for inherit environment.","items":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*$","type":"string"},"maxItems":64,"type":"array"},"limits":{"default":{"connections":100,"file_bytes":10000000,"files":10000,"filesystem_depth":16,"frames":10000,"output_bytes":1000000,"processes":1000,"protocol_body_bytes":1000000,"protocol_events":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"connections":{"default":100,"description":"Value for connections.","exclusiveMinimum":0,"maximum":1000,"type":"integer"},"file_bytes":{"default":10000000,"description":"Bounded byte count for file.","exclusiveMinimum":0,"maximum":100000000,"type":"integer"},"files":{"default":10000,"description":"Value for files.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"filesystem_depth":{"default":16,"description":"Value for filesystem depth.","maximum":64,"minimum":1,"type":"integer"},"frames":{"default":10000,"description":"Value for frames.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"output_bytes":{"default":1000000,"description":"Bounded byte count for output.","exclusiveMinimum":0,"maximum":10000000,"type":"integer"},"processes":{"default":1000,"description":"Value for processes.","exclusiveMinimum":0,"maximum":10000,"type":"integer"},"protocol_body_bytes":{"default":1000000,"description":"Bounded byte count for protocol body.","exclusiveMinimum":0,"maximum":10000000,"type":"integer"},"protocol_events":{"default":10000,"description":"Value for protocol events.","exclusiveMinimum":0,"maximum":100000,"type":"integer"}},"type":"object"},"network_access":{"const":"host","default":"host","description":"Value for network access.","type":"string"},"normalization":{"default":{"paths":true,"patterns":[],"pids":true,"ports":true,"time_bucket_ms":10},"description":"Value for normalization.","properties":{"paths":{"default":true,"description":"Value for paths.","type":"boolean"},"patterns":{"default":[],"description":"Value for patterns.","items":{"properties":{"pattern":{"description":"Text or bounded pattern used to filter matching results.","maxLength":500,"type":"string"},"replacement":{"description":"Value for replacement.","maxLength":100,"type":"string"}},"required":["pattern","replacement"],"type":"object"},"maxItems":32,"type":"array"},"pids":{"default":true,"description":"Value for pids.","type":"boolean"},"ports":{"default":true,"description":"Value for ports.","type":"boolean"},"time_bucket_ms":{"default":10,"description":"Value for time bucket ms.","exclusiveMinimum":0,"maximum":60000,"type":"integer"}},"type":"object"},"reactive":{"anyOf":[{"additionalProperties":false,"properties":{"deadline_ms":{"description":"Value for deadline ms.","exclusiveMinimum":0,"maximum":300000,"type":"integer"},"initial_state":{"description":"Value for initial state.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"states":{"description":"Value for states.","items":{"additionalProperties":false,"properties":{"deadline_ms":{"description":"Value for deadline ms.","exclusiveMinimum":0,"maximum":300000,"type":"integer"},"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"max_visits":{"description":"Maximum permitted visits for this operation.","exclusiveMinimum":0,"maximum":256,"type":"integer"},"on":{"description":"Value for on.","items":{"additionalProperties":false,"properties":{"actions":{"description":"Value for actions.","items":{"oneOf":[{"additionalProperties":false,"properties":{"data":{"description":"Value for data.","maxLength":1000000,"type":"string"},"sensitive":{"description":"Value for sensitive.","type":"boolean"},"type":{"const":"send_input","description":"Value for type.","type":"string"}},"required":["type","data","sensitive"],"type":"object"},{"additionalProperties":false,"properties":{"columns":{"description":"Value for columns.","maximum":1000,"minimum":1,"type":"integer"},"rows":{"description":"Value for rows.","maximum":1000,"minimum":1,"type":"integer"},"type":{"const":"resize","description":"Value for type.","type":"string"}},"required":["type","columns","rows"],"type":"object"},{"additionalProperties":false,"properties":{"type":{"const":"close_stdin","description":"Value for type.","type":"string"}},"required":["type"],"type":"object"},{"additionalProperties":false,"properties":{"signal":{"description":"Value for signal.","enum":["SIGINT","SIGTERM","SIGKILL"],"type":"string"},"target":{"description":"Value for target.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"root","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"process_group","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"subject_id","description":"Value for kind.","type":"string"},"subject_id":{"description":"Value for subject id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["kind","subject_id"],"type":"object"}]},"type":{"const":"send_signal","description":"Value for type.","type":"string"}},"required":["type","target","signal"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","type":"string"},"type":{"const":"checkpoint","description":"Value for type.","type":"string"}},"required":["type","name"],"type":"object"}]},"maxItems":16,"type":"array"},"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"max_uses":{"description":"Maximum permitted uses for this operation.","exclusiveMinimum":0,"maximum":256,"type":"integer"},"priority":{"description":"Value for priority.","maximum":1000,"minimum":0,"type":"integer"},"target":{"description":"Value for target.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"goto","description":"Value for kind.","type":"string"},"state":{"description":"Value for state.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["kind","state"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"finish","description":"Value for kind.","type":"string"},"outcome":{"const":"passed","description":"Value for outcome.","type":"string"}},"required":["kind","outcome"],"type":"object"}]},"when":{"$ref":"#/$defs/__schema0","description":"Value for when."}},"required":["id","priority","max_uses","when","actions","target"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["id","max_visits","deadline_ms","on"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"version":{"const":1,"description":"Value for version.","type":"number"}},"required":["version","initial_state","deadline_ms","states"],"type":"object"},{"type":"null"}],"description":"Value for reactive."},"replay":{"description":"Value for replay.","properties":{"http":{"default":[],"description":"Value for http.","items":{"properties":{"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"delay_ms":{"default":0,"description":"Value for delay ms.","maximum":30000,"minimum":0,"type":"integer"},"disconnect":{"default":false,"description":"Value for disconnect.","type":"boolean"},"max_calls":{"default":1,"description":"Maximum permitted calls for this operation.","maximum":100,"minimum":1,"type":"integer"},"method":{"description":"Value for method.","maxLength":16,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"request_body":{"description":"Value for request body.","maxLength":1000000,"type":"string"},"request_headers":{"additionalProperties":{"type":"string"},"default":{},"description":"Value for request headers.","propertyNames":{"type":"string"},"type":"object"},"response_headers":{"additionalProperties":{"type":"string"},"default":{},"description":"Value for response headers.","propertyNames":{"type":"string"},"type":"object"},"status":{"description":"Current lifecycle or verification status.","maximum":599,"minimum":100,"type":"integer"}},"required":["method","path","status","body"],"type":"object"},"maxItems":100,"type":"array"},"machine":{"anyOf":[{"additionalProperties":false,"properties":{"initial_state":{"description":"Value for initial state.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"limits":{"additionalProperties":false,"default":{"bytes":1000000,"connections":100,"duration_ms":30000,"messages":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"bytes":{"default":1000000,"description":"Value for bytes.","maximum":10000000,"minimum":1,"type":"integer"},"connections":{"default":100,"description":"Value for connections.","maximum":1000,"minimum":1,"type":"integer"},"duration_ms":{"default":30000,"description":"Value for duration ms.","maximum":300000,"minimum":1,"type":"integer"},"messages":{"default":10000,"description":"Value for messages.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"max_transitions":{"description":"Maximum permitted transitions for this operation.","maximum":100000,"minimum":1,"type":"integer"},"states":{"description":"Value for states.","items":{"additionalProperties":false,"properties":{"max_visits":{"default":100000,"description":"Maximum permitted visits for this operation.","maximum":100000,"minimum":1,"type":"integer"},"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"terminal":{"default":false,"description":"Value for terminal.","type":"boolean"}},"required":["name"],"type":"object"},"maxItems":256,"minItems":1,"type":"array"},"transitions":{"description":"Value for transitions.","items":{"additionalProperties":false,"properties":{"actions":{"description":"Value for actions.","items":{"oneOf":[{"additionalProperties":false,"properties":{"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"default":{},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"status":{"description":"Current lifecycle or verification status.","maximum":599,"minimum":100,"type":"integer"},"type":{"const":"http_response","description":"Value for type.","type":"string"}},"required":["type","status","body"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"description":"Value for data.","maxLength":1000000,"type":"string"},"type":{"const":"websocket_send","description":"Value for type.","type":"string"}},"required":["type","data"],"type":"object"},{"additionalProperties":false,"properties":{"type":{"const":"disconnect","description":"Value for type.","type":"string"}},"required":["type"],"type":"object"},{"additionalProperties":false,"properties":{"duration_ms":{"description":"Value for duration ms.","maximum":30000,"minimum":0,"type":"integer"},"type":{"const":"delay","description":"Value for type.","type":"string"}},"required":["type","duration_ms"],"type":"object"}]},"maxItems":32,"minItems":1,"type":"array"},"captures":{"description":"Value for captures.","items":{"additionalProperties":false,"properties":{"sensitive":{"default":false,"description":"Value for sensitive.","type":"boolean"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"source":{"const":"request_header","description":"Value for source.","type":"string"}},"required":["source","name"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"request_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"websocket_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"action_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"}]},"variable":{"description":"Value for variable.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["variable","value"],"type":"object"},"maxItems":32,"type":"array"},"from":{"description":"Value for from.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"guards":{"description":"Value for guards.","items":{"additionalProperties":false,"properties":{"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"source":{"const":"request_header","description":"Value for source.","type":"string"}},"required":["source","name"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"request_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"websocket_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"action_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"}]},"variable":{"description":"Value for variable.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["variable","value"],"type":"object"},"maxItems":32,"type":"array"},"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"max_uses":{"description":"Maximum permitted uses for this operation.","maximum":10000,"minimum":1,"type":"integer"},"priority":{"default":100,"description":"Value for priority.","maximum":1000,"minimum":0,"type":"integer"},"to":{"description":"Value for to.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"trigger":{"description":"Value for trigger.","oneOf":[{"additionalProperties":false,"properties":{"body":{"anyOf":[{"maxLength":1000000,"type":"string"},{"type":"null"}],"default":null,"description":"Value for body."},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"method":{"description":"Value for method.","maxLength":16,"minLength":1,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"http","description":"Value for protocol.","type":"string"}},"required":["protocol","method","path"],"type":"object"},{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_connect","description":"Value for protocol.","type":"string"}},"required":["protocol","path"],"type":"object"},{"additionalProperties":false,"properties":{"body":{"anyOf":[{"maxLength":1000000,"type":"string"},{"type":"null"}],"default":null,"description":"Value for body."},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_message","description":"Value for protocol.","type":"string"}},"required":["protocol","path"],"type":"object"}]}},"required":["id","from","to","trigger","actions","max_uses"],"type":"object"},"maxItems":2000,"minItems":1,"type":"array"}},"required":["initial_state","states","transitions","max_transitions"],"type":"object"},{"type":"null"}],"description":"Value for machine."},"websocket_connections":{"default":[],"description":"Value for websocket connections.","items":{"properties":{"disconnect_after":{"default":false,"description":"Value for disconnect after.","type":"boolean"},"messages":{"description":"Value for messages.","items":{"properties":{"data":{"description":"Value for data.","maxLength":1000000,"type":"string"},"delay_ms":{"default":0,"description":"Value for delay ms.","maximum":30000,"minimum":0,"type":"integer"}},"required":["data"],"type":"object"},"maxItems":100,"type":"array"}},"required":["messages"],"type":"object"},"maxItems":100,"type":"array"},"websocket_messages":{"default":[],"description":"Value for websocket messages.","items":{"maxLength":1000000,"type":"string"},"maxItems":100,"type":"array"}},"type":"object"},"secret_aliases":{"default":[],"description":"Value for secret aliases.","items":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*$","type":"string"},"maxItems":64,"type":"array"},"settle_ms":{"default":100,"description":"Value for settle ms.","maximum":10000,"minimum":0,"type":"integer"},"terminal":{"default":{"columns":80,"rows":24,"scrollback":1000},"description":"Value for terminal.","properties":{"columns":{"default":80,"description":"Value for columns.","maximum":1000,"minimum":1,"type":"integer"},"rows":{"default":24,"description":"Value for rows.","maximum":1000,"minimum":1,"type":"integer"},"scrollback":{"default":1000,"description":"Value for scrollback.","maximum":10000,"minimum":0,"type":"integer"}},"type":"object"},"timeout_ms":{"default":30000,"description":"Value for timeout ms.","exclusiveMinimum":0,"maximum":300000,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record capture residuals durably","type":"boolean"},"working_directory":{"description":"Value for working directory.","pattern":"^\\\\/.*","type":"string"}},"required":["approved","executable","working_directory"],"type":"object"},"kind":"session","name":"capture_process_scenario","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"owned_process_group":{"const":"verified","type":"string"},"temporary_root":{"const":"removed","type":"string"}},"required":["owned_process_group","temporary_root"],"type":"object"},"event_journal":{"default":[],"items":{"additionalProperties":false,"properties":{"capture_order":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"collection":{"enum":["frames","rendered_frames","interaction_events","lifecycle","process_samples","filesystem_checkpoints","shim_events","protocol_events","replay_transitions"],"type":"string"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["capture_order","collection","index"],"type":"object"},"type":"array"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"reason":{"enum":["exited","timeout","idle_timeout"],"type":"string"},"signal":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]}},"required":["code","signal","reason"],"type":"object"},"files_after":{"items":{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"enum":["file","directory","symlink","other"],"type":"string"}},"required":["path","type","mode","size","sha256","symlink_target"],"type":"object"},"type":"array"},"files_before":{"items":{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"enum":["file","directory","symlink","other"],"type":"string"}},"required":["path","type","mode","size","sha256","symlink_target"],"type":"object"},"type":"array"},"filesystem_checkpoints":{"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"effects":{"items":{"additionalProperties":false,"properties":{"after":{"anyOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"enum":["file","directory","symlink","other"],"type":"string"}},"required":["path","type","mode","size","sha256","symlink_target"],"type":"object"},{"type":"null"}]},"before":{"anyOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"enum":["file","directory","symlink","other"],"type":"string"}},"required":["path","type","mode","size","sha256","symlink_target"],"type":"object"},{"type":"null"}]},"path":{"type":"string"},"status":{"enum":["created","modified","deleted","unchanged"],"type":"string"}},"required":["path","status","before","after"],"type":"object"},"type":"array"},"files":{"items":{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"enum":["file","directory","symlink","other"],"type":"string"}},"required":["path","type","mode","size","sha256","symlink_target"],"type":"object"},"type":"array"},"name":{"type":"string"},"truncated":{"type":"boolean"}},"required":["name","at_ms","files","effects","truncated"],"type":"object"},"type":"array"},"filesystem_effects":{"items":{"additionalProperties":false,"properties":{"after":{"anyOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"enum":["file","directory","symlink","other"],"type":"string"}},"required":["path","type","mode","size","sha256","symlink_target"],"type":"object"},{"type":"null"}]},"before":{"anyOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"enum":["file","directory","symlink","other"],"type":"string"}},"required":["path","type","mode","size","sha256","symlink_target"],"type":"object"},{"type":"null"}]},"path":{"type":"string"},"status":{"enum":["created","modified","deleted","unchanged"],"type":"string"}},"required":["path","status","before","after"],"type":"object"},"type":"array"},"frames":{"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"data":{"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","at_ms","data"],"type":"object"},"type":"array"},"interaction_events":{"items":{"additionalProperties":false,"properties":{"data":{"type":"string"},"dispatched_at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outcome":{"enum":["dispatched","target_exited","failed"],"type":"string"},"scheduled_at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"type":{"enum":["input","resize","stdin_close","signal"],"type":"string"}},"required":["sequence","scheduled_at_ms","dispatched_at_ms","type","data","outcome"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"manifest":{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"comparison_contract":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"comparison_contract_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"completed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"full_scenario_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"normalization_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"platform":{"minLength":1,"type":"string"},"provider_version":{"minLength":1,"type":"string"},"pty_backend":{"const":"node-pty","type":"string"},"rea_version":{"minLength":1,"type":"string"},"replay_plan":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"replay_plan_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scenario":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"shim_plan":{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},"shim_plan_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"started_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"}},"required":["rea_version","provider_version","platform","architecture","pty_backend","started_at","completed_at","scenario","comparison_contract","shim_plan","replay_plan","full_scenario_sha256","comparison_contract_sha256","executable_sha256","normalization_sha256","shim_plan_sha256","replay_plan_sha256"],"type":"object"},"normalization":{"additionalProperties":false,"properties":{"paths":{"type":"boolean"},"patterns":{"items":{"additionalProperties":false,"properties":{"pattern":{"maxLength":500,"type":"string"},"replacement":{"maxLength":100,"type":"string"}},"required":["pattern","replacement"],"type":"object"},"type":"array"},"pids":{"type":"boolean"},"ports":{"type":"boolean"},"time_bucket_ms":{"exclusiveMinimum":0,"maximum":60000,"type":"integer"}},"required":["paths","pids","ports","time_bucket_ms","patterns"],"type":"object"},"process_samples":{"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"command":{"type":"string"},"parent_pid":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pid":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"process_group_id":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"session_id":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["at_ms","pid","parent_pid","command","process_group_id","session_id"],"type":"object"},"type":"array"},"protocol_events":{"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"data":{"type":"string"},"direction":{"enum":["request","response","received","sent"],"type":"string"},"method":{"anyOf":[{"type":"string"},{"type":"null"}]},"outcome":{"enum":["matched","unmatched","script_exhausted","disconnected","invalid_state","guard_failed","transition_exhausted","invalid_capture","unexpected_reconnect","limit_exhausted"],"type":"string"},"path":{"anyOf":[{"type":"string"},{"type":"null"}]},"protocol":{"enum":["http","websocket"],"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","at_ms","protocol","direction","method","path","data","outcome"],"type":"object"},"type":"array"},"reactive_run":{"anyOf":[{"additionalProperties":false,"properties":{"active_state":{"maxLength":64,"minLength":1,"type":"string"},"controls":{"default":[],"items":{"additionalProperties":false,"properties":{"after_capture_order":{"maximum":9007199254740991,"minimum":-1,"type":"integer"},"kind":{"enum":["state_deadline","scenario_deadline","target_lost","cancelled","cleanup_failed"],"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","kind","after_capture_order"],"type":"object"},"type":"array"},"outcome":{"anyOf":[{"enum":["passed","predicate_timeout","scenario_deadline","ambiguous_match","action_rejected","target_lost","capture_incomplete","cancelled","cleanup_failed"],"type":"string"},{"type":"null"}]},"status":{"enum":["running","finished"],"type":"string"},"transitions":{"items":{"additionalProperties":false,"properties":{"action_event_ids":{"items":{"minLength":1,"type":"string"},"maxItems":16,"type":"array"},"action_types":{"items":{"enum":["send_input","resize","close_stdin","send_signal","checkpoint"],"type":"string"},"maxItems":16,"type":"array"},"outcome":{"anyOf":[{"enum":["passed","predicate_timeout","scenario_deadline","ambiguous_match","action_rejected","target_lost","capture_incomplete","cancelled","cleanup_failed"],"type":"string"},{"type":"null"}]},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state_after":{"anyOf":[{"maxLength":64,"minLength":1,"type":"string"},{"type":"null"}]},"state_before":{"maxLength":64,"minLength":1,"type":"string"},"transition_id":{"maxLength":64,"minLength":1,"type":"string"},"trigger_event_ids":{"items":{"minLength":1,"type":"string"},"maxItems":64,"type":"array"}},"required":["sequence","transition_id","state_before","state_after","outcome","trigger_event_ids","action_event_ids","action_types"],"type":"object"},"maxItems":128,"type":"array"}},"required":["status","outcome","active_state","controls","transitions"],"type":"object"},{"type":"null"}],"default":null},"rendered_frames":{"items":{"additionalProperties":false,"properties":{"active_buffer":{"enum":["normal","alternate"],"type":"string"},"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"columns":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"cursor_x":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"cursor_y":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"lines":{"items":{"type":"string"},"type":"array"},"rows":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"serialized_state":{"type":"string"}},"required":["sequence","at_ms","columns","rows","cursor_x","cursor_y","active_buffer","lines","serialized_state"],"type":"object"},"type":"array"},"replay_transitions":{"default":[],"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sensitive_aliases":{"items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state_after":{"maxLength":64,"minLength":1,"type":"string"},"state_before":{"maxLength":64,"minLength":1,"type":"string"},"transition_id":{"maxLength":64,"minLength":1,"type":"string"}},"required":["sequence","at_ms","transition_id","state_before","state_after","sensitive_aliases"],"type":"object"},"type":"array"},"residual_unknowns":{"items":{"additionalProperties":false,"properties":{"reason":{"type":"string"},"scope":{"enum":["terminal","interaction","exit","process","filesystem","protocol","shim","cleanup","network"],"type":"string"}},"required":["scope","reason"],"type":"object"},"type":"array"},"schema_version":{"const":4,"type":"number"},"settlement":{"additionalProperties":false,"properties":{"cleanup_outcome":{"enum":["not_required","cleaned","failed"],"type":"string"},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"enum":["quiesced","alive_at_deadline","unverifiable"],"type":"string"}},"required":["state","elapsed_ms","cleanup_outcome"],"type":"object"},"shim_events":{"items":{"additionalProperties":false,"properties":{"arguments":{"items":{"type":"string"},"type":"array"},"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"command":{"type":"string"},"outcome":{"enum":["matched","unmatched","exhausted"],"type":"string"},"route_index":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"working_directory":{"type":"string"}},"required":["sequence","at_ms","command","route_index","arguments","working_directory","outcome"],"type":"object"},"type":"array"},"truncated":{"type":"boolean"}},"required":["schema_version","manifest","normalization","frames","rendered_frames","interaction_events","exit","settlement","process_samples","filesystem_checkpoints","shim_events","protocol_events","replay_transitions","reactive_run","event_journal","files_before","files_after","filesystem_effects","truncated","limitations","residual_unknowns","cleanup"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Capture Process Scenario"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two compatible Process Capture v4 observations across terminal, interaction, lifecycle, process, filesystem, command-shim, HTTP, and WebSocket evidence. Optional trace_spec validates exact events against an explicit partial order or finite trace language; concurrency is never inferred from timestamps or broad sorting. Missing, journal-free, or truncated observations are never treated as equivalent.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"left_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","right_evidence_id":"ev_1111111111111111111111111111111111111111111111111111111111111111"}],"properties":{"left_evidence_id":{"description":"Exact Evidence v2 identifier for the left observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"max_capture_age_ms":{"description":"Maximum permitted capture age ms for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"right_evidence_id":{"description":"Exact Evidence v2 identifier for the right observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"trace_spec":{"additionalProperties":false,"description":"Value for trace spec.","properties":{"events":{"description":"Value for events.","items":{"additionalProperties":false,"properties":{"cardinality":{"default":{"kind":"required"},"description":"Value for cardinality.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"required","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"optional","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"count":{"description":"Value for count.","maximum":10000,"minimum":0,"type":"integer"},"kind":{"const":"exact","description":"Value for kind.","type":"string"}},"required":["kind","count"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"range","description":"Value for kind.","type":"string"},"max":{"description":"Value for max.","maximum":10000,"minimum":0,"type":"integer"},"min":{"description":"Value for min.","maximum":10000,"minimum":0,"type":"integer"}},"required":["kind","min","max"],"type":"object"}]},"exact":{"$ref":"#/$defs/__schema0","description":"Value for exact."},"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"ignore_fields":{"description":"Value for ignore fields.","items":{"enum":["sequence","at_ms","scheduled_at_ms","dispatched_at_ms","elapsed_ms"],"type":"string"},"maxItems":5,"type":"array"},"source":{"description":"Value for source.","enum":["terminal_raw","terminal_rendered","interaction","lifecycle","process","filesystem","http","websocket","shim","replay_transition"],"type":"string"}},"required":["id","source","exact"],"type":"object"},"maxItems":256,"minItems":1,"type":"array"},"language":{"description":"Value for language.","oneOf":[{"additionalProperties":false,"properties":{"happens_before":{"default":[],"description":"Value for happens before.","items":{"additionalProperties":false,"properties":{"after":{"description":"The later or right-hand observation to compare.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"before":{"description":"The earlier or left-hand observation to compare.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["before","after"],"type":"object"},"maxItems":4096,"type":"array"},"kind":{"const":"partial_order","description":"Value for kind.","type":"string"},"not_before":{"default":[],"description":"Value for not before.","items":{"additionalProperties":false,"properties":{"anchor":{"description":"Value for anchor.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"event":{"description":"Value for event.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["event","anchor"],"type":"object"},"maxItems":4096,"type":"array"},"prefix":{"default":[],"description":"Value for prefix.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"maxItems":4096,"type":"array"},"suffix":{"default":[],"description":"Value for suffix.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"maxItems":4096,"type":"array"},"unordered_groups":{"default":[],"description":"Value for unordered groups.","items":{"additionalProperties":false,"properties":{"events":{"description":"Value for events.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"maxItems":256,"minItems":2,"type":"array"}},"required":["events"],"type":"object"},"maxItems":256,"type":"array"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"finite_traces","description":"Value for kind.","type":"string"},"variants":{"description":"Value for variants.","items":{"additionalProperties":false,"properties":{"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"trace":{"description":"Value for trace.","items":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},{"additionalProperties":false,"properties":{"unordered":{"description":"Value for unordered.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"maxItems":256,"minItems":2,"type":"array"}},"required":["unordered"],"type":"object"}]},"maxItems":4096,"type":"array"}},"required":["id","trace"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["kind","variants"],"type":"object"}]},"version":{"const":1,"description":"Value for version.","type":"number"}},"required":["version","events","language"],"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record capture disagreement durably","type":"boolean"}},"required":["left_evidence_id","right_evidence_id"],"type":"object"},"kind":"session","name":"compare_process_captures","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"exit":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"filesystem":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"first_divergence":{"oneOf":[{"additionalProperties":false,"properties":{"status":{"const":"none","type":"string"}},"required":["status"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"status":{"const":"unknown","type":"string"}},"required":["status","reason"],"type":"object"},{"additionalProperties":false,"properties":{"dimension":{"enum":["terminal","interaction","exit","filesystem","protocol","process","shim"],"type":"string"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"left":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"left_at_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"right":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"right_at_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"found","type":"string"}},"required":["status","dimension","index","left_at_ms","right_at_ms","left","right"],"type":"object"}]},"interaction":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"process":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"protocol":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"shim":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"terminal":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"trace":{"additionalProperties":false,"properties":{"diagnostic":{"anyOf":[{"additionalProperties":false,"properties":{"event_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"type":"array"},"kind":{"enum":["journal","predicate","cardinality","edge","prefix","suffix","trace"],"type":"string"},"locations":{"items":{"additionalProperties":false,"properties":{"capture_order":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"collection":{"enum":["frames","rendered_frames","interaction_events","lifecycle","process_samples","filesystem_checkpoints","shim_events","protocol_events","replay_transitions"],"type":"string"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["collection","index","capture_order"],"type":"object"},"type":"array"},"message":{"type":"string"},"side":{"enum":["left","right"],"type":"string"}},"required":["kind","side","message","event_ids","locations"],"type":"object"},{"type":"null"}]},"left":{"additionalProperties":false,"properties":{"matched_variant":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},{"type":"null"}]},"raw_trace":{"items":{"additionalProperties":false,"properties":{"event_id":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"location":{"additionalProperties":false,"properties":{"capture_order":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"collection":{"enum":["frames","rendered_frames","interaction_events","lifecycle","process_samples","filesystem_checkpoints","shim_events","protocol_events","replay_transitions"],"type":"string"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["collection","index","capture_order"],"type":"object"}},"required":["event_id","location"],"type":"object"},"type":"array"},"satisfied_constraints":{"items":{"type":"string"},"type":"array"},"status":{"enum":["pass","fail","unknown"],"type":"string"}},"required":["status","matched_variant","satisfied_constraints","raw_trace"],"type":"object"},"right":{"additionalProperties":false,"properties":{"matched_variant":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},{"type":"null"}]},"raw_trace":{"items":{"additionalProperties":false,"properties":{"event_id":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"location":{"additionalProperties":false,"properties":{"capture_order":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"collection":{"enum":["frames","rendered_frames","interaction_events","lifecycle","process_samples","filesystem_checkpoints","shim_events","protocol_events","replay_transitions"],"type":"string"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["collection","index","capture_order"],"type":"object"}},"required":["event_id","location"],"type":"object"},"type":"array"},"satisfied_constraints":{"items":{"type":"string"},"type":"array"},"status":{"enum":["pass","fail","unknown"],"type":"string"}},"required":["status","matched_variant","satisfied_constraints","raw_trace"],"type":"object"},"verdict":{"enum":["equivalent","different","nonconforming","unknown"],"type":"string"}},"required":["verdict","left","right","diagnostic"],"type":"object"}},"required":["status","terminal","interaction","exit","filesystem","protocol","process","shim","first_divergence","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Compare Process Captures"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two bounded sets of inventory_artifact Evidence pages by logical occurrence path, content identity, metadata, and graph relations. Pages must share and satisfy their graph commitment; every delta cites both sets, and gaps yield truncated or unknown, never equivalence.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"left_evidence_ids":["ev_b74d3ff6cdf54af4e4f3dab00965780cb5ef2b375188c75c1980d0998c5a05a4"],"limit":100,"offset":0,"right_evidence_ids":["ev_74ecec364f3987b332db851177d2117a89d49df4ba89ab5d87299940092d7bb4"]}],"properties":{"left_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the left observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"right_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the right observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record incomplete or differing evidence","type":"boolean"}},"required":["left_evidence_ids","right_evidence_ids"],"type":"object"},"kind":"session","name":"compare_artifacts","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"changes":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"classification":{"enum":["added","removed","changed","unknown","contradiction"],"type":"string"},"dimensions":{"items":{"enum":["content","kind","format","size","executable","relations","metadata","availability","integrity"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":200,"minItems":2,"type":"array"},"left_artifact_id":{"anyOf":[{"pattern":"^art_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"left_occurrence_id":{"anyOf":[{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"logical_path":{"maxLength":4096,"minLength":1,"type":"string"},"right_artifact_id":{"anyOf":[{"pattern":"^art_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"right_occurrence_id":{"anyOf":[{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["classification","logical_path","dimensions","left_occurrence_id","right_occurrence_id","left_artifact_id","right_artifact_id","evidence_links"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"left_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"right_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"contradiction":{"default":0,"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unchanged","added","removed","changed","unknown","contradiction"],"type":"object"}},"required":["status","left_manifest_id","right_manifest_id","summary","changes","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Compare Artifacts"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two explicit bounded sets of analyze_function Evidence pages across identity, exact provider text, calls, references, strings, and address-normalized CFG topology. Missing or provider-incompatible facets remain truncated or unknown; every conclusion cites both Evidence sets.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"left_evidence_ids":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e"],"limit":100,"offset":0,"right_evidence_ids":["ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"]}],"properties":{"left_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the left observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"right_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the right observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_evidence_ids","right_evidence_ids"],"type":"object"},"kind":"session","name":"compare_functions","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"changes":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"conclusion_kind":{"enum":["derived_relationship","contradiction","unresolved_branch"],"type":"string"},"dimension":{"enum":["identity","pseudocode","assembly","comments","calls","references","strings_names","cfg"],"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":200,"minItems":2,"type":"array"},"left_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"left_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"limitations":{"items":{"type":"string"},"type":"array"},"right_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"right_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown"],"type":"string"},"text_delta":{"anyOf":[{"additionalProperties":false,"properties":{"added_lines":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"hunks":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed_lines":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["added_lines","removed_lines","hunks"],"type":"object"},{"type":"null"}]}},"required":["dimension","status","left_digest","right_digest","left_count","right_count","text_delta","conclusion_kind","evidence_links","limitations"],"type":"object"},"maxItems":100,"type":"array"},"limit":{"maximum":100,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"dimensions":{"items":{"additionalProperties":false,"properties":{"conclusion_kind":{"enum":["derived_relationship","contradiction","unresolved_branch"],"type":"string"},"dimension":{"enum":["identity","pseudocode","assembly","comments","calls","references","strings_names","cfg"],"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":200,"minItems":2,"type":"array"},"left_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"left_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"limitations":{"items":{"type":"string"},"type":"array"},"right_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"right_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown"],"type":"string"},"text_delta":{"anyOf":[{"additionalProperties":false,"properties":{"added_lines":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"hunks":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed_lines":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["added_lines","removed_lines","hunks"],"type":"object"},{"type":"null"}]}},"required":["dimension","status","left_digest","right_digest","left_count","right_count","text_delta","conclusion_kind","evidence_links","limitations"],"type":"object"},"maxItems":8,"minItems":8,"type":"array"},"function_match":{"additionalProperties":false,"properties":{"left_name":{"type":"string"},"method":{"enum":["explicit","symbol"],"type":"string"},"right_name":{"type":"string"},"status":{"enum":["matched","mismatched","ambiguous","unknown"],"type":"string"}},"required":["status","method","left_name","right_name"],"type":"object"},"left_subject_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"right_subject_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unchanged","changed","truncated","unknown"],"type":"object"}},"required":["status","function_match","left_subject_sha256","right_subject_sha256","summary","dimensions","changes","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Compare Functions"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two canonical Evidence v2 bundles by exact record membership, explicit one-to-one observation pairs, and complete residual-unknown revision histories. Missing bundle members describe omission only, never behavioral equivalence; output is digest-anchored and deterministically paginated.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"left_bundle_path":"/approved/left-evidence.json","limit":100,"offset":0,"record_pairs":[],"right_bundle_path":"/approved/right-evidence.json"}],"properties":{"left_bundle_path":{"description":"Local filesystem path for left bundle.","maxLength":4096,"minLength":1,"type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"record_pairs":{"default":[],"description":"Value for record pairs.","items":{"properties":{"left_evidence_id":{"description":"Exact Evidence v2 identifier for the left observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"right_evidence_id":{"description":"Exact Evidence v2 identifier for the right observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"}},"required":["left_evidence_id","right_evidence_id"],"type":"object"},"maxItems":500,"type":"array"},"right_bundle_path":{"description":"Local filesystem path for right bundle.","maxLength":4096,"minLength":1,"type":"string"}},"required":["left_bundle_path","right_bundle_path"],"type":"object"},"kind":"session","name":"compare_bundles","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"changes":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"classification":{"enum":["added","removed","changed","unknown","history_advanced","history_diverged"],"type":"string"},"conclusion_kind":{"enum":["observed_change","contradiction","unresolved_branch"],"type":"string"},"entity":{"enum":["evidence","residual_unknown"],"type":"string"},"key":{"minLength":1,"type":"string"},"left_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"left_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"right_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"right_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"}},"required":["entity","key","classification","conclusion_kind","left_evidence_ids","right_evidence_ids","left_digest","right_digest","limitations"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"left_bundle_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"right_bundle_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"status":{"enum":["unchanged","changed","unknown"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"records_added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"records_changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"records_removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"records_unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_advanced":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_diverged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["records_unchanged","records_added","records_removed","records_changed","unknowns_unchanged","unknowns_added","unknowns_removed","unknowns_advanced","unknowns_diverged","unresolved"],"type":"object"}},"required":["status","left_bundle_sha256","right_bundle_sha256","summary","changes","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Compare Bundles"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Aggregate validated comparison Evidence, or automatically run and resume a persistent cross-version artifact investigation beneath an approved evidence root. Runtime observations remain distinct from static behavior candidates; missing or incomplete comparisons produce unresolved findings, never causal claims.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"comparisons":[{"authority":"analyst-inference","confidence":"derived","environment":null,"evidence_id":"ev_68c195e7d5d8688f3eb0764a9a868355fcc6f8810fc9ada1a0c8579c21ea2bf8","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"changes":{"items":[{"conclusion_kind":"derived_relationship","dimension":"pseudocode","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":9,"left_digest":"64abdfe133a114158fa0e185d0edec784e6ccf13a166a0fed8bc18bb0cc72554","limitations":[],"right_count":9,"right_digest":"c8e26d77640903b2d4c765ebcb7f7170b64dd320dd3911abbe8346e07cd593d1","status":"changed","text_delta":{"added_lines":1,"hunks":2,"removed_lines":1}},{"conclusion_kind":"unresolved_branch","dimension":"assembly","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":null,"limitations":["Assembly is opaque provider text; relocation normalization is unavailable."],"right_count":0,"right_digest":null,"status":"unknown","text_delta":null}],"limit":100,"next_offset":null,"offset":0,"total":2},"dimensions":[{"conclusion_kind":"derived_relationship","dimension":"identity","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":null,"left_digest":"dd190a914de1bdf8f4bba97a2e74b439585874c567f28eb0ff41bc5388c66d65","limitations":[],"right_count":null,"right_digest":"dd190a914de1bdf8f4bba97a2e74b439585874c567f28eb0ff41bc5388c66d65","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"pseudocode","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":9,"left_digest":"64abdfe133a114158fa0e185d0edec784e6ccf13a166a0fed8bc18bb0cc72554","limitations":[],"right_count":9,"right_digest":"c8e26d77640903b2d4c765ebcb7f7170b64dd320dd3911abbe8346e07cd593d1","status":"changed","text_delta":{"added_lines":1,"hunks":2,"removed_lines":1}},{"conclusion_kind":"unresolved_branch","dimension":"assembly","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":null,"limitations":["Assembly is opaque provider text; relocation normalization is unavailable."],"right_count":0,"right_digest":null,"status":"unknown","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"comments","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"calls","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"references","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"strings_names","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"cfg","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":1,"left_digest":"e947121f0d4cb8d2a2468a75a44872a29aa1239e6401712df80cfa36bf7df7a0","limitations":[],"right_count":1,"right_digest":"e947121f0d4cb8d2a2468a75a44872a29aa1239e6401712df80cfa36bf7df7a0","status":"unchanged","text_delta":null}],"function_match":{"left_name":"main","method":"symbol","right_name":"main","status":"matched"},"left_subject_sha256":"0000000000000000000000000000000000000000000000000000000000000000","limitations":[],"right_subject_sha256":"1111111111111111111111111111111111111111111111111111111111111111","status":"unknown","summary":{"changed":1,"truncated":0,"unchanged":6,"unknown":1}},"operation":"compare_functions","parameters":{"left_evidence_ids":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e"],"limit":100,"offset":0,"right_evidence_ids":["ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"]},"predicate_type":"rea.function-comparison/v1","provider":{"id":"rea-function-comparison","name":"REA function comparison","version":"1"},"raw_result":null,"schema_version":2,"subject":null}],"limit":100,"offset":0}],"properties":{"comparisons":{"default":[],"description":"Validated comparison Evidence records to aggregate.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":100,"type":"array"},"investigation_run":{"anyOf":[{"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"expected_workspace_revision":{"description":"Expected workspace revision used to reject stale or mismatched input.","maximum":9007199254740991,"minimum":1,"type":"integer"},"integrity_continue_approved":{"const":false,"default":false,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"fail","default":"fail","description":"Value for integrity policy.","type":"string"},"left_path":{"description":"Local filesystem path for left.","maxLength":4096,"minLength":1,"type":"string"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"options":{"default":{"change_limit":500,"max_compression_ratio":1000,"max_depth":20,"max_entries":10000,"max_entry_bytes":268435456,"max_path_bytes":4096,"max_total_bytes":1073741824,"page_size":500},"description":"Value for options.","properties":{"change_limit":{"default":500,"description":"Maximum number of change entries to return.","maximum":500,"minimum":1,"type":"integer"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":500,"description":"Value for page size.","maximum":500,"minimum":1,"type":"integer"}},"type":"object"},"replay_run_id":{"description":"Value for replay run id.","pattern":"^run_[a-f0-9]{64}$","type":"string"},"right_path":{"description":"Local filesystem path for right.","maxLength":4096,"minLength":1,"type":"string"},"workspace_name":{"default":"default","description":"Value for workspace name.","maxLength":200,"minLength":1,"type":"string"},"workspace_path":{"description":"Approved local path of the persistent investigation workspace.","maxLength":4096,"minLength":1,"type":"string"}},"required":["approved","workspace_path","left_path","right_path"],"type":"object"},{"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"expected_workspace_revision":{"description":"Expected workspace revision used to reject stale or mismatched input.","maximum":9007199254740991,"minimum":1,"type":"integer"},"integrity_continue_approved":{"const":true,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"record-and-continue","description":"Value for integrity policy.","type":"string"},"left_path":{"description":"Local filesystem path for left.","maxLength":4096,"minLength":1,"type":"string"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"options":{"default":{"change_limit":500,"max_compression_ratio":1000,"max_depth":20,"max_entries":10000,"max_entry_bytes":268435456,"max_path_bytes":4096,"max_total_bytes":1073741824,"page_size":500},"description":"Value for options.","properties":{"change_limit":{"default":500,"description":"Maximum number of change entries to return.","maximum":500,"minimum":1,"type":"integer"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":500,"description":"Value for page size.","maximum":500,"minimum":1,"type":"integer"}},"type":"object"},"replay_run_id":{"description":"Value for replay run id.","pattern":"^run_[a-f0-9]{64}$","type":"string"},"right_path":{"description":"Local filesystem path for right.","maxLength":4096,"minLength":1,"type":"string"},"workspace_name":{"default":"default","description":"Value for workspace name.","maxLength":200,"minLength":1,"type":"string"},"workspace_path":{"description":"Approved local path of the persistent investigation workspace.","maxLength":4096,"minLength":1,"type":"string"}},"required":["approved","workspace_path","left_path","right_path","integrity_policy","integrity_continue_approved"],"type":"object"}],"description":"Value for investigation run."},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"type":"object"},"kind":"session","name":"find_changed_behavior","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"behavior_status":{"enum":["observed_changed","observed_unchanged","unknown","truncated"],"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":20100,"minItems":3,"type":"array"},"findings":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"classification":{"enum":["observed_change","derived_relationship","contradiction","unresolved_branch"],"type":"string"},"dimension":{"minLength":1,"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":201,"minItems":3,"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"scope":{"enum":["runtime","protocol","resource","static_candidate"],"type":"string"},"source_comparison_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"}},"required":["scope","dimension","classification","status","source_comparison_id","evidence_links","limitations"],"type":"object"},"maxItems":100,"type":"array"},"limit":{"maximum":100,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"investigation_run":{"additionalProperties":false,"properties":{"comparison_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"inventory_evidence_count":{"maximum":200,"minimum":2,"type":"integer"},"left_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"type":"string"},"maxItems":100,"type":"array"},"right_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"run_id":{"pattern":"^run_[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"},"workspace_id":{"pattern":"^ws_[a-f0-9]{64}$","type":"string"}},"required":["schema_version","workspace_id","run_id","left_manifest_id","right_manifest_id","inventory_evidence_count","comparison_evidence_id","limitations"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"summary":{"additionalProperties":false,"properties":{"contradictions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observed_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["observed_changes","static_candidates","contradictions","unresolved"],"type":"object"}},"required":["behavior_status","summary","findings","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Find Changed Behavior"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Build bounded shortest-first direct-callee paths from explicit analyze_function Evidence groups using exact canonical addresses. Missing dossiers, incomplete callee pages, provider mixing, and depth frontiers remain unknown; every node and edge cites source Evidence.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"functions":[{"authority":"shipped-artifact","confidence":"derived","environment":null,"evidence_id":"ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","evidence_links":[],"limitations":[],"locations":[],"normalized_result":{"assembly":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"basic_blocks":{"items":[{"end":"0x1001","start":"0x1000","successors":[]}],"next_offset":null,"returned":1,"total":1,"truncated":false},"callees":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"callers":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"comments":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"incoming_references":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"instruction_scan":{"scanned":1,"truncated":false},"outgoing_references":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"procedure":{"address":"0x1000","locals":[],"name":"main","signature":"int main(void)"},"pseudocode":{"next_offset":null,"returned_chars":9,"text":"return 0;","total_chars":9,"truncated":false},"referenced_names":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"referenced_strings":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false}},"operation":"analyze_function","parameters":{"assembly_offset":0,"collection_offset":{"basic_blocks":0,"callees":0,"callers":0,"comments":0,"incoming_references":0,"outgoing_references":0,"referenced_names":0,"referenced_strings":0},"include_assembly":false,"limit":100,"max_instructions":500,"max_pseudocode_chars":20000,"procedure":"main","pseudocode_offset":0},"predicate_type":"rea.analysis/v2","provider":{"id":"rea-workflow","name":"REA composed investigation workflow","version":"1"},"raw_result":null,"schema_version":2,"subject":{"architecture":null,"digest":{"sha256":"0000000000000000000000000000000000000000000000000000000000000000"},"format":"mach-o","local_path":"/tmp/function-0","name":"function-0"}}],"goal":{"address":"0x1000"},"limit":100,"max_depth":8,"max_paths":10,"offset":0,"start":{"address":"0x1000"}}],"properties":{"functions":{"description":"Value for functions.","items":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},{"items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"}]},"maxItems":500,"minItems":1,"type":"array"},"goal":{"additionalProperties":false,"description":"Value for goal.","properties":{"address":{"description":"Value for address.","pattern":"^0[xX][0-9a-fA-F]+$","type":"string"}},"required":["address"],"type":"object"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"max_depth":{"default":8,"description":"Maximum permitted depth for this operation.","maximum":32,"minimum":0,"type":"integer"},"max_paths":{"default":10,"description":"Maximum permitted paths for this operation.","maximum":100,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"start":{"additionalProperties":false,"description":"Value for start.","properties":{"address":{"description":"Value for address.","pattern":"^0[xX][0-9a-fA-F]+$","type":"string"}},"required":["address"],"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["functions","start","goal"],"type":"object"},"kind":"session","name":"build_call_path","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":50000,"minItems":1,"type":"array"},"explored":{"additionalProperties":false,"properties":{"depth_reached":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"edges":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["nodes","edges","depth_reached"],"type":"object"},"goal":{"pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"paths":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"edges":{"items":{"additionalProperties":false,"properties":{"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"source":{"pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$","type":"string"},"target":{"pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$","type":"string"}},"required":["source","target","evidence_links"],"type":"object"},"maxItems":32,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":3300,"minItems":1,"type":"array"},"hops":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nodes":{"items":{"additionalProperties":false,"properties":{"address":{"pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["address","name","evidence_links"],"type":"object"},"maxItems":33,"minItems":1,"type":"array"}},"required":["hops","nodes","edges","evidence_links"],"type":"object"},"maxItems":100,"type":"array"},"limit":{"maximum":100,"minimum":1,"type":"integer"},"lower_bound":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":100,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"type":"boolean"}},"required":["items","offset","limit","total","returned","truncated","lower_bound","next_offset"],"type":"object"},"search_scope":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"max_depth":{"maximum":32,"minimum":0,"type":"integer"},"max_paths":{"maximum":100,"minimum":1,"type":"integer"}},"required":["max_depth","max_paths","exhaustive"],"type":"object"},"shortest_hops":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"start":{"pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$","type":"string"},"status":{"enum":["found","not_found","unknown","truncated"],"type":"string"}},"required":["status","start","goal","shortest_hops","search_scope","explored","paths","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Build Call Path"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Evaluate explicit caller-declared hypotheses between exact static comparison findings and runtime comparison dimensions. Similar names or paths are never auto-matched, consistent cochange never proves causality, and unknown or truncated inputs remain unresolved.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"limit":100,"mappings":[{"hypothesis":{"expected_pattern":"static_only","statement":"Static implementation changed without terminal change."},"runtime":{"comparison_evidence_id":"ev_2ffc472e561cea4b5e65ddaf7b80bc112b7ed6d0d023f0cf7398bc2068a12e2d","dimension":"terminal"},"side_alignment":"left_to_left","static":{"comparison_evidence_id":"ev_68c195e7d5d8688f3eb0764a9a868355fcc6f8810fc9ada1a0c8579c21ea2bf8","selector":{"dimension":"pseudocode","kind":"function"}}}],"offset":0,"runtime_comparisons":[{"authority":"analyst-inference","confidence":"derived","environment":null,"evidence_id":"ev_2ffc472e561cea4b5e65ddaf7b80bc112b7ed6d0d023f0cf7398bc2068a12e2d","evidence_links":["ev_0014950a3b67b96d5d182a51c5a271959828fe6a91db55fc507dd5a9c2a5ecaf","ev_5d45bc669ea10694f3bdf3b325e2048844da96a621b717ad252d667af53df590"],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"exit":"unchanged","filesystem":"unchanged","first_divergence":{"status":"none"},"interaction":"unchanged","limitations":[],"process":"unchanged","protocol":"unchanged","shim":"unchanged","status":"unchanged","terminal":"unchanged"},"operation":"compare_process_captures","parameters":{"left_evidence_id":"ev_0014950a3b67b96d5d182a51c5a271959828fe6a91db55fc507dd5a9c2a5ecaf","left_normalization":{"paths":true,"patterns":[],"pids":true,"ports":true,"time_bucket_ms":10},"right_evidence_id":"ev_5d45bc669ea10694f3bdf3b325e2048844da96a621b717ad252d667af53df590","right_normalization":{"paths":true,"patterns":[],"pids":true,"ports":true,"time_bucket_ms":10}},"predicate_type":"rea.process-comparison/v3","provider":{"id":"rea-process","name":"REA deterministic process harness","version":"3"},"raw_result":null,"schema_version":2,"subject":null}],"static_comparisons":[{"authority":"analyst-inference","confidence":"derived","environment":null,"evidence_id":"ev_68c195e7d5d8688f3eb0764a9a868355fcc6f8810fc9ada1a0c8579c21ea2bf8","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"changes":{"items":[{"conclusion_kind":"derived_relationship","dimension":"pseudocode","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":9,"left_digest":"64abdfe133a114158fa0e185d0edec784e6ccf13a166a0fed8bc18bb0cc72554","limitations":[],"right_count":9,"right_digest":"c8e26d77640903b2d4c765ebcb7f7170b64dd320dd3911abbe8346e07cd593d1","status":"changed","text_delta":{"added_lines":1,"hunks":2,"removed_lines":1}},{"conclusion_kind":"unresolved_branch","dimension":"assembly","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":null,"limitations":["Assembly is opaque provider text; relocation normalization is unavailable."],"right_count":0,"right_digest":null,"status":"unknown","text_delta":null}],"limit":100,"next_offset":null,"offset":0,"total":2},"dimensions":[{"conclusion_kind":"derived_relationship","dimension":"identity","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":null,"left_digest":"dd190a914de1bdf8f4bba97a2e74b439585874c567f28eb0ff41bc5388c66d65","limitations":[],"right_count":null,"right_digest":"dd190a914de1bdf8f4bba97a2e74b439585874c567f28eb0ff41bc5388c66d65","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"pseudocode","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":9,"left_digest":"64abdfe133a114158fa0e185d0edec784e6ccf13a166a0fed8bc18bb0cc72554","limitations":[],"right_count":9,"right_digest":"c8e26d77640903b2d4c765ebcb7f7170b64dd320dd3911abbe8346e07cd593d1","status":"changed","text_delta":{"added_lines":1,"hunks":2,"removed_lines":1}},{"conclusion_kind":"unresolved_branch","dimension":"assembly","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":null,"limitations":["Assembly is opaque provider text; relocation normalization is unavailable."],"right_count":0,"right_digest":null,"status":"unknown","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"comments","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"calls","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"references","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"strings_names","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"cfg","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":1,"left_digest":"e947121f0d4cb8d2a2468a75a44872a29aa1239e6401712df80cfa36bf7df7a0","limitations":[],"right_count":1,"right_digest":"e947121f0d4cb8d2a2468a75a44872a29aa1239e6401712df80cfa36bf7df7a0","status":"unchanged","text_delta":null}],"function_match":{"left_name":"main","method":"symbol","right_name":"main","status":"matched"},"left_subject_sha256":"0000000000000000000000000000000000000000000000000000000000000000","limitations":[],"right_subject_sha256":"1111111111111111111111111111111111111111111111111111111111111111","status":"unknown","summary":{"changed":1,"truncated":0,"unchanged":6,"unknown":1}},"operation":"compare_functions","parameters":{"left_evidence_ids":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e"],"limit":100,"offset":0,"right_evidence_ids":["ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"]},"predicate_type":"rea.function-comparison/v1","provider":{"id":"rea-function-comparison","name":"REA function comparison","version":"1"},"raw_result":null,"schema_version":2,"subject":null}]}],"properties":{"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"mappings":{"description":"Value for mappings.","items":{"additionalProperties":false,"properties":{"hypothesis":{"additionalProperties":false,"description":"Value for hypothesis.","properties":{"expected_pattern":{"description":"Expected pattern used to reject stale or mismatched input.","enum":["cochanged","static_only","runtime_only","both_unchanged"],"type":"string"},"statement":{"description":"Value for statement.","maxLength":500,"minLength":1,"type":"string"}},"required":["statement","expected_pattern"],"type":"object"},"runtime":{"additionalProperties":false,"description":"Value for runtime.","properties":{"comparison_evidence_id":{"description":"Exact Evidence v2 identifier for the comparison observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"description":"Value for dimension.","enum":["terminal","interaction","exit","filesystem","protocol","process","shim"],"type":"string"}},"required":["comparison_evidence_id","dimension"],"type":"object"},"side_alignment":{"description":"Value for side alignment.","enum":["left_to_left","left_to_right"],"type":"string"},"static":{"additionalProperties":false,"description":"Value for static.","properties":{"comparison_evidence_id":{"description":"Exact Evidence v2 identifier for the comparison observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"selector":{"description":"Value for selector.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact","description":"Value for kind.","type":"string"},"logical_path":{"description":"Local filesystem path for logical.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","logical_path"],"type":"object"},{"additionalProperties":false,"properties":{"dimension":{"description":"Value for dimension.","enum":["identity","pseudocode","assembly","comments","calls","references","strings_names","cfg"],"type":"string"},"kind":{"const":"function","description":"Value for kind.","type":"string"}},"required":["kind","dimension"],"type":"object"}]}},"required":["comparison_evidence_id","selector"],"type":"object"}},"required":["static","runtime","side_alignment","hypothesis"],"type":"object"},"maxItems":500,"minItems":1,"type":"array"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"runtime_comparisons":{"description":"Value for runtime comparisons.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"},"static_comparisons":{"description":"Value for static comparisons.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["static_comparisons","runtime_comparisons","mappings"],"type":"object"},"kind":"session","name":"correlate_static_and_runtime","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"correlations":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"classification":{"enum":["hypothesis","contradiction","unresolved_branch"],"type":"string"},"correlation_id":{"pattern":"^cor_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":20100,"minItems":2,"type":"array"},"hypothesis":{"additionalProperties":false,"properties":{"expected_pattern":{"enum":["cochanged","static_only","runtime_only","both_unchanged"],"type":"string"},"statement":{"maxLength":500,"minLength":1,"type":"string"}},"required":["statement","expected_pattern"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"observed_pattern":{"enum":["cochanged","static_only","runtime_only","both_unchanged","unknown","truncated"],"type":"string"},"runtime":{"additionalProperties":false,"properties":{"comparison_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"enum":["terminal","interaction","exit","filesystem","protocol","process","shim"],"type":"string"},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"}},"required":["comparison_evidence_id","dimension","status"],"type":"object"},"side_alignment":{"enum":["left_to_left","left_to_right"],"type":"string"},"static":{"additionalProperties":false,"properties":{"comparison_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"conclusion_kind":{"enum":["derived_relationship","contradiction","unresolved_branch"],"type":"string"},"selector":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact","type":"string"},"logical_path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","logical_path"],"type":"object"},{"additionalProperties":false,"properties":{"dimension":{"enum":["identity","pseudocode","assembly","comments","calls","references","strings_names","cfg"],"type":"string"},"kind":{"const":"function","type":"string"}},"required":["kind","dimension"],"type":"object"}]},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"}},"required":["comparison_evidence_id","selector","status","conclusion_kind"],"type":"object"}},"required":["correlation_id","static","runtime","side_alignment","hypothesis","observed_pattern","classification","evidence_links","limitations"],"type":"object"},"maxItems":100,"type":"array"},"limit":{"maximum":100,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":20100,"minItems":2,"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"status":{"enum":["correlated","contradicted","unknown","truncated"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"contradictions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"hypotheses":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["hypotheses","contradictions","unresolved"],"type":"object"}},"required":["status","summary","correlations","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Correlate Static And Runtime"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Verify a finite typed behavioral and structural specification against a canonical Evidence bundle. Pass means every declared claim has complete comparable authority—not global source equivalence; changed claims fail and missing, limited, or unresolved evidence stays unknown.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"limit":100,"offset":0,"specification":{"claims":[{"claim_id":"terminal-output","comparison_evidence_id":"ev_2ffc472e561cea4b5e65ddaf7b80bc112b7ed6d0d023f0cf7398bc2068a12e2d","dimension":"terminal","kind":"behavioral","title":"Terminal output remains equivalent"}],"name":"Terminal compatibility","schema_version":1}}],"properties":{"coverage":{"additionalProperties":false,"description":"Exact reconstruction-coverage commitment to verify.","properties":{"boundary_id":{"description":"Exact reconstruction boundary identifier to evaluate.","maxLength":200,"minLength":1,"type":"string"},"revision":{"description":"Value for revision.","maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_sha256":{"description":"Exact SHA-256 digest of revision.","pattern":"^[a-f0-9]{64}$","type":"string"},"workspace_id":{"description":"Value for workspace id.","pattern":"^rcw_[a-f0-9]{64}$","type":"string"}},"required":["workspace_id","revision","revision_sha256","boundary_id"],"type":"object"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"specification":{"description":"Value for specification.","properties":{"claims":{"description":"Value for claims.","items":{"oneOf":[{"properties":{"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,99}$","type":"string"},"comparison_evidence_id":{"description":"Exact Evidence v2 identifier for the comparison observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"description":"Value for dimension.","enum":["overall","terminal","interaction","exit","filesystem","protocol","process","shim"],"type":"string"},"kind":{"const":"behavioral","description":"Value for kind.","type":"string"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"}},"required":["claim_id","title","comparison_evidence_id","kind","dimension"],"type":"object"},{"properties":{"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,99}$","type":"string"},"comparison_evidence_id":{"description":"Exact Evidence v2 identifier for the comparison observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"description":"Value for dimension.","enum":["overall","identity","pseudocode","assembly","comments","calls","references","strings_names","cfg"],"type":"string"},"kind":{"const":"structural-function","description":"Value for kind.","type":"string"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"}},"required":["claim_id","title","comparison_evidence_id","kind","dimension"],"type":"object"},{"properties":{"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,99}$","type":"string"},"comparison_evidence_id":{"description":"Exact Evidence v2 identifier for the comparison observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"const":"overall","description":"Value for dimension.","type":"string"},"kind":{"const":"structural-artifact","description":"Value for kind.","type":"string"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"}},"required":["claim_id","title","comparison_evidence_id","kind","dimension"],"type":"object"}]},"maxItems":100,"minItems":1,"type":"array"},"name":{"description":"Exact name used by this operation.","maxLength":200,"minLength":1,"type":"string"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","name","claims"],"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["specification"],"type":"object"},"kind":"session","name":"verify_reconstruction","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"claims":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"claim_id":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,99}$","type":"string"},"comparison_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"minLength":1,"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":201,"minItems":3,"type":"array"},"kind":{"enum":["behavioral","structural-function","structural-artifact"],"type":"string"},"left_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"observed_status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"right_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"status":{"enum":["pass","fail","unknown"],"type":"string"},"unknown_ids":{"items":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"}},"required":["claim_id","kind","dimension","status","observed_status","comparison_evidence_id","left_evidence_ids","right_evidence_ids","evidence_links","unknown_ids","limitations"],"type":"object"},"maxItems":100,"type":"array"},"limit":{"maximum":100,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":100,"minimum":1,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":20100,"minItems":3,"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"claim_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,99}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"operation":{"maxLength":200,"minLength":1,"type":"string"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"},"unknown_ids":{"items":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"}},"required":["operation","rationale","claim_ids","unknown_ids"],"type":"object"},"maxItems":2000,"type":"array"},"specification_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"status":{"enum":["pass","fail","unknown"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"behavioral":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"failed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"passed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"structural":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":100,"minimum":1,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","passed","failed","unknown","behavioral","structural"],"type":"object"}},"required":["status","specification_sha256","summary","claims","recommended_probes","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Verify Reconstruction"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"List current residual-unknown heads in deterministic ID order, with optional exact status, severity, and domain filters. Pages default to 100 items; while has_more is true, pass next_offset as offset and continue until false. This is read-only; unresolved, contradicted, and non-truth dispositions remain distinct.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":false,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"limit":100,"offset":0}],"properties":{"domain":{"description":"Value for domain.","maxLength":100,"minLength":1,"type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"}},"type":"object"},"kind":"session","name":"list_unknowns","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"unknown":{"additionalProperties":false,"properties":{"contradicting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"question":{"maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"operation":{"maxLength":200,"minLength":1,"type":"string"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"type":"number"},"relationships":{"items":{"additionalProperties":false,"properties":{"type":{"enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}]},"required_confidence":{"enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}]},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}]},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"resolution":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"disposition":{"const":"verified","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"additionalProperties":false,"properties":{"disposition":{"enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"severity":{"enum":["low","medium","high","critical"],"type":"string"},"status":{"enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"},"uri":{"pattern":"^rea:\\\\/\\\\/unknown\\\\/unk_[a-f0-9]{64}$","type":"string"}},"required":["unknown","uri"],"type":"object"},"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"List Unknowns"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Create one deterministic residual unknown and immutable mutation evidence. Requires approved: true, validates all evidence and relationship references, and rejects duplicate stable identity.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"approved":true,"contradicting_evidence_ids":[],"domain":"protocol","question":"Does this branch require an unavailable external service?","recommended_probes":[{"operation":"capture_process_scenario","rationale":"Replay branch."}],"relationships":[],"required_authority":"controlled-replay","required_confidence":"observed","required_environment":null,"severity":"medium","supporting_evidence_ids":[]}],"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"contradicting_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the contradicting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"description":"Value for domain.","maxLength":100,"minLength":1,"type":"string"},"question":{"description":"Concrete unresolved question to retain for later investigation.","maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"description":"Value for recommended probes.","items":{"properties":{"operation":{"description":"Value for operation.","maxLength":200,"minLength":1,"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"relationships":{"description":"Value for relationships.","items":{"properties":{"type":{"description":"Value for type.","enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}],"description":"Value for required authority."},"required_confidence":{"description":"Value for required confidence.","enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for architecture."},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for id."},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}],"description":"Value for isolation."},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for platform."}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for required environment."},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"supporting_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the supporting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"}},"required":["question","severity","domain","required_authority","required_confidence","required_environment","recommended_probes","relationships","approved"],"type":"object"},"kind":"session","name":"record_unknown","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"contradicting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"question":{"maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"operation":{"maxLength":200,"minLength":1,"type":"string"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"type":"number"},"relationships":{"items":{"additionalProperties":false,"properties":{"type":{"enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}]},"required_confidence":{"enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}]},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}]},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"resolution":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"disposition":{"const":"verified","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"additionalProperties":false,"properties":{"disposition":{"enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"severity":{"enum":["low","medium","high","critical"],"type":"string"},"status":{"enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Record Unknown"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Append one immutable full-state revision and mutation evidence. Requires approved: true and exact expected_revision; stale concurrent writers fail instead of overwriting newer analysis.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"approved":true,"contradicting_evidence_ids":[],"expected_revision":1,"recommended_probes":[],"relationships":[],"required_authority":"controlled-replay","required_confidence":"observed","required_environment":null,"resolution":null,"severity":"medium","status":"investigating","supporting_evidence_ids":[],"unknown_id":"unk_0000000000000000000000000000000000000000000000000000000000000000"}],"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"contradicting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the contradicting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"expected_revision":{"description":"Expected revision used to reject stale or mismatched input.","maximum":9007199254740991,"minimum":1,"type":"integer"},"recommended_probes":{"description":"Value for recommended probes.","items":{"properties":{"operation":{"description":"Value for operation.","maxLength":200,"minLength":1,"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"relationships":{"description":"Value for relationships.","items":{"properties":{"type":{"description":"Value for type.","enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}],"description":"Value for required authority."},"required_confidence":{"description":"Value for required confidence.","enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for architecture."},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for id."},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}],"description":"Value for isolation."},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for platform."}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for required environment."},"resolution":{"anyOf":[{"oneOf":[{"properties":{"disposition":{"const":"verified","description":"Value for disposition.","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"properties":{"disposition":{"description":"Value for disposition.","enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}],"description":"Value for resolution."},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the supporting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["unknown_id","expected_revision","approved","status","severity","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution"],"type":"object"},"kind":"session","name":"update_unknown","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"contradicting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"question":{"maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"operation":{"maxLength":200,"minLength":1,"type":"string"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"type":"number"},"relationships":{"items":{"additionalProperties":false,"properties":{"type":{"enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}]},"required_confidence":{"enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}]},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}]},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"resolution":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"disposition":{"const":"verified","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"additionalProperties":false,"properties":{"disposition":{"enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"severity":{"enum":["low","medium","high","critical"],"type":"string"},"status":{"enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Update Unknown"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Revalidate the current residual-unknown head against live bundled evidence, exact authority/confidence/environment requirements, and revision integrity. Withdrawn and out-of-scope dispositions are not truth claims.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":false,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"unknown_id":"unk_0000000000000000000000000000000000000000000000000000000000000000"}],"properties":{"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["unknown_id"],"type":"object"},"kind":"session","name":"verify_unknown_resolution","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"truthVerified":{"type":"boolean"},"unknown":{"additionalProperties":false,"properties":{"contradicting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"question":{"maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"operation":{"maxLength":200,"minLength":1,"type":"string"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"type":"number"},"relationships":{"items":{"additionalProperties":false,"properties":{"type":{"enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}]},"required_confidence":{"enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}]},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}]},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"resolution":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"disposition":{"const":"verified","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"additionalProperties":false,"properties":{"disposition":{"enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"severity":{"enum":["low","medium","high","critical"],"type":"string"},"status":{"enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"},"valid":{"type":"boolean"}},"required":["valid","truthVerified","unknown"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Verify Unknown Resolution"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Evaluate ordered HTTP and WebSocket events directly against one validated finite replay machine without opening sockets or launching a target. Returns every decision, a capture-value-free transition journal, one redacted action table entry per used transition, captured aliases, final state, and exact configured and consumed limits.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":false,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"events":[{"at_ms":0,"body":"{\\"token\\":\\"opaque\\"}","connection":"not_applicable","headers":{},"method":"POST","path":"/callback","protocol":"http"}],"machine":{"initial_state":"waiting","limits":{"bytes":1000000,"connections":100,"duration_ms":30000,"messages":10000},"max_transitions":1,"states":[{"max_visits":100000,"name":"waiting","terminal":false},{"max_visits":100000,"name":"complete","terminal":true}],"transitions":[{"actions":[{"body":"","headers":{},"status":204,"type":"http_response"}],"captures":[{"sensitive":true,"value":{"path":["token"],"source":"request_json"},"variable":"token"}],"from":"waiting","guards":[],"id":"accept_callback","max_uses":1,"priority":100,"to":"complete","trigger":{"body":null,"headers":{},"method":"POST","path":"/callback","protocol":"http"}}]}}],"properties":{"events":{"description":"Value for events.","items":{"oneOf":[{"additionalProperties":false,"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"connection":{"const":"not_applicable","description":"Value for connection.","type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"method":{"description":"Value for method.","maxLength":16,"minLength":1,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":8192,"pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"http","description":"Value for protocol.","type":"string"}},"required":["protocol","connection","method","at_ms","path","headers","body"],"type":"object"},{"additionalProperties":false,"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"connection":{"description":"Value for connection.","enum":["initial","reconnect"],"type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"method":{"description":"Value for method.","type":"null"},"path":{"description":"Local filesystem path used by this operation.","maxLength":8192,"pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_connect","description":"Value for protocol.","type":"string"}},"required":["protocol","connection","method","at_ms","path","headers","body"],"type":"object"},{"additionalProperties":false,"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"connection":{"description":"Value for connection.","enum":["initial","reconnect"],"type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"method":{"description":"Value for method.","type":"null"},"path":{"description":"Local filesystem path used by this operation.","maxLength":8192,"pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_message","description":"Value for protocol.","type":"string"}},"required":["protocol","connection","method","at_ms","path","headers","body"],"type":"object"}]},"maxItems":10000,"type":"array"},"machine":{"additionalProperties":false,"description":"Value for machine.","properties":{"initial_state":{"description":"Value for initial state.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"limits":{"additionalProperties":false,"default":{"bytes":1000000,"connections":100,"duration_ms":30000,"messages":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"bytes":{"default":1000000,"description":"Value for bytes.","maximum":10000000,"minimum":1,"type":"integer"},"connections":{"default":100,"description":"Value for connections.","maximum":1000,"minimum":1,"type":"integer"},"duration_ms":{"default":30000,"description":"Value for duration ms.","maximum":300000,"minimum":1,"type":"integer"},"messages":{"default":10000,"description":"Value for messages.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"max_transitions":{"description":"Maximum permitted transitions for this operation.","maximum":100000,"minimum":1,"type":"integer"},"states":{"description":"Value for states.","items":{"additionalProperties":false,"properties":{"max_visits":{"default":100000,"description":"Maximum permitted visits for this operation.","maximum":100000,"minimum":1,"type":"integer"},"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"terminal":{"default":false,"description":"Value for terminal.","type":"boolean"}},"required":["name"],"type":"object"},"maxItems":256,"minItems":1,"type":"array"},"transitions":{"description":"Value for transitions.","items":{"additionalProperties":false,"properties":{"actions":{"description":"Value for actions.","items":{"oneOf":[{"additionalProperties":false,"properties":{"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"default":{},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"status":{"description":"Current lifecycle or verification status.","maximum":599,"minimum":100,"type":"integer"},"type":{"const":"http_response","description":"Value for type.","type":"string"}},"required":["type","status","body"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"description":"Value for data.","maxLength":1000000,"type":"string"},"type":{"const":"websocket_send","description":"Value for type.","type":"string"}},"required":["type","data"],"type":"object"},{"additionalProperties":false,"properties":{"type":{"const":"disconnect","description":"Value for type.","type":"string"}},"required":["type"],"type":"object"},{"additionalProperties":false,"properties":{"duration_ms":{"description":"Value for duration ms.","maximum":30000,"minimum":0,"type":"integer"},"type":{"const":"delay","description":"Value for type.","type":"string"}},"required":["type","duration_ms"],"type":"object"}]},"maxItems":32,"minItems":1,"type":"array"},"captures":{"description":"Value for captures.","items":{"additionalProperties":false,"properties":{"sensitive":{"default":false,"description":"Value for sensitive.","type":"boolean"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"source":{"const":"request_header","description":"Value for source.","type":"string"}},"required":["source","name"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"request_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"websocket_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"action_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"}]},"variable":{"description":"Value for variable.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["variable","value"],"type":"object"},"maxItems":32,"type":"array"},"from":{"description":"Value for from.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"guards":{"description":"Value for guards.","items":{"additionalProperties":false,"properties":{"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"source":{"const":"request_header","description":"Value for source.","type":"string"}},"required":["source","name"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"request_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"websocket_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"action_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"}]},"variable":{"description":"Value for variable.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["variable","value"],"type":"object"},"maxItems":32,"type":"array"},"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"max_uses":{"description":"Maximum permitted uses for this operation.","maximum":10000,"minimum":1,"type":"integer"},"priority":{"default":100,"description":"Value for priority.","maximum":1000,"minimum":0,"type":"integer"},"to":{"description":"Value for to.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"trigger":{"description":"Value for trigger.","oneOf":[{"additionalProperties":false,"properties":{"body":{"anyOf":[{"maxLength":1000000,"type":"string"},{"type":"null"}],"default":null,"description":"Value for body."},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"method":{"description":"Value for method.","maxLength":16,"minLength":1,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"http","description":"Value for protocol.","type":"string"}},"required":["protocol","method","path"],"type":"object"},{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_connect","description":"Value for protocol.","type":"string"}},"required":["protocol","path"],"type":"object"},{"additionalProperties":false,"properties":{"body":{"anyOf":[{"maxLength":1000000,"type":"string"},{"type":"null"}],"default":null,"description":"Value for body."},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_message","description":"Value for protocol.","type":"string"}},"required":["protocol","path"],"type":"object"}]}},"required":["id","from","to","trigger","actions","max_uses"],"type":"object"},"maxItems":2000,"minItems":1,"type":"array"}},"required":["initial_state","states","transitions","max_transitions"],"type":"object"}},"required":["machine","events"],"type":"object"},"kind":"session","name":"run_replay_machine","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"decisions":{"items":{"additionalProperties":false,"properties":{"event_sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outcome":{"anyOf":[{"const":"matched","type":"string"},{"enum":["unmatched","invalid_state","guard_failed","transition_exhausted","invalid_capture","unexpected_reconnect","limit_exhausted"],"type":"string"}]},"transition_sequence":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["event_sequence","outcome","transition_sequence"],"type":"object"},"maxItems":10000,"type":"array"},"final_state":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"initial_state":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"limits":{"additionalProperties":false,"properties":{"configured":{"additionalProperties":false,"properties":{"bytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"connections":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"duration_ms":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"messages":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"transitions":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["transitions","connections","messages","bytes","duration_ms"],"type":"object"},"usage":{"additionalProperties":false,"properties":{"admitted_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"last_at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"messages":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offered_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"transitions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["offered_events","admitted_events","transitions","connections","messages","bytes","last_at_ms"],"type":"object"}},"required":["configured","usage"],"type":"object"},"schema_version":{"const":1,"type":"number"},"terminal":{"type":"boolean"},"transition_actions":{"items":{"additionalProperties":false,"properties":{"actions":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"body":{"maxLength":1000000,"type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"type":"string"},"propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"status":{"maximum":599,"minimum":100,"type":"integer"},"type":{"const":"http_response","type":"string"}},"required":["type","status","headers","body"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"maxLength":1000000,"type":"string"},"type":{"const":"websocket_send","type":"string"}},"required":["type","data"],"type":"object"},{"additionalProperties":false,"properties":{"type":{"const":"disconnect","type":"string"}},"required":["type"],"type":"object"},{"additionalProperties":false,"properties":{"duration_ms":{"maximum":30000,"minimum":0,"type":"integer"},"type":{"const":"delay","type":"string"}},"required":["type","duration_ms"],"type":"object"}]},"maxItems":32,"type":"array"},"transition_id":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["transition_id","actions"],"type":"object"},"maxItems":2000,"type":"array"},"transition_journal":{"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"captured_aliases":{"items":{"additionalProperties":false,"properties":{"name":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"sensitive":{"type":"boolean"}},"required":["name","sensitive"],"type":"object"},"maxItems":32,"type":"array"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state_after":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"state_before":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"transition_id":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["sequence","at_ms","transition_id","state_before","state_after","captured_aliases"],"type":"object"},"maxItems":10000,"type":"array"}},"required":["schema_version","initial_state","final_state","terminal","decisions","transition_journal","transition_actions","limits"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Run Replay Machine"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Retain the current canonical Evidence v2 bundle as an immutable session resource. Returns a compact digest summary and exact opaque URI; copy that URI unchanged and call MCP resources/read (Codex: read_mcp_resource) for the full bundle. Repeating an unchanged snapshot is idempotent.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{}],"properties":{},"type":"object"},"kind":"session","name":"snapshot_evidence_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"bundle_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"bundle_uri":{"pattern":"^rea:\\\\/\\\\/evidence-bundle\\\\/[a-f0-9]{64}$","type":"string"},"bundle_version":{"const":2,"type":"number"},"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"records":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scope":{"const":"session","type":"string"},"survives_session":{"const":false,"type":"boolean"},"unknowns":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["bundle_digest","bundle_version","bytes","records","unknowns","scope","survives_session","bundle_uri"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Snapshot Evidence Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":true,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Release one immutable session-retained Evidence v2 bundle by exact digest. This is the recovery operation when bounded bundle retention is exhausted; releasing an unknown digest is idempotent and reports released: false.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":true,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"bundle_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}],"properties":{"bundle_digest":{"description":"Value for bundle digest.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["bundle_digest"],"type":"object"},"kind":"session","name":"release_evidence_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"bundle_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"released":{"type":"boolean"}},"required":["bundle_digest","released"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Release Evidence Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compose the selected document, current address, and containing/current procedure into one provider-neutral result. The result reflects sequential provider observations, not an atomic cursor snapshot; a cursor outside any procedure returns procedure: null. Scalar navigation getters remain available for evaluation and compatibility.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{}],"properties":{"document":{"description":"Exact provider document or program identity.","minLength":1,"type":"string"}},"type":"object"},"kind":"session","name":"get_navigation_context","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"address":{"type":"string"},"document":{"type":"string"},"procedure":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["document","address","procedure"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Get Navigation Context"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Inspect one explicit reproducible address for its analyzed name, containing procedure, regular and inline comments, and matching bookmarks. Each unsupported facet returns a typed unavailable outcome; xrefs, assembly, and pseudocode remain separate bounded follow-ups.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"address":"0x1000"}],"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"document":{"description":"Exact provider document or program identity.","minLength":1,"type":"string"}},"required":["address"],"type":"object"},"kind":"session","name":"inspect_address_context","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"address":{"type":"string"},"bookmarks":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"available","type":"string"},"value":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"remediation":{"type":"string"},"state":{"const":"unavailable","type":"string"}},"required":["state","reason","remediation"],"type":"object"}]},"comment":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"available","type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"remediation":{"type":"string"},"state":{"const":"unavailable","type":"string"}},"required":["state","reason","remediation"],"type":"object"}]},"document":{"anyOf":[{"type":"string"},{"type":"null"}]},"inline_comment":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"available","type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"remediation":{"type":"string"},"state":{"const":"unavailable","type":"string"}},"required":["state","reason","remediation"],"type":"object"}]},"name":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"available","type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"remediation":{"type":"string"},"state":{"const":"unavailable","type":"string"}},"required":["state","reason","remediation"],"type":"object"}]},"procedure":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"available","type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"remediation":{"type":"string"},"state":{"const":"unavailable","type":"string"}},"required":["state","reason","remediation"],"type":"object"}]}},"required":["address","document","name","procedure","comment","inline_comment","bookmarks"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Inspect Address Context"}]}'; + '{"auxiliaryProviders":[{"capabilities":[{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["DMG child inventory is macOS-only and requires per-call approval plus operator policy; PKG remains root-hash-only.","ASAR files discovered in filesystem-backed inventories are expanded without bulk extraction; other nested containers remain recorded only."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":120000},"operation":"inventory_artifact","outputContractVersion":1,"pagination":"offset","provider":{"id":"rea-artifact-graph","name":"REA safe artifact graph provider","version":"1"},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["DMG child inventory is macOS-only and requires per-call approval plus operator policy; PKG remains root-hash-only.","ASAR files discovered in filesystem-backed inventories are expanded without bulk extraction; other nested containers remain recorded only."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":120000},"operation":"inspect_artifact","outputContractVersion":1,"pagination":"none","provider":{"id":"rea-artifact-graph","name":"REA safe artifact graph provider","version":"1"},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":true,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["DMG child inventory is macOS-only and requires per-call approval plus operator policy; PKG remains root-hash-only.","ASAR files discovered in filesystem-backed inventories are expanded without bulk extraction; other nested containers remain recorded only."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":120000},"operation":"extract_artifact","outputContractVersion":1,"pagination":"offset","provider":{"id":"rea-artifact-graph","name":"REA safe artifact graph provider","version":"1"},"reason":null}],"identity":{"id":"rea-artifact-graph","name":"REA safe artifact graph provider","version":"1"}},{"capabilities":[{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["Availability and textual formats depend on the installed macOS/Xcode toolchain."],"limits":{"maxPayloadBytes":4194304,"maxResults":null,"timeoutMs":30000},"operation":"inspect_macho","outputContractVersion":1,"pagination":"none","provider":{"id":"native-macos","name":"macOS native inspection utilities","version":null},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":true,"inputContractVersion":1,"limitations":["Availability and textual formats depend on the installed macOS/Xcode toolchain."],"limits":{"maxPayloadBytes":4194304,"maxResults":null,"timeoutMs":30000},"operation":"inspect_signature","outputContractVersion":1,"pagination":"none","provider":{"id":"native-macos","name":"macOS native inspection utilities","version":null},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":true,"inputContractVersion":1,"limitations":["Availability and textual formats depend on the installed macOS/Xcode toolchain."],"limits":{"maxPayloadBytes":4194304,"maxResults":null,"timeoutMs":30000},"operation":"inspect_plist","outputContractVersion":1,"pagination":"none","provider":{"id":"native-macos","name":"macOS native inspection utilities","version":null},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":true,"inputContractVersion":1,"limitations":["Availability and textual formats depend on the installed macOS/Xcode toolchain."],"limits":{"maxPayloadBytes":4194304,"maxResults":null,"timeoutMs":30000},"operation":"list_architectures","outputContractVersion":1,"pagination":"none","provider":{"id":"native-macos","name":"macOS native inspection utilities","version":null},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":true,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":true,"inputContractVersion":1,"limitations":["Availability and textual formats depend on the installed macOS/Xcode toolchain."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":30000},"operation":"demangle_swift","outputContractVersion":1,"pagination":"none","provider":{"id":"native-macos","name":"macOS native inspection utilities","version":null},"reason":null}],"identity":{"id":"native-macos","name":"macOS native inspection utilities","version":null}},{"capabilities":[{"available":true,"effects":{"changesPermissions":false,"launchesProcess":false,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["This capability inventories PE/CLI identity only; inspect_managed_members admits bounded metadata members, signatures, and CIL anchors.","It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":null},"operation":"inspect_managed_artifact","outputContractVersion":1,"pagination":"offset","provider":{"id":"rea-dotnet-static","name":"REA managed static analysis provider","version":"1"},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":false,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["This capability decodes bounded PE/CLI metadata members, signatures, and file-backed method bodies; decompiled C# and cross-build matching are separate future contracts.","It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":null},"operation":"inspect_managed_members","outputContractVersion":1,"pagination":"offset","provider":{"id":"rea-dotnet-static","name":"REA managed static analysis provider","version":"1"},"reason":null},{"available":true,"effects":{"changesPermissions":false,"launchesProcess":false,"mayAccessNetwork":false,"mayShowUi":false,"mayWriteFilesystem":false,"mutatesArtifact":false,"requiresRoot":false},"exhaustive":false,"inputContractVersion":1,"limitations":["This capability inventories managed declarations for native boundaries only; native exports, thunks, and addresses require separate native-provider evidence.","It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code."],"limits":{"maxPayloadBytes":4194304,"maxResults":500,"timeoutMs":null},"operation":"inspect_managed_native_boundaries","outputContractVersion":1,"pagination":"offset","provider":{"id":"rea-dotnet-static","name":"REA managed static analysis provider","version":"1"},"reason":null}],"identity":{"id":"rea-dotnet-static","name":"REA managed static analysis provider","version":"1"}}],"catalog":[{"analysisOperation":"address_name","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Resolve the primary analyzed name at a code or data address. Headless providers require an explicit address; GUI providers may default to their current cursor. Null means the provider has no primary name at that address.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"address_name","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Address Name"},{"analysisOperation":"comment","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Read the regular analysis comment at an address, defaulting to the current cursor. This is read-only and returns null when no comment exists; use set_comment to persist a finding.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"comment","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Comment"},{"analysisOperation":"current_address","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return Hopper\'s current cursor address for the selected document. Use only for interactive navigation state; prefer explicit addresses in reproducible investigations.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"current_address","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Current Address"},{"analysisOperation":"current_procedure","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the analyzed procedure containing Hopper\'s current cursor. Use procedure_info or analyze_function next; this depends on GUI cursor state and is not an exhaustive lookup.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"current_procedure","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Current Procedure"},{"analysisOperation":"current_document","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the document currently selected by REA\'s Hopper bridge. Use list_documents before switching when several documents are open.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"current_document","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Current Document"},{"analysisOperation":"goto_address","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Move Hopper\'s GUI cursor to a hexadecimal address and return the resolved address. This changes navigation state but not analysis data; use explicit-address tools for headless workflows.","effects":{"accessesNetwork":false,"changesUiState":true,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"goto_address","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Goto Address"},{"analysisOperation":"inline_comment","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Read the inline instruction comment at an address, defaulting to the current cursor. Returns null when absent; use set_inline_comment to write one.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"inline_comment","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inline Comment"},{"analysisOperation":"list_bookmarks","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"List every bookmark in the selected Hopper document as address and name pairs. Use bookmarks as analyst-authored navigation aids; this does not discover code references.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_bookmarks","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Bookmarks"},{"analysisOperation":"list_documents","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"List provider program or document identities. Hopper may expose several documents; a Ghidra headless session contains exactly its one imported Program.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_documents","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"type":"string"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Documents"},{"analysisOperation":"list_names","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Page through analyzed memory and external symbols as address/value pairs. Provider metadata distinguishes Ghidra primary, dynamic, external, type, and source facts when available; follow next_offset before claiming exhaustive coverage.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"limit":100,"offset":0}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_names","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"procedure":{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target"],"type":"object"},"string":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"encoding":{"type":"string"},"termination":{"enum":["missing","present_or_not_required"],"type":"string"}},"required":["encoding","termination","byte_length"],"type":"object"},"symbol":{"additionalProperties":false,"properties":{"dynamic":{"type":"boolean"},"external":{"type":"boolean"},"primary":{"type":"boolean"},"source":{"enum":["default","analysis","ai","imported","user_defined"],"type":"string"},"type":{"type":"string"}},"required":["primary","dynamic","external","type","source"],"type":"object"},"value":{"type":"string"},"value_truncated":{"type":"boolean"}},"required":["address","value"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Names"},{"analysisOperation":"list_procedures","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Page through analyzed procedures as address/value pairs after provider analysis. Ghidra metadata distinguishes thunks and external functions; follow next_offset for exhaustive coverage and use returned addresses in later function operations.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"limit":100,"offset":0}],"properties":{"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_procedures","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"procedure":{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target"],"type":"object"},"string":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"encoding":{"type":"string"},"termination":{"enum":["missing","present_or_not_required"],"type":"string"}},"required":["encoding","termination","byte_length"],"type":"object"},"symbol":{"additionalProperties":false,"properties":{"dynamic":{"type":"boolean"},"external":{"type":"boolean"},"primary":{"type":"boolean"},"source":{"enum":["default","analysis","ai","imported","user_defined"],"type":"string"},"type":{"type":"string"}},"required":["primary","dynamic","external","type","source"],"type":"object"},"value":{"type":"string"},"value_truncated":{"type":"boolean"}},"required":["address","value"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Procedures"},{"analysisOperation":"list_segments","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"List segments or memory blocks using exclusive end addresses. Ghidra reports block permissions, address space, image base, initialization, and overlay facts; Hopper marks unavailable permissions explicitly.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_segments","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"additionalProperties":false,"properties":{"address_space":{"type":"string"},"end":{"type":"string"},"executable":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"image_base":{"type":"string"},"initialized":{"type":"boolean"},"name":{"type":"string"},"overlay":{"type":"boolean"},"permissions":{"anyOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"source":{"const":"ghidra-memory-block","type":"string"}},"required":["available","source"],"type":"object"}]},"provenance":{"enum":["hopper-public-python-api","ghidra-memory-block"],"type":"string"},"readable":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"sections":{"items":{"additionalProperties":false,"properties":{"address_space":{"type":"string"},"end":{"type":"string"},"executable":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"image_base":{"type":"string"},"initialized":{"type":"boolean"},"name":{"type":"string"},"overlay":{"type":"boolean"},"permissions":{"anyOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"source":{"const":"ghidra-memory-block","type":"string"}},"required":["available","source"],"type":"object"}]},"provenance":{"enum":["hopper-public-python-api","ghidra-memory-block"],"type":"string"},"readable":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"start":{"type":"string"},"writable":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["name","start","end","readable","writable","executable","permissions","provenance"],"type":"object"},"type":"array"},"start":{"type":"string"},"writable":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["name","start","end","readable","writable","executable","permissions","provenance","sections"],"type":"object"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Segments"},{"analysisOperation":"list_strings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Page through provider-defined strings, or filter to one address, as address/value pairs. Ghidra reports charset, missing-terminator status, byte length, and explicit value truncation; follow next_offset for exhaustive results.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"limit":100,"offset":0}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"list_strings","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"procedure":{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target"],"type":"object"},"string":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"encoding":{"type":"string"},"termination":{"enum":["missing","present_or_not_required"],"type":"string"}},"required":["encoding","termination","byte_length"],"type":"object"},"symbol":{"additionalProperties":false,"properties":{"dynamic":{"type":"boolean"},"external":{"type":"boolean"},"primary":{"type":"boolean"},"source":{"enum":["default","analysis","ai","imported","user_defined"],"type":"string"},"type":{"type":"string"}},"required":["primary","dynamic","external","type","source"],"type":"object"},"value":{"type":"string"},"value_truncated":{"type":"boolean"}},"required":["address","value"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Strings"},{"analysisOperation":"next_address","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the next analyzed object address after an explicit address or current cursor. This is a navigation primitive, not instruction-flow or CFG analysis.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"next_address","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Next Address"},{"analysisOperation":"prev_address","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the previous analyzed instruction start before an explicit address or current cursor. This is a navigation primitive and may fail at document boundaries.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"prev_address","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Prev Address"},{"analysisOperation":"procedure_address","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Resolve an unambiguous procedure symbol name or provider-normalized address to its canonical entry address. External address spaces remain explicit; use the result before xrefs, assembly, or decompilation.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_address","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Address"},{"analysisOperation":"procedure_assembly","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return assembly for one analyzed procedure identified by symbol or hexadecimal address. Use when pseudocode loses calling-convention or instruction-level detail; output is currently returned as one unpaginated string.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_assembly","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Assembly"},{"analysisOperation":"procedure_callees","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the provider\'s resolved direct callees for one procedure identified by symbol or address. Unresolved indirect calls may be absent; use analyze_function and typed references to preserve available edge uncertainty.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_callees","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"type":"string"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Callees"},{"analysisOperation":"procedure_callers","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return the provider\'s resolved direct callers for one procedure identified by symbol or address. Results reflect completed static analysis and may omit unresolved indirect references.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_callers","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"type":"string"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Callers"},{"analysisOperation":"procedure_info","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return bounded metadata for one procedure identified by symbol or address: entrypoint, signature, locals, size, and block count. Follow with decompilation or assembly for behavior.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_info","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"basicblock_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"entrypoint":{"type":"string"},"length":{"minimum":0,"type":"number"},"locals":{"items":{"additionalProperties":false,"properties":{"description":{"type":"string"},"provenance":{"minLength":1,"type":"string"}},"required":["description","provenance"],"type":"object"},"type":"array"},"name":{"type":"string"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","entrypoint","basicblock_count","length","signature","locals","classification"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Info"},{"analysisOperation":"read_function_instructions","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Read one offset-paginated window of raw instructions for an analyzed procedure without decompilation, caller discovery, or whole-program string/name scans. Use this fast path for instruction-level orientation; follow next_offset when truncated.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"limit":64,"offset":0,"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"limit":{"default":64,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":100000,"minimum":0,"type":"integer"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"read_function_instructions","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"instruction_scan_truncated":{"type":"boolean"},"instructions":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"type":"string"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"type":"string"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"instructions_scanned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"}},"required":["procedure","instructions","instructions_scanned","instruction_scan_truncated","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Read Function Instructions"},{"analysisOperation":"read_bytes","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Read at most 4,096 analyzed bytes from one provider-normalized virtual address. The hexadecimal payload reports the exact returned length; incomplete reads remain explicit and unsupported provider APIs return typed capability unavailability.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000","length":16}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"length":{"default":256,"description":"Value for length.","maximum":4096,"minimum":1,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"read_bytes","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"address":{"type":"string"},"bytes_hex":{"pattern":"^(?:[a-f0-9]{2})*$","type":"string"},"complete":{"type":"boolean"},"requested_bytes":{"maximum":4096,"minimum":1,"type":"integer"},"returned_bytes":{"maximum":4096,"minimum":0,"type":"integer"}},"required":["address","requested_bytes","returned_bytes","bytes_hex","complete"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Read Bytes"},{"analysisOperation":"address_to_file_offset","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Map one provider-normalized virtual address to its original nonnegative file offset. Unmapped addresses fail explicitly, and providers without an authoritative mapping API return typed capability unavailability.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"address_to_file_offset","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"address":{"type":"string"},"file_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["address","file_offset"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Address To File Offset"},{"analysisOperation":"procedure_references","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return a bounded set of raw incoming or outgoing reference edges for one procedure. Endpoint procedures are resolved only from provider containment; Ghidra preserves observed reference kinds while providers without kind authority mark them unavailable.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"direction":"outgoing","limit":100,"max_instructions":500,"offset":0,"procedure":"main"}],"properties":{"direction":{"default":"outgoing","description":"Direction in which to traverse or compare relationships.","enum":["incoming","outgoing"],"type":"string"},"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"max_instructions":{"default":500,"description":"Maximum permitted instructions for this operation.","maximum":5000,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_references","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"direction":{"enum":["incoming","outgoing"],"type":"string"},"instruction_scan_truncated":{"type":"boolean"},"instructions_scanned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"references":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]}},"required":["procedure","direction","references","instructions_scanned","instruction_scan_truncated"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure References"},{"analysisOperation":"procedure_pseudo_code","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Decompile one analyzed procedure by symbol name or provider-normalized address. Returns provider-specific pseudocode, never original source or cross-provider text equivalence, and may return null; request procedure_assembly when instruction precision matters.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"procedure":"main"}],"properties":{"document":{"description":"The document name","type":"string"},"procedure":{"description":"The procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"official-proxy","name":"procedure_pseudo_code","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Procedure Pseudo Code"},{"analysisOperation":"resolve_containing_procedure","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Resolve an arbitrary address, including an interior instruction or exact external entry, to its provider-analyzed containing procedure. A negative result distinguishes outside segments from not in a procedure and is never guessed from nearby symbols.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"resolve_containing_procedure","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"oneOf":[{"additionalProperties":false,"properties":{"found":{"const":true,"type":"boolean"},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"query_address":{"type":"string"}},"required":["query_address","found","procedure"],"type":"object"},{"additionalProperties":false,"properties":{"found":{"const":false,"type":"boolean"},"procedure":{"type":"null"},"query_address":{"type":"string"},"reason":{"enum":["outside_segments","not_in_procedure"],"type":"string"}},"required":["query_address","found","procedure","reason"],"type":"object"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Resolve Containing Procedure"},{"analysisOperation":"search_procedures","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Search analyzed procedure names using literal matching by default or regex opt-in. Providers bound search work and reject regex constructs, paths, candidates, or cumulative work outside their finite budgets. Results are deterministic and offset-paginated.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"case_sensitive":false,"limit":100,"mode":"literal","offset":0,"pattern":"main"}],"properties":{"case_sensitive":{"default":false,"description":"Whether to match case","type":"boolean"},"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"mode":{"default":"literal","description":"Operation mode that selects the requested behavior.","enum":["literal","regex"],"type":"string"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"pattern":{"description":"The literal text or bounded regex pattern to search for","maxLength":256,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["pattern"],"type":"object"},"kind":"official-proxy","name":"search_procedures","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"value":{"type":"string"},"value_truncated":{"type":"boolean"}},"required":["address","value","value_truncated"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Search Procedures"},{"analysisOperation":"search_strings","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Search analyzed strings using literal matching by default or regex opt-in. Providers bound search work and reject regex constructs, paths, candidates, or cumulative work outside their finite budgets. Results are deterministic, offset-paginated, and explicitly truncated.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"case_sensitive":false,"limit":100,"mode":"literal","offset":0,"pattern":"authorization failed"}],"properties":{"case_sensitive":{"default":false,"description":"Whether to match case","type":"boolean"},"document":{"description":"The document name","type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"mode":{"default":"literal","description":"Operation mode that selects the requested behavior.","enum":["literal","regex"],"type":"string"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"pattern":{"description":"The literal text or bounded regex pattern to search for","maxLength":256,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["pattern"],"type":"object"},"kind":"official-proxy","name":"search_strings","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"value":{"type":"string"},"value_truncated":{"type":"boolean"}},"required":["address","value","value_truncated"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Search Strings"},{"analysisOperation":"set_address_name","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Assign an analyst name to one hexadecimal address and report Hopper\'s boolean result. This mutates analysis metadata; read it back with address_name before relying on it.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000","name":"entry"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"name":{"description":"Exact name used by this operation.","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address","name"],"type":"object"},"kind":"official-proxy","name":"set_address_name","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"boolean"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Address Name"},{"analysisOperation":"set_addresses_names","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Assign analyst names to an address/name map and return per-address success booleans. This mutates analysis metadata; use for bounded batches and verify failures individually.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"names":{"0x1000":"entry"}}],"properties":{"document":{"description":"The document name","type":"string"},"names":{"additionalProperties":{"type":"string"},"description":"Value for names.","propertyNames":{"type":"string"},"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["names"],"type":"object"},"kind":"official-proxy","name":"set_addresses_names","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":{"type":"boolean"},"propertyNames":{"type":"string"},"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Addresses Names"},{"analysisOperation":"set_bookmark","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Create or replace a bookmark at a hexadecimal address. This mutates navigation metadata; verify with list_bookmarks and do not treat bookmarks as binary evidence.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"name":{"description":"Exact name used by this operation.","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"set_bookmark","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"boolean"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Bookmark"},{"analysisOperation":"set_comment","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Write a regular analysis comment at a hexadecimal address and return whether readback matched. This mutates the Hopper document; use comments to record evidence IDs or reasoning.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000","comment":"validated entry point"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"comment":{"description":"Exact analyst comment text to write.","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address","comment"],"type":"object"},"kind":"official-proxy","name":"set_comment","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"boolean"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Comment"},{"analysisOperation":"set_current_document","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Select an already-open Hopper document by exact document name. This changes subsequent default-document routing; call list_documents first and prefer explicit document inputs where reproducibility matters.","effects":{"accessesNetwork":false,"changesUiState":true,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"document":"fixture"}],"properties":{"document":{"description":"Exact provider document or program identity.","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["document"],"type":"object"},"kind":"official-proxy","name":"set_current_document","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"string"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Current Document"},{"analysisOperation":"set_inline_comment","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Write an inline instruction comment at a hexadecimal address and return whether readback matched. This mutates analysis metadata; confirm with inline_comment.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000","comment":"calls parser"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"comment":{"description":"Exact analyst comment text to write.","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address","comment"],"type":"object"},"kind":"official-proxy","name":"set_inline_comment","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"boolean"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Set Inline Comment"},{"analysisOperation":"unset_bookmark","annotations":{"destructiveHint":true,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Remove the bookmark at a hexadecimal address and return whether it is absent. This mutates navigation metadata and does not alter binary bytes.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":true,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"address":"0x1000"}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"required":["address"],"type":"object"},"kind":"official-proxy","name":"unset_bookmark","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"type":"boolean"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Unset Bookmark"},{"analysisOperation":"xrefs","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Return analyzed references to a code or data address, defaulting to the current cursor. Use to connect strings, globals, selectors, and functions; bare addresses are untyped and indirect references may be incomplete.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{"address":{"description":"A provider-normalized address; default memory uses 0x-prefixed hexadecimal","type":"string"},"document":{"description":"The document name","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record typed capability unavailability as a residual unknown","type":"boolean"}},"type":"object"},"kind":"official-proxy","name":"xrefs","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"items":{"type":"string"},"type":"array"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Xrefs"},{"analysisOperation":"swift_classes","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Discover legacy-mangled Swift class procedures after exhaustively paging analyzed procedures. Returns at most 100 entries and scans at most 5,000 symbols; use analyze_swift_types for other Swift kinds.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"pattern":""}],"properties":{"pattern":{"default":"","description":"Text or bounded pattern used to filter matching results.","type":"string"}},"type":"object"},"kind":"enhanced","name":"swift_classes","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"classes":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"},"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["count","classes"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Swift Classes"},{"analysisOperation":"get_objc_classes","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Discover and deduplicate Objective-C class labels after exhaustively paging names, optionally filtering by literal substring. Returns at most 100 classes; inspect matching metadata and references next.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"pattern":""}],"properties":{"pattern":{"default":"","description":"Text or bounded pattern used to filter matching results.","type":"string"}},"type":"object"},"kind":"enhanced","name":"get_objc_classes","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"classes":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"},"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["count","classes"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Get Objc Classes"},{"analysisOperation":"get_objc_protocols","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Discover and deduplicate Objective-C and Swift protocol labels after exhaustively paging names. Returns at most 100 entries; use xrefs or analyze_function to connect a protocol to implementations.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{}],"properties":{},"type":"object"},"kind":"enhanced","name":"get_objc_protocols","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"protocols":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"}},"required":["count","protocols"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Get Objc Protocols"},{"analysisOperation":"batch_decompile","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Decompile up to 20 explicit procedure symbols or addresses concurrently. Returns ordered per-item ok/error variants and aggregate counts; use analyze_function for a richer single-function dossier.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"addresses":[]}],"properties":{"addresses":{"default":[],"description":"Ordered provider-normalized procedure addresses to analyze.","items":{"description":"A provider-normalized procedure address","type":"string"},"maxItems":20,"type":"array"}},"type":"object"},"kind":"enhanced","name":"batch_decompile","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"failed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"pseudocode":{"minLength":1,"type":"string"},"status":{"const":"ok","type":"string"}},"required":["address","status","pseudocode"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"type":"string"},"error":{"oneOf":[{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"invalid_request","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"unreadable_output","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"capability_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_timeout","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cancelled","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_integrity_mismatch","type":"string"},"details":{"additionalProperties":false,"properties":{"calculated_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"declared_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"logical_path":{"type":"string"},"unpacked":{"type":"boolean"}},"required":["logical_path","declared_sha256","calculated_sha256","unpacked"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation","details"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_operation_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"evidence_integrity_mismatch","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"truncated","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"permission_required","type":"string"},"details":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"ceiling":{"anyOf":[{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"},{"type":"null"}]},"missing":{"additionalProperties":false,"properties":{"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"const":true,"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"type":"object"},"requested":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"}},"required":["capability","requested","missing","ceiling"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"process_capture_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cleanup_incomplete","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"revision_conflict","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"outside_approved_root","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"configuration_invalid","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"target_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"execution_failure","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"plan_stale","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"}]},"status":{"const":"error","type":"string"}},"required":["address","status","error"],"type":"object"}]},"type":"array"},"succeeded":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","total","succeeded","failed"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Batch Decompile"},{"analysisOperation":"get_call_graph","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Traverse the bound provider\'s caller or callee relationships from one symbol or address for at most five levels. Every node has an ok/error status and failures use safe typed projections; unresolved indirect calls may be missing and results are not a whole-program CFG.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"address":"0x1000","depth":2,"direction":"forward"}],"properties":{"address":{"description":"A provider-normalized procedure address","type":"string"},"depth":{"default":2,"description":"Value for depth.","maximum":5,"minimum":1,"type":"integer"},"direction":{"default":"forward","description":"Direction in which to traverse or compare relationships.","enum":["forward","backward"],"type":"string"}},"required":["address"],"type":"object"},"kind":"enhanced","name":"get_call_graph","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"calls":{"items":{"type":"string"},"type":"array"},"status":{"const":"ok","type":"string"}},"required":["address","status","calls"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"type":"string"},"error":{"oneOf":[{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"invalid_request","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"unreadable_output","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"capability_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_timeout","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cancelled","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_integrity_mismatch","type":"string"},"details":{"additionalProperties":false,"properties":{"calculated_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"declared_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"logical_path":{"type":"string"},"unpacked":{"type":"boolean"}},"required":["logical_path","declared_sha256","calculated_sha256","unpacked"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation","details"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_operation_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"evidence_integrity_mismatch","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"truncated","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"permission_required","type":"string"},"details":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"ceiling":{"anyOf":[{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"},{"type":"null"}]},"missing":{"additionalProperties":false,"properties":{"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"const":true,"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"type":"object"},"requested":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"}},"required":["capability","requested","missing","ceiling"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"process_capture_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cleanup_incomplete","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"revision_conflict","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"outside_approved_root","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"configuration_invalid","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"target_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"execution_failure","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"plan_stale","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"}]},"status":{"const":"error","type":"string"}},"required":["address","status","error"],"type":"object"}]},"type":"array"},"propertyNames":{"type":"string"},"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Get Call Graph"},{"analysisOperation":"analyze_swift_types","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Categorize exhaustively paged procedure names into Swift classes, structs, enums, protocols, extensions, and other symbols. Scans at most 5,000 names and returns at most 50 entries per category.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{}],"properties":{},"type":"object"},"kind":"enhanced","name":"analyze_swift_types","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"categories":{"additionalProperties":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"}},"required":["count","items"],"type":"object"},"propertyNames":{"type":"string"},"type":"object"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","categories"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Analyze Swift Types"},{"analysisOperation":"find_xrefs_to_name","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Resolve an exact name through the bound provider\'s exhaustively paged name inventory and return a resolved or unresolved result. Unresolved names use the stable name_not_found reason; this compact xref workflow returns address-only projections.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"name":"malloc"}],"properties":{"name":{"description":"Exact name used by this operation.","type":"string"}},"required":["name"],"type":"object"},"kind":"enhanced","name":"find_xrefs_to_name","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"},"status":{"const":"resolved","type":"string"},"xrefs":{"items":{"type":"string"},"type":"array"}},"required":["status","name","address","xrefs"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"type":"string"},"reason":{"const":"name_not_found","type":"string"},"status":{"const":"unresolved","type":"string"}},"required":["status","name","reason"],"type":"object"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Find Xrefs To Name"},{"analysisOperation":"binary_overview","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Use immediately after opening a target to summarize document, exhaustive procedure/string counts, and a bounded segment sample. detail controls segment fields and limit controls only the returned segment sample.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"detail":"concise","limit":10}],"properties":{"detail":{"default":"concise","description":"Requested response detail level.","enum":["concise","detailed"],"type":"string"},"limit":{"default":10,"description":"Maximum number of results to return in this page.","maximum":50,"minimum":1,"type":"integer"}},"type":"object"},"kind":"enhanced","name":"binary_overview","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"detail":{"enum":["concise","detailed"],"type":"string"},"document":{"type":"string"},"procedure_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"segment_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"segments":{"items":{"additionalProperties":false,"properties":{"end":{"type":"string"},"length":{"minimum":0,"type":"number"},"name":{"type":"string"},"start":{"type":"string"}},"required":["name","start","end"],"type":"object"},"type":"array"},"string_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["document","detail","segments","segment_count","procedure_count","string_count"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Binary Overview"},{"analysisOperation":"analyze_function","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Preferred bounded analysis for one procedure symbol or address. Returns identity, provider-specific pseudocode, optional assembly, comments, calls, typed-or-explicitly-unavailable references, referenced strings/names, and local CFG blocks with exact truncation metadata. Providers with a structured decompiler model also expose native API boundary types, confidence, evidence, jump-table data/target addresses, and explicit decompiler-artifact labels.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"assembly_offset":0,"collection_offset":{"basic_blocks":0,"callees":0,"callers":0,"comments":0,"incoming_references":0,"outgoing_references":0,"referenced_names":0,"referenced_strings":0},"include_assembly":false,"limit":100,"max_instructions":500,"max_pseudocode_chars":20000,"procedure":"main","pseudocode_offset":0}],"properties":{"assembly_offset":{"default":0,"description":"Zero-based index of the first assembly to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"collection_offset":{"additionalProperties":false,"default":{"basic_blocks":0,"callees":0,"callers":0,"comments":0,"incoming_references":0,"outgoing_references":0,"referenced_names":0,"referenced_strings":0},"description":"Zero-based index of the first collection to return.","properties":{"basic_blocks":{"default":0,"description":"Value for basic blocks.","maximum":9007199254740991,"minimum":0,"type":"integer"},"callees":{"default":0,"description":"Value for callees.","maximum":9007199254740991,"minimum":0,"type":"integer"},"callers":{"default":0,"description":"Value for callers.","maximum":9007199254740991,"minimum":0,"type":"integer"},"comments":{"default":0,"description":"Value for comments.","maximum":9007199254740991,"minimum":0,"type":"integer"},"incoming_references":{"default":0,"description":"Value for incoming references.","maximum":9007199254740991,"minimum":0,"type":"integer"},"outgoing_references":{"default":0,"description":"Value for outgoing references.","maximum":9007199254740991,"minimum":0,"type":"integer"},"referenced_names":{"default":0,"description":"Value for referenced names.","maximum":9007199254740991,"minimum":0,"type":"integer"},"referenced_strings":{"default":0,"description":"Value for referenced strings.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},"include_assembly":{"default":false,"description":"Whether to include assembly in the result.","type":"boolean"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"max_instructions":{"default":500,"description":"Maximum permitted instructions for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_pseudocode_chars":{"default":20000,"description":"Maximum permitted pseudocode chars for this operation.","maximum":100000,"minimum":1,"type":"integer"},"procedure":{"description":"A procedure name or address","type":"string"},"pseudocode_offset":{"default":0,"description":"Zero-based index of the first pseudocode to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["procedure"],"type":"object"},"kind":"enhanced","name":"analyze_function","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"assembly":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"type":"string"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"type":"string"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"basic_blocks":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"end":{"type":"string"},"start":{"type":"string"},"successors":{"items":{"type":"string"},"type":"array"}},"required":["start","end","successors"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"end":{"type":"string"},"start":{"type":"string"},"successors":{"items":{"type":"string"},"type":"array"}},"required":["start","end","successors"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"callees":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"callers":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"comments":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"kind":{"enum":["comment","inline"],"type":"string"},"text":{"type":"string"}},"required":["address","kind","text"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"kind":{"enum":["comment","inline"],"type":"string"},"text":{"type":"string"}},"required":["address","kind","text"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"incoming_references":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"instruction_scan":{"additionalProperties":false,"properties":{"scanned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"}},"required":["scanned","truncated"],"type":"object"},"limitations":{"default":[],"items":{"type":"string"},"type":"array"},"native_api":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"minLength":1,"type":"string"},"residual_unknowns":{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"}},"required":["available","reason","residual_unknowns"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"calling_convention":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"type":"string"},"type":"array"},"jump_tables":{"items":{"additionalProperties":false,"properties":{"data_sources":{"items":{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"confidence":{"enum":["low","medium","high"],"type":"string"},"entry_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"entry_size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"provenance":{"enum":["ghidra-decompiler-load-table","ghidra-dispatch-block-data-reference"],"type":"string"}},"required":["address","provenance","entry_size_bytes","entry_count","confidence","evidence"],"type":"object"},"type":"array"},"data_sources_truncated":{"type":"boolean"},"dispatch_address":{"minLength":1,"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"mappings":{"items":{"additionalProperties":false,"properties":{"case_value":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"confidence":{"enum":["low","medium","high"],"type":"string"},"data_addresses":{"items":{"minLength":1,"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"target_address":{"minLength":1,"type":"string"}},"required":["case_value","target_address","data_addresses","confidence","evidence"],"type":"object"},"type":"array"},"mappings_truncated":{"type":"boolean"}},"required":["dispatch_address","data_sources","data_sources_truncated","mappings","mappings_truncated","limitations"],"type":"object"},"type":"array"},"jump_tables_truncated":{"type":"boolean"},"limitations":{"items":{"type":"string"},"type":"array"},"parameters":{"items":{"additionalProperties":false,"properties":{"confidence":{"enum":["low","medium","high"],"type":"string"},"data_type":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"name":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"ordinal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"role":{"const":"parameter","type":"string"},"size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"storage":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"required":["ordinal","name","data_type","size_bytes","storage","confidence","evidence","decompiler_artifacts","role"],"type":"object"},"type":"array"},"parameters_truncated":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"pseudocode":{"additionalProperties":false,"properties":{"classification":{"const":"decompiler-generated-non-source","type":"string"},"compilable":{"const":false,"type":"boolean"}},"required":["classification","compilable"],"type":"object"},"return_type":{"additionalProperties":false,"properties":{"confidence":{"enum":["low","medium","high"],"type":"string"},"data_type":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"name":{"type":"null"},"ordinal":{"type":"null"},"role":{"const":"return","type":"string"},"size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"storage":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"required":["ordinal","name","data_type","size_bytes","storage","confidence","evidence","decompiler_artifacts","role"],"type":"object"},"signature_source":{"minLength":1,"type":"string"}},"required":["available","provenance","signature_source","calling_convention","return_type","parameters","parameters_truncated","jump_tables","jump_tables_truncated","pseudocode","decompiler_artifacts","limitations"],"type":"object"}]},{"type":"null"}],"default":null},"outgoing_references":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"kind":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["available","reason"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"call":{"type":"boolean"},"computed":{"type":"boolean"},"conditional":{"type":"boolean"},"data":{"type":"boolean"},"external":{"type":"boolean"},"flow":{"type":"boolean"},"indirect":{"type":"boolean"},"jump":{"type":"boolean"},"operand_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"primary":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"read":{"type":"boolean"},"terminal":{"type":"boolean"},"type":{"type":"string"},"write":{"type":"boolean"}},"required":["available","provenance","type","flow","call","jump","data","read","write","indirect","computed","conditional","terminal","primary","operand_index","external"],"type":"object"}]},"source_address":{"type":"string"},"source_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]},"target_address":{"type":"string"},"target_procedure":{"anyOf":[{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},{"type":"null"}]}},"required":["source_address","target_address","source_procedure","target_procedure","kind"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"locals":{"items":{"additionalProperties":false,"properties":{"description":{"type":"string"},"provenance":{"minLength":1,"type":"string"}},"required":["description","provenance"],"type":"object"},"type":"array"},"name":{"type":"string"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["address","name","classification","signature","locals"],"type":"object"},"pseudocode":{"oneOf":[{"additionalProperties":false,"properties":{"next_offset":{"type":"null"},"returned_chars":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"type":"string"},"total_chars":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"const":false,"type":"boolean"}},"required":["text","total_chars","returned_chars","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned_chars":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"type":"string"},"total_chars":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"const":true,"type":"boolean"}},"required":["text","total_chars","returned_chars","truncated","next_offset"],"type":"object"}]},"referenced_names":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"source_address":{"type":"string"},"value":{"type":"string"}},"required":["address","value","source_address"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"source_address":{"type":"string"},"value":{"type":"string"}},"required":["address","value","source_address"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]},"referenced_strings":{"oneOf":[{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"source_address":{"type":"string"},"value":{"type":"string"}},"required":["address","value","source_address"],"type":"object"},"type":"array"},"next_offset":{"type":"null"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":false,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"},{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"source_address":{"type":"string"},"value":{"type":"string"}},"required":["address","value","source_address"],"type":"object"},"type":"array"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"const":true,"type":"boolean"}},"required":["items","total","returned","truncated","next_offset"],"type":"object"}]}},"required":["procedure","pseudocode","assembly","comments","callers","callees","incoming_references","outgoing_references","referenced_strings","referenced_names","basic_blocks","instruction_scan","native_api","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Analyze Function"},{"analysisOperation":"inspect_native_api","annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Reconstruct one native function boundary through inspectable substeps. Returns structured inferred return/parameter types with confidence and evidence, jump-table dispatch/data/target mappings, explicit decompiler-artifact labels, unsupported branches, and residual unknowns.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"max_instructions":500,"max_pseudocode_chars":20000,"procedure":"main"}],"properties":{"max_instructions":{"default":500,"description":"Maximum permitted instructions for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_pseudocode_chars":{"default":20000,"description":"Maximum permitted pseudocode chars for this operation.","maximum":100000,"minimum":1,"type":"integer"},"procedure":{"description":"A procedure name or address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record unsupported native API branches durably","type":"boolean"}},"required":["procedure"],"type":"object"},"kind":"enhanced","name":"inspect_native_api","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"boundary":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"reason":{"minLength":1,"type":"string"},"residual_unknowns":{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"}},"required":["available","reason","residual_unknowns"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"calling_convention":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-and-stack-variables","compiler-generated-control-flow","pointer-arithmetic","pseudocode"],"type":"string"},"type":"array"},"jump_tables":{"items":{"additionalProperties":false,"properties":{"data_sources":{"items":{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"confidence":{"enum":["low","medium","high"],"type":"string"},"entry_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"entry_size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"provenance":{"enum":["ghidra-decompiler-load-table","ghidra-dispatch-block-data-reference"],"type":"string"}},"required":["address","provenance","entry_size_bytes","entry_count","confidence","evidence"],"type":"object"},"type":"array"},"data_sources_truncated":{"type":"boolean"},"dispatch_address":{"minLength":1,"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"mappings":{"items":{"additionalProperties":false,"properties":{"case_value":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"confidence":{"enum":["low","medium","high"],"type":"string"},"data_addresses":{"items":{"minLength":1,"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"target_address":{"minLength":1,"type":"string"}},"required":["case_value","target_address","data_addresses","confidence","evidence"],"type":"object"},"type":"array"},"mappings_truncated":{"type":"boolean"}},"required":["dispatch_address","data_sources","data_sources_truncated","mappings","mappings_truncated","limitations"],"type":"object"},"type":"array"},"jump_tables_truncated":{"type":"boolean"},"limitations":{"items":{"type":"string"},"type":"array"},"parameters":{"items":{"additionalProperties":false,"properties":{"confidence":{"enum":["low","medium","high"],"type":"string"},"data_type":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"name":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"ordinal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"role":{"const":"parameter","type":"string"},"size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"storage":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"required":["ordinal","name","data_type","size_bytes","storage","confidence","evidence","decompiler_artifacts","role"],"type":"object"},"type":"array"},"parameters_truncated":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"pseudocode":{"additionalProperties":false,"properties":{"classification":{"const":"decompiler-generated-non-source","type":"string"},"compilable":{"const":false,"type":"boolean"}},"required":["classification","compilable"],"type":"object"},"return_type":{"additionalProperties":false,"properties":{"confidence":{"enum":["low","medium","high"],"type":"string"},"data_type":{"minLength":1,"type":"string"},"decompiler_artifacts":{"items":{"enum":["recovered-signature","register-or-stack-storage","compiler-generated-variable"],"type":"string"},"type":"array"},"evidence":{"items":{"additionalProperties":false,"properties":{"detail":{"minLength":1,"type":"string"},"kind":{"enum":["signature-source","decompiler-type","type-lock","calling-convention","jump-table"],"type":"string"},"source":{"minLength":1,"type":"string"}},"required":["kind","source","detail"],"type":"object"},"minItems":1,"type":"array"},"name":{"type":"null"},"ordinal":{"type":"null"},"role":{"const":"return","type":"string"},"size_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"storage":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]}},"required":["ordinal","name","data_type","size_bytes","storage","confidence","evidence","decompiler_artifacts","role"],"type":"object"},"signature_source":{"minLength":1,"type":"string"}},"required":["available","provenance","signature_source","calling_convention","return_type","parameters","parameters_truncated","jump_tables","jump_tables_truncated","pseudocode","decompiler_artifacts","limitations"],"type":"object"}]},"procedure":{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["address","name"],"type":"object"},"residual_unknowns":{"items":{"minLength":1,"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"substeps":{"items":{"additionalProperties":false,"properties":{"observations":{"items":{"minLength":1,"type":"string"},"type":"array"},"operation":{"enum":["analyze_function","project_native_api_boundary","preserve_residual_unknowns"],"type":"string"},"status":{"enum":["completed","unsupported"],"type":"string"}},"required":["operation","status","observations"],"type":"object"},"maxItems":3,"minItems":3,"type":"array"},"unsupported_branches":{"items":{"minLength":1,"type":"string"},"type":"array"}},"required":["schema_version","procedure","boundary","substeps","unsupported_branches","residual_unknowns"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Native Api"},{"analysisOperation":"trace_feature","annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Trace a bounded literal feature query through matching strings and procedures, xrefs, and truthful containing-procedure resolution. Returns the operation budget, truncation, and residual unknowns; unknown_registry_approved: true records them durably without inferring reference kinds.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"case_sensitive":false,"limit":20,"max_operations":20,"query":"license"}],"properties":{"case_sensitive":{"default":false,"description":"Whether text matching distinguishes uppercase and lowercase.","type":"boolean"},"limit":{"default":20,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"max_operations":{"default":20,"description":"Maximum permitted operations for this operation.","maximum":100,"minimum":1,"type":"integer"},"query":{"description":"Non-empty feature or text query to investigate.","minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residuals durably","type":"boolean"}},"required":["query"],"type":"object"},"kind":"enhanced","name":"trace_feature","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"matches":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"type":{"enum":["string","procedure"],"type":"string"},"value":{"type":"string"}},"required":["type","address","value"],"type":"object"},"type":"array"},"operation_budget":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"operations_used":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"query":{"type":"string"},"references":{"items":{"additionalProperties":false,"properties":{"containing_procedure":{"oneOf":[{"additionalProperties":false,"properties":{"found":{"const":true,"type":"boolean"},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"query_address":{"type":"string"}},"required":["query_address","found","procedure"],"type":"object"},{"additionalProperties":false,"properties":{"found":{"const":false,"type":"boolean"},"procedure":{"type":"null"},"query_address":{"type":"string"},"reason":{"enum":["outside_segments","not_in_procedure"],"type":"string"}},"required":["query_address","found","procedure","reason"],"type":"object"}]},"source_address":{"type":"string"},"target_address":{"type":"string"}},"required":["target_address","source_address","containing_procedure"],"type":"object"},"type":"array"},"residual_unknowns":{"items":{"type":"string"},"type":"array"},"search_mode":{"const":"literal","type":"string"},"truncated":{"type":"boolean"}},"required":["query","search_mode","operations_used","operation_budget","matches","references","truncated","residual_unknowns"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Trace Feature"},{"analysisOperation":"find_code_for_string","annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Resolve one literal string query to bounded analyzed string entries, xrefs, and truthful containing-procedure candidates. Returns an Evidence ID, exact operation budget, truncation, and residual unknowns; it never infers reference kinds or runtime reachability.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"case_sensitive":false,"limit":20,"max_operations":20,"query":"authorization failed"}],"properties":{"case_sensitive":{"default":false,"description":"Whether text matching distinguishes uppercase and lowercase.","type":"boolean"},"limit":{"default":20,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"max_operations":{"default":20,"description":"Maximum permitted operations for this operation.","maximum":100,"minimum":1,"type":"integer"},"query":{"description":"Non-empty feature or text query to investigate.","minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residuals durably","type":"boolean"}},"required":["query"],"type":"object"},"kind":"enhanced","name":"find_code_for_string","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"matches":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"type":{"enum":["string","procedure"],"type":"string"},"value":{"type":"string"}},"required":["type","address","value"],"type":"object"},"type":"array"},"operation_budget":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"operations_used":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"query":{"type":"string"},"references":{"items":{"additionalProperties":false,"properties":{"containing_procedure":{"oneOf":[{"additionalProperties":false,"properties":{"found":{"const":true,"type":"boolean"},"procedure":{"additionalProperties":false,"properties":{"address":{"type":"string"},"classification":{"anyOf":[{"additionalProperties":false,"properties":{"external":{"type":"boolean"},"provenance":{"minLength":1,"type":"string"},"thunk":{"type":"boolean"},"thunk_target":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["external","thunk","thunk_target","provenance"],"type":"object"},{"type":"null"}],"default":null},"name":{"type":"string"}},"required":["address","name","classification"],"type":"object"},"query_address":{"type":"string"}},"required":["query_address","found","procedure"],"type":"object"},{"additionalProperties":false,"properties":{"found":{"const":false,"type":"boolean"},"procedure":{"type":"null"},"query_address":{"type":"string"},"reason":{"enum":["outside_segments","not_in_procedure"],"type":"string"}},"required":["query_address","found","procedure","reason"],"type":"object"}]},"source_address":{"type":"string"},"target_address":{"type":"string"}},"required":["target_address","source_address","containing_procedure"],"type":"object"},"type":"array"},"residual_unknowns":{"items":{"type":"string"},"type":"array"},"search_mode":{"const":"literal","type":"string"},"truncated":{"type":"boolean"}},"required":["query","search_mode","operations_used","operation_budget","matches","references","truncated","residual_unknowns"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Find Code For String"},{"analysisOperation":"trace_call_path","annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Trace a deterministic bounded caller or callee path from one exact procedure address, optionally stopping at a goal. Returns visited nodes, direct-call edges, one shortest traversal path, failures, frontier, consumed limits, an Evidence ID, and explicit residual unknowns without claiming unresolved indirect calls are absent.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"direction":"forward","goal":"0x1100","max_depth":5,"max_nodes":100,"max_operations":100,"start":"0x1000"}],"properties":{"direction":{"default":"forward","description":"Direction in which to traverse or compare relationships.","enum":["forward","backward"],"type":"string"},"goal":{"description":"An optional provider-normalized destination address","type":"string"},"max_depth":{"default":5,"description":"Maximum permitted depth for this operation.","maximum":10,"minimum":1,"type":"integer"},"max_nodes":{"default":100,"description":"Maximum permitted nodes for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_operations":{"default":100,"description":"Maximum permitted operations for this operation.","maximum":500,"minimum":1,"type":"integer"},"start":{"description":"A provider-normalized procedure address","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residuals durably","type":"boolean"}},"required":["start"],"type":"object"},"kind":"enhanced","name":"trace_call_path","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"direction":{"enum":["forward","backward"],"type":"string"},"edges":{"items":{"additionalProperties":false,"properties":{"discovery_depth":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"source_address":{"type":"string"},"target_address":{"type":"string"}},"required":["source_address","target_address","discovery_depth"],"type":"object"},"type":"array"},"failures":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"error":{"oneOf":[{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"invalid_request","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"unreadable_output","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"capability_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"provider_timeout","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cancelled","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_integrity_mismatch","type":"string"},"details":{"additionalProperties":false,"properties":{"calculated_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"declared_sha256":{"anyOf":[{"type":"string"},{"type":"null"}]},"logical_path":{"type":"string"},"unpacked":{"type":"boolean"}},"required":["logical_path","declared_sha256","calculated_sha256","unpacked"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation","details"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"artifact_operation_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"evidence_integrity_mismatch","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"truncated","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"permission_required","type":"string"},"details":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"ceiling":{"anyOf":[{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"},{"type":"null"}]},"missing":{"additionalProperties":false,"properties":{"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"const":true,"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"type":"object"},"requested":{"additionalProperties":false,"properties":{"capability":{"type":"string"},"environment_names":{"items":{"type":"string"},"type":"array"},"executables":{"items":{"type":"string"},"type":"array"},"mount":{"type":"boolean"},"network":{"enum":["none","loopback","external"],"type":"string"},"origins":{"items":{"type":"string"},"type":"array"},"roots":{"items":{"type":"string"},"type":"array"}},"required":["capability","roots","executables","environment_names","network","mount"],"type":"object"}},"required":["capability","requested","missing","ceiling"],"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"process_capture_failed","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"cleanup_incomplete","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"revision_conflict","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"outside_approved_root","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"configuration_invalid","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"target_unavailable","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"execution_failure","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"category":{"enum":["invalid_input","permission_required","unsupported_provider","integrity_mismatch","truncated","cancelled","timeout","unavailable","execution_failure"],"type":"string"},"code":{"const":"plan_stale","type":"string"},"details":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"message":{"minLength":1,"type":"string"},"remediation":{"additionalProperties":false,"properties":{"action":{"minLength":1,"type":"string"},"elicitation_supported":{"type":"boolean"},"restart_required":{"type":"boolean"}},"required":["action","restart_required"],"type":"object"},"retryable":{"type":"boolean"}},"required":["code","category","message","retryable","remediation"],"type":"object"}]}},"required":["address","error"],"type":"object"},"type":"array"},"frontier":{"items":{"type":"string"},"type":"array"},"goal":{"anyOf":[{"type":"string"},{"type":"null"}]},"goal_status":{"enum":["not_requested","reached","not_reached"],"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_depth":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_nodes":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_operations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"nodes_visited":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"operations_used":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["max_depth","max_nodes","max_operations","nodes_visited","operations_used"],"type":"object"},"nodes":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"depth":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["address","depth"],"type":"object"},"type":"array"},"residual_unknowns":{"items":{"type":"string"},"type":"array"},"start":{"type":"string"},"traversal_path":{"items":{"type":"string"},"type":"array"},"truncated":{"type":"boolean"}},"required":["start","goal","direction","goal_status","nodes","edges","traversal_path","failures","frontier","limits","truncated","residual_unknowns","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Trace Call Path"},{"analysisOperation":"inspect_macho","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Inspect Mach-O slices, load commands, imports, exports, dependencies, build metadata, segments, sections, permissions, and exact command provenance without launching Hopper.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{},"type":"object"},"kind":"native-provider","name":"inspect_macho","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"architectures":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"alignment":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"cpu_subtype":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpu_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"name":{"type":"string"},"size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["name","cpu_type","cpu_subtype","file_offset","size","alignment"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"build_metadata":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"minimum_os":{"anyOf":[{"type":"string"},{"type":"null"}]},"platform":{"anyOf":[{"type":"string"},{"type":"null"}]},"sdk":{"anyOf":[{"type":"string"},{"type":"null"}]},"tools":{"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"version":{"type":"string"}},"required":["name","version"],"type":"object"},"type":"array"}},"required":["platform","minimum_os","sdk","tools"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"dependencies":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"compatibility_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"current_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"type":"string"},"path":{"type":"string"}},"required":["path","kind","current_version","compatibility_version"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"endian":{"anyOf":[{"enum":["little","big"],"type":"string"},{"type":"null"}]},"entrypoints":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"file_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["file_offset"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"exports":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"pattern":"^0x[a-fA-F0-9]+$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"reexport":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"weak":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["name","address","weak","reexport","source"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"file_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"flags":{"items":{"type":"string"},"type":"array"},"format":{"const":"mach-o","type":"string"},"imports":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"pattern":"^0x[a-fA-F0-9]+$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"reexport":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"source":{"anyOf":[{"type":"string"},{"type":"null"}]},"weak":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["name","address","weak","reexport","source"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"load_commands":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"fields":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}]},"propertyNames":{"type":"string"},"type":"object"},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"type":"string"}},"required":["index","kind","file_offset","fields"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"provenance":{"items":{"additionalProperties":false,"properties":{"command":{"items":{"type":"string"},"type":"array"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","signal"],"type":"object"},"stderr_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stderr_truncated":{"type":"boolean"},"stdout_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stdout_truncated":{"type":"boolean"},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","command","tool_version","version_reason","executable_sha256","exit","stdout_bytes","stderr_bytes","stdout_truncated","stderr_truncated"],"type":"object"},"type":"array"},"segments":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"file_size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"initial_permissions":{"additionalProperties":false,"properties":{"execute":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"raw":{"anyOf":[{"type":"string"},{"type":"null"}]},"read":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"write":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["read","write","execute","raw"],"type":"object"},"maximum_permissions":{"additionalProperties":false,"properties":{"execute":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"raw":{"anyOf":[{"type":"string"},{"type":"null"}]},"read":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"write":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["read","write","execute","raw"],"type":"object"},"name":{"type":"string"},"sections":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"pattern":"^0x[a-fA-F0-9]+$","type":"string"},{"type":"null"}]},"alignment":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"flags":{"items":{"type":"string"},"type":"array"},"name":{"type":"string"},"segment":{"type":"string"},"size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["segment","name","address","size","file_offset","alignment","flags"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"vm_address":{"anyOf":[{"pattern":"^0x[a-fA-F0-9]+$","type":"string"},{"type":"null"}]},"vm_size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["name","vm_address","vm_size","file_offset","file_size","maximum_permissions","initial_permissions","sections"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"uuid":{"anyOf":[{"type":"string"},{"type":"null"}]},"word_size":{"anyOf":[{"anyOf":[{"const":32,"type":"number"},{"const":64,"type":"number"}]},{"type":"null"}]}},"required":["format","endian","word_size","file_type","flags","uuid","entrypoints","architectures","build_metadata","load_commands","dependencies","imports","exports","segments","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Macho"},{"analysisOperation":"inspect_signature","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Inspect the active artifact\'s code-signing identity, hashes, authorities, requirements, entitlements, hardened-runtime state, and bounded command provenance.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{},"type":"object"},"kind":"native-provider","name":"inspect_signature","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"authorities":{"items":{"type":"string"},"type":"array"},"cdhashes":{"items":{"type":"string"},"type":"array"},"designated_requirement":{"anyOf":[{"type":"string"},{"type":"null"}]},"entitlements":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"format":{"anyOf":[{"type":"string"},{"type":"null"}]},"hardened_runtime":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"hash_algorithms":{"items":{"type":"string"},"type":"array"},"identifier":{"anyOf":[{"type":"string"},{"type":"null"}]},"limitations":{"items":{"type":"string"},"type":"array"},"provenance":{"items":{"additionalProperties":false,"properties":{"command":{"items":{"type":"string"},"type":"array"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","signal"],"type":"object"},"stderr_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stderr_truncated":{"type":"boolean"},"stdout_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stdout_truncated":{"type":"boolean"},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","command","tool_version","version_reason","executable_sha256","exit","stdout_bytes","stderr_bytes","stdout_truncated","stderr_truncated"],"type":"object"},"type":"array"},"signed":{"type":"boolean"},"team_identifier":{"anyOf":[{"type":"string"},{"type":"null"}]},"timestamp":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["signed","identifier","team_identifier","format","cdhashes","hash_algorithms","authorities","designated_requirement","entitlements","timestamp","hardened_runtime","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Signature"},{"analysisOperation":"inspect_plist","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Parse a plist at a bounded relative path beneath the active artifact container. Symlink and traversal escapes are rejected; output is normalized JSON rather than plutil text.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"relative_path":"Contents/Info.plist"}],"properties":{"relative_path":{"default":"Contents/Info.plist","description":"Local filesystem path for relative.","maxLength":1024,"minLength":1,"type":"string"}},"type":"object"},"kind":"native-provider","name":"inspect_plist","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"bundle":{"additionalProperties":false,"properties":{"executable":{"anyOf":[{"type":"string"},{"type":"null"}]},"identifier":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"short_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["identifier","executable","name","version","short_version"],"type":"object"},"format":{"enum":["xml","binary","json","unknown"],"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"provenance":{"items":{"additionalProperties":false,"properties":{"command":{"items":{"type":"string"},"type":"array"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","signal"],"type":"object"},"stderr_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stderr_truncated":{"type":"boolean"},"stdout_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stdout_truncated":{"type":"boolean"},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","command","tool_version","version_reason","executable_sha256","exit","stdout_bytes","stderr_bytes","stdout_truncated","stderr_truncated"],"type":"object"},"type":"array"},"source_path":{"type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["format","value","bundle","source_path","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Plist"},{"analysisOperation":"list_architectures","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"List thin or universal Mach-O slices with offsets, sizes, alignment, explicit coverage, and bounded native-tool provenance.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{}],"properties":{},"type":"object"},"kind":"native-provider","name":"list_architectures","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"architectures":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"alignment":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"cpu_subtype":{"anyOf":[{"type":"string"},{"type":"null"}]},"cpu_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"name":{"type":"string"},"size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["name","cpu_type","cpu_subtype","file_offset","size","alignment"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["items","total","exhaustive","limitations"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"provenance":{"items":{"additionalProperties":false,"properties":{"command":{"items":{"type":"string"},"type":"array"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","signal"],"type":"object"},"stderr_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stderr_truncated":{"type":"boolean"},"stdout_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stdout_truncated":{"type":"boolean"},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","command","tool_version","version_reason","executable_sha256","exit","stdout_bytes","stderr_bytes","stdout_truncated","stderr_truncated"],"type":"object"},"type":"array"}},"required":["architectures","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Architectures"},{"analysisOperation":"demangle_swift","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Demangle an ordered bounded batch of Swift symbols without requiring Hopper. Each input returns demangled, unchanged, or invalid status.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"symbols":["$s4Test3fooyyF"]}],"properties":{"symbols":{"description":"Ordered bounded Swift symbols to demangle.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":500,"minItems":1,"type":"array"}},"required":["symbols"],"type":"object"},"kind":"native-provider","name":"demangle_swift","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"limitations":{"items":{"type":"string"},"type":"array"},"provenance":{"items":{"additionalProperties":false,"properties":{"command":{"items":{"type":"string"},"type":"array"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"signal":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["code","signal"],"type":"object"},"stderr_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stderr_truncated":{"type":"boolean"},"stdout_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stdout_truncated":{"type":"boolean"},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"version_reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","command","tool_version","version_reason","executable_sha256","exit","stdout_bytes","stderr_bytes","stdout_truncated","stderr_truncated"],"type":"object"},"type":"array"},"symbols":{"items":{"additionalProperties":false,"properties":{"input":{"type":"string"},"output":{"type":"string"},"status":{"enum":["demangled","unchanged","invalid"],"type":"string"}},"required":["input","output","status"],"type":"object"},"type":"array"}},"required":["symbols","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Demangle Swift"},{"analysisOperation":"inventory_artifact","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"After open_binary binds a local archive, application package, or other artifact—or when one is already active—inventory it as a deterministic, content-addressed artifact graph. This tool accepts no path; in a target-free session open the target first. Returns bounded node and edge pages without extracting or mounting by default.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"properties":{"edge_limit":{"default":100,"description":"Maximum number of edge entries to return.","maximum":500,"minimum":1,"type":"integer"},"edge_offset":{"default":0,"description":"Zero-based index of the first edge to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"integrity_continue_approved":{"const":false,"default":false,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"fail","default":"fail","description":"Value for integrity policy.","type":"string"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"native_mount_approved":{"default":false,"description":"Explicit operator approval for native mount.","type":"boolean"},"node_limit":{"default":100,"description":"Maximum number of node entries to return.","maximum":500,"minimum":1,"type":"integer"},"node_offset":{"default":0,"description":"Zero-based index of the first node to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"occurrence_limit":{"default":100,"description":"Maximum number of occurrence entries to return.","maximum":500,"minimum":1,"type":"integer"},"occurrence_offset":{"default":0,"description":"Zero-based index of the first occurrence to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},{"properties":{"edge_limit":{"default":100,"description":"Maximum number of edge entries to return.","maximum":500,"minimum":1,"type":"integer"},"edge_offset":{"default":0,"description":"Zero-based index of the first edge to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"integrity_continue_approved":{"const":true,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"record-and-continue","description":"Value for integrity policy.","type":"string"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"native_mount_approved":{"default":false,"description":"Explicit operator approval for native mount.","type":"boolean"},"node_limit":{"default":100,"description":"Maximum number of node entries to return.","maximum":500,"minimum":1,"type":"integer"},"node_offset":{"default":0,"description":"Zero-based index of the first node to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"occurrence_limit":{"default":100,"description":"Maximum number of occurrence entries to return.","maximum":500,"minimum":1,"type":"integer"},"occurrence_offset":{"default":0,"description":"Zero-based index of the first occurrence to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["integrity_policy","integrity_continue_approved"],"type":"object"}],"examples":[{}],"type":"object"},"kind":"artifact-provider","name":"inventory_artifact","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"edges":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"child_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"edge_id":{"pattern":"^edge_[a-f0-9]{64}$","type":"string"},"logical_path":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]},"occurrence_id":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"ordinal":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parent_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"producer":{"anyOf":[{"additionalProperties":false,"properties":{"arguments":{"items":{"maxLength":4096,"type":"string"},"maxItems":1024,"type":"array"},"effects":{"items":{"enum":["read","write","mount"],"type":"string"},"maxItems":3,"type":"array"},"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"exit_code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","arguments","tool_version","executable_sha256","exit_code","effects"],"type":"object"},{"type":"null"}]},"relation":{"enum":["contains","extracts","slice-of","embeds","loads","maps-source","derived-from"],"type":"string"}},"required":["edge_id","ordinal","parent_artifact_id","child_artifact_id","relation","occurrence_id","logical_path","producer"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"integrity_contradictions":{"default":[],"items":{"additionalProperties":false,"properties":{"contradiction_id":{"pattern":"^ic_[a-f0-9]{64}$","type":"string"},"declared_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"entry_kind":{"enum":["file","slice"],"type":"string"},"limitations":{"items":{"type":"string"},"minItems":1,"type":"array"},"logical_path":{"maxLength":4096,"minLength":1,"type":"string"},"observed_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"occurrence_id":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"parent_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"provenance":{"const":"container-integrity-metadata-versus-observed-bytes","type":"string"},"trust":{"const":"observed-untrusted","type":"string"},"unpacked":{"type":"boolean"}},"required":["contradiction_id","occurrence_id","parent_artifact_id","logical_path","declared_sha256","observed_sha256","entry_kind","unpacked","trust","provenance","limitations"],"type":"object"},"maxItems":100,"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_compression_ratio":{"maximum":100000,"minimum":1,"type":"number"},"max_depth":{"maximum":100,"minimum":0,"type":"integer"},"max_entries":{"maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_path_bytes":{"maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["max_entries","max_total_bytes","max_entry_bytes","max_compression_ratio","max_depth","max_path_bytes"],"type":"object"},"manifest":{"additionalProperties":false,"properties":{"edge_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"occurrence_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"root_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"root_format":{"enum":["dmg","zip","pkg","asar","javascript-bundle","source-map","mach-o-universal","mach-o","elf","pe","hopper","analysis-database","ipa","apk","msix","appx","plist","entitlements","directory","file","unknown"],"type":"string"},"root_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","manifest_id","root_artifact_id","root_sha256","root_format","graph_sha256","node_count","occurrence_count","edge_count"],"type":"object"},"nodes":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"content_state":{"enum":["materialized","embedded","virtual"],"type":"string"},"executable":{"type":"boolean"},"format":{"enum":["dmg","zip","pkg","asar","javascript-bundle","source-map","mach-o-universal","mach-o","elf","pe","hopper","analysis-database","ipa","apk","msix","appx","plist","entitlements","directory","file","unknown"],"type":"string"},"kind":{"enum":["container","executable","dynamic-library","framework","native-addon","javascript","source-map","plist","entitlements","resource","universal-slice","package-metadata","unknown"],"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"media_type":{"anyOf":[{"minLength":1,"type":"string"},{"type":"null"}]},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["artifact_id","kind","format","sha256","size","media_type","architecture","executable","content_state","limitations"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"occurrences":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"artifact_id":{"anyOf":[{"pattern":"^art_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"compressed_size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"declared_size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"encrypted":{"type":"boolean"},"entry_kind":{"enum":["file","directory","symlink","slice"],"type":"string"},"executable":{"type":"boolean"},"hash_status":{"enum":["verified","mismatched","not-hashed-limit","unavailable"],"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"logical_path":{"maxLength":4096,"minLength":1,"type":"string"},"occurrence_id":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"parent_occurrence_id":{"anyOf":[{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"source_location":{"anyOf":[{"additionalProperties":false,"properties":{"length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["offset","length"],"type":"object"},{"type":"null"}]}},"required":["occurrence_id","artifact_id","parent_occurrence_id","logical_path","entry_kind","declared_size","compressed_size","executable","encrypted","hash_status","source_location","limitations"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"provenance":{"items":{"additionalProperties":false,"properties":{"arguments":{"items":{"maxLength":4096,"type":"string"},"maxItems":1024,"type":"array"},"effects":{"items":{"enum":["read","write","mount"],"type":"string"},"maxItems":3,"type":"array"},"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"exit_code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","arguments","tool_version","executable_sha256","exit_code","effects"],"type":"object"},"maxItems":256,"type":"array"}},"required":["manifest","nodes","occurrences","edges","limits","provenance","integrity_contradictions","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inventory Artifact"},{"analysisOperation":"inspect_artifact","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"After open_binary binds a local archive, application package, or other artifact—or when one is already active—inspect it through one bounded, cancellable inventory substep. This tool accepts no path; in a target-free session open the target first. Returns the full substep Evidence and its ID, observations, derived relationships, hypotheses, contradictions, unexplored branches, limitations, and format-specific next probes. Any substep failure fails the whole call.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"properties":{"integrity_continue_approved":{"const":false,"default":false,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"fail","default":"fail","description":"Value for integrity policy.","type":"string"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_hypotheses":{"default":20,"description":"Maximum permitted hypotheses for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_next_probes":{"default":20,"description":"Maximum permitted next probes for this operation.","maximum":50,"minimum":1,"type":"integer"},"max_observations":{"default":100,"description":"Maximum permitted observations for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_relationships":{"default":100,"description":"Maximum permitted relationships for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_substeps":{"const":1,"default":1,"description":"Maximum permitted substeps for this operation.","type":"number"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_unexplored_branches":{"default":20,"description":"Maximum permitted unexplored branches for this operation.","maximum":100,"minimum":1,"type":"integer"},"native_mount_approved":{"default":false,"description":"Explicit operator approval for native mount.","type":"boolean"}},"type":"object"},{"properties":{"integrity_continue_approved":{"const":true,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"record-and-continue","description":"Value for integrity policy.","type":"string"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_hypotheses":{"default":20,"description":"Maximum permitted hypotheses for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_next_probes":{"default":20,"description":"Maximum permitted next probes for this operation.","maximum":50,"minimum":1,"type":"integer"},"max_observations":{"default":100,"description":"Maximum permitted observations for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_relationships":{"default":100,"description":"Maximum permitted relationships for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_substeps":{"const":1,"default":1,"description":"Maximum permitted substeps for this operation.","type":"number"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_unexplored_branches":{"default":20,"description":"Maximum permitted unexplored branches for this operation.","maximum":100,"minimum":1,"type":"integer"},"native_mount_approved":{"default":false,"description":"Explicit operator approval for native mount.","type":"boolean"}},"required":["integrity_policy","integrity_continue_approved"],"type":"object"}],"examples":[{}],"type":"object"},"kind":"artifact-provider","name":"inspect_artifact","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"contradictions":{"items":{"additionalProperties":false,"properties":{"contradiction_id":{"pattern":"^aic_[a-f0-9]{64}$","type":"string"},"declared_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"observed_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"occurrence_id":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"statement":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["contradiction_id","statement","occurrence_id","declared_sha256","observed_sha256","evidence_id"],"type":"object"},"maxItems":100,"type":"array"},"coverage":{"additionalProperties":false,"properties":{"hypotheses_omitted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"hypotheses_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"next_probes_omitted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"next_probes_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observations_omitted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observations_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relationships_omitted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relationships_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete-within-substeps","partial","truncated"],"type":"string"},"substeps_completed":{"const":1,"type":"number"},"unexplored_branches_omitted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unexplored_branches_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","substeps_completed","observations_retained","observations_omitted","relationships_retained","relationships_omitted","hypotheses_retained","hypotheses_omitted","unexplored_branches_retained","unexplored_branches_omitted","next_probes_retained","next_probes_omitted"],"type":"object"},"derived_relationships":{"items":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"logical_path":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]},"occurrence_id":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"relation":{"enum":["contains","extracts","slice-of","embeds","loads","maps-source","derived-from"],"type":"string"},"relationship_id":{"pattern":"^air_[a-f0-9]{64}$","type":"string"},"source_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"target_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"}},"required":["relationship_id","relation","source_artifact_id","target_artifact_id","occurrence_id","logical_path","evidence_id"],"type":"object"},"maxItems":500,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1,"minItems":1,"type":"array"},"hypotheses":{"items":{"additionalProperties":false,"properties":{"basis_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":8,"minItems":1,"type":"array"},"confidence":{"enum":["medium","low"],"type":"string"},"hypothesis_id":{"pattern":"^aih_[a-f0-9]{64}$","type":"string"},"limitation":{"maxLength":4096,"minLength":1,"type":"string"},"statement":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["hypothesis_id","statement","confidence","basis_evidence_ids","limitation"],"type":"object"},"maxItems":100,"type":"array"},"inspection_id":{"pattern":"^ai_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"next_probes":{"items":{"additionalProperties":false,"properties":{"authority":{"enum":["artifact-bytes","managed-static-analysis","native-analysis-provider","ast-static-analysis"],"type":"string"},"operation":{"maxLength":128,"minLength":1,"type":"string"},"rationale":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["operation","rationale","authority"],"type":"object"},"maxItems":50,"type":"array"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"enum":["root-manifest","artifact","occurrence","integrity"],"type":"string"},"observation_id":{"pattern":"^aio_[a-f0-9]{64}$","type":"string"},"subject":{"maxLength":4096,"minLength":1,"type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["observation_id","kind","subject","value","evidence_id"],"type":"object"},"maxItems":500,"type":"array"},"schema_version":{"const":1,"type":"number"},"subject":{"additionalProperties":false,"properties":{"manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"root_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"root_format":{"maxLength":128,"minLength":1,"type":"string"},"root_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["manifest_id","root_artifact_id","root_sha256","root_format"],"type":"object"},"substeps":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"operation":{"const":"inventory_artifact","type":"string"},"status":{"const":"completed","type":"string"},"substep_id":{"pattern":"^ais_[a-f0-9]{64}$","type":"string"}},"required":["substep_id","operation","status","evidence_id","evidence"],"type":"object"},"maxItems":1,"minItems":1,"type":"array"},"unexplored_branches":{"items":{"additionalProperties":false,"properties":{"branch_id":{"pattern":"^aib_[a-f0-9]{64}$","type":"string"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"next_probe":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"enum":["artifact-bytes","managed-static-analysis","native-analysis-provider","ast-static-analysis"],"type":"string"},"operation":{"maxLength":128,"minLength":1,"type":"string"},"rationale":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["operation","rationale","authority"],"type":"object"},{"type":"null"}]},"reason":{"enum":["page-limit","format-specific-analysis-required","unknown-format"],"type":"string"}},"required":["branch_id","reason","detail","next_probe","evidence_id"],"type":"object"},"maxItems":100,"type":"array"}},"required":["schema_version","inspection_id","subject","substeps","observations","derived_relationships","hypotheses","contradictions","unexplored_branches","next_probes","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Artifact"},{"analysisOperation":"extract_artifact","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Extract selected graph artifacts beneath an explicit output root. Requires approval, rejects traversal and symlink escapes, never overwrites, enforces bomb limits, and verifies cleanup.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"approved":true,"occurrence_ids":["occ_0000000000000000000000000000000000000000000000000000000000000000"],"output_root":"/tmp/rea-extracted"}],"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"occurrence_ids":{"description":"Value for occurrence ids.","items":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"maxItems":500,"minItems":1,"type":"array"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"output_root":{"description":"Approved canonical filesystem output root.","maxLength":4096,"minLength":1,"type":"string"}},"required":["approved","output_root","occurrence_ids"],"type":"object"},"kind":"artifact-provider","name":"extract_artifact","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"artifacts":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"bytes_written":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"created":{"type":"boolean"},"relative_path":{"maxLength":4096,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["artifact_id","relative_path","sha256","bytes_written","created"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"cleanup":{"additionalProperties":false,"properties":{"attempted":{"type":"boolean"},"residual_paths":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":500,"type":"array"},"verified":{"type":"boolean"}},"required":["attempted","verified","residual_paths"],"type":"object"},"containment_verified":{"type":"boolean"},"extraction_manifest":{"additionalProperties":false,"properties":{"extraction_id":{"pattern":"^aex_[a-f0-9]{64}$","type":"string"},"files_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"output_root_alias":{"const":"$OUTPUT_ROOT","type":"string"},"schema_version":{"const":1,"type":"number"},"selected_occurrence_ids":{"items":{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},"maxItems":500,"minItems":1,"type":"array"},"source_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"}},"required":["schema_version","extraction_id","source_manifest_id","selected_occurrence_ids","files_sha256","output_root_alias"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_compression_ratio":{"maximum":100000,"minimum":1,"type":"number"},"max_depth":{"maximum":100,"minimum":0,"type":"integer"},"max_entries":{"maximum":1000000,"minimum":1,"type":"integer"},"max_entry_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_path_bytes":{"maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["max_entries","max_total_bytes","max_entry_bytes","max_compression_ratio","max_depth","max_path_bytes"],"type":"object"},"manifest":{"additionalProperties":false,"properties":{"edge_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"occurrence_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"root_artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"root_format":{"enum":["dmg","zip","pkg","asar","javascript-bundle","source-map","mach-o-universal","mach-o","elf","pe","hopper","analysis-database","ipa","apk","msix","appx","plist","entitlements","directory","file","unknown"],"type":"string"},"root_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","manifest_id","root_artifact_id","root_sha256","root_format","graph_sha256","node_count","occurrence_count","edge_count"],"type":"object"},"output_root":{"minLength":1,"type":"string"},"provenance":{"items":{"additionalProperties":false,"properties":{"arguments":{"items":{"maxLength":4096,"type":"string"},"maxItems":1024,"type":"array"},"effects":{"items":{"enum":["read","write","mount"],"type":"string"},"maxItems":3,"type":"array"},"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"exit_code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"tool":{"minLength":1,"type":"string"},"tool_version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["tool","arguments","tool_version","executable_sha256","exit_code","effects"],"type":"object"},"maxItems":256,"type":"array"}},"required":["manifest","extraction_manifest","output_root","artifacts","containment_verified","cleanup","limits","provenance","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Extract Artifact"},{"analysisOperation":"inspect_managed_artifact","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Open and classify an explicit managed PE/CLI path, or inspect the active managed target, then inventory exact assembly/module identity, target framework evidence, references, resources, and custom attributes without loading or executing target code. Returns bounded pages and explicit partial or malformed coverage.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"path":"/tmp/Example.dll"}],"properties":{"attribute_limit":{"default":100,"description":"Maximum number of attribute entries to return.","maximum":500,"minimum":1,"type":"integer"},"attribute_offset":{"default":0,"description":"Zero-based index of the first attribute to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"max_file_bytes":{"default":268435456,"description":"Maximum permitted file bytes for this operation.","maximum":1073741824,"minimum":4096,"type":"integer"},"max_heap_item_bytes":{"default":1048576,"description":"Maximum permitted heap item bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_metadata_bytes":{"default":67108864,"description":"Maximum permitted metadata bytes for this operation.","maximum":268435456,"minimum":256,"type":"integer"},"max_table_rows":{"default":100000,"description":"Maximum permitted table rows for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"path":{"description":"Managed PE/CLI path to open before inspection; omit only when a managed target is already active","minLength":1,"type":"string"},"reference_limit":{"default":100,"description":"Maximum number of reference entries to return.","maximum":500,"minimum":1,"type":"integer"},"reference_offset":{"default":0,"description":"Zero-based index of the first reference to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"resource_limit":{"default":100,"description":"Maximum number of resource entries to return.","maximum":500,"minimum":1,"type":"integer"},"resource_offset":{"default":0,"description":"Zero-based index of the first resource to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},"kind":"managed-provider","name":"inspect_managed_artifact","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"format":{"const":"pe","type":"string"},"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","sha256","byte_length","format"],"type":"object"},"assembly":{"anyOf":[{"additionalProperties":false,"properties":{"culture":{"anyOf":[{"type":"string"},{"type":"null"}]},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"hash_algorithm":{"maximum":4294967295,"minimum":0,"type":"integer"},"name":{"type":"string"},"public_key":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"enum":["none","public-key","public-key-token"],"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"token":{"anyOf":[{"pattern":"^[a-f0-9]{16}$","type":"string"},{"type":"null"}]}},"required":["kind","byte_length","sha256","token"],"type":"object"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"version":{"pattern":"^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+$","type":"string"}},"required":["name","version","culture","flags","hash_algorithm","public_key","token","row_offset"],"type":"object"},{"type":"null"}]},"attributes":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"constructor_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"decoded_fixed_string":{"anyOf":[{"type":"string"},{"type":"null"}]},"parent_token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"type_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"value_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"value_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["parent_token","constructor_token","type_name","value_length","value_sha256","decoded_fixed_string","token","row_offset"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"classification":{"additionalProperties":false,"properties":{"container":{"const":"pe","type":"string"},"evidence":{"items":{"additionalProperties":false,"properties":{"code":{"minLength":1,"type":"string"},"detail":{"minLength":1,"type":"string"},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["code","detail","file_offset"],"type":"object"},"type":"array"},"implementation":{"enum":["cil","cil-and-ready-to-run","cpp-cli-mixed","metadata-only","not-managed","unknown"],"type":"string"},"managed_architecture":{"enum":["anycpu","anycpu-prefer-32","x86","x86_64","arm","arm64","unknown"],"type":"string"},"runtime_family":{"enum":["dotnet-framework","modern-dotnet","unity-mono","mixed-clr-native","unknown"],"type":"string"},"status":{"enum":["managed","not-managed","malformed"],"type":"string"}},"required":["status","container","runtime_family","implementation","managed_architecture","evidence"],"type":"object"},"coverage":{"additionalProperties":false,"properties":{"issues":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["invalid-cli-header","invalid-directory","invalid-metadata-root","invalid-stream","missing-stream","invalid-tables","invalid-row","invalid-heap-index","invalid-string","invalid-blob","invalid-guid","invalid-resource","limit-exceeded"],"type":"string"},"detail":{"minLength":1,"type":"string"},"offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"scope":{"minLength":1,"type":"string"}},"required":["code","scope","offset","detail"],"type":"object"},"type":"array"},"state":{"enum":["complete","partial","unavailable"],"type":"string"}},"required":["state","issues"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"metadata":{"additionalProperties":false,"properties":{"status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"stream_names":{"items":{"type":"string"},"type":"array"},"table_row_counts":{"additionalProperties":{"maximum":4294967295,"minimum":0,"type":"integer"},"propertyNames":{"type":"string"},"type":"object"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["status","version","stream_names","table_row_counts"],"type":"object"},"module":{"anyOf":[{"additionalProperties":false,"properties":{"enc_base_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"enc_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"generation":{"maximum":65535,"minimum":0,"type":"integer"},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["name","generation","mvid","enc_id","enc_base_id","token","row_offset"],"type":"object"},{"type":"null"}]},"pe":{"additionalProperties":false,"properties":{"architecture":{"enum":["x86","x86_64","arm","arm64"],"type":"string"},"characteristics":{"maximum":65535,"minimum":0,"type":"integer"},"cli":{"anyOf":[{"additionalProperties":false,"properties":{"entry_point":{"additionalProperties":false,"properties":{"kind":{"enum":["metadata-token","native-rva","none"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","value"],"type":"object"},"flag_names":{"items":{"type":"string"},"type":"array"},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"header_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"header_size":{"maximum":9007199254740991,"minimum":72,"type":"integer"},"managed_native_header_rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"managed_native_header_size":{"maximum":4294967295,"minimum":0,"type":"integer"},"metadata_rva":{"maximum":4294967295,"minimum":1,"type":"integer"},"metadata_size":{"maximum":4294967295,"minimum":1,"type":"integer"},"ready_to_run_signature":{"type":"boolean"},"resources_rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"resources_size":{"maximum":4294967295,"minimum":0,"type":"integer"},"runtime_version":{"type":"string"},"strong_name_rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"strong_name_size":{"maximum":4294967295,"minimum":0,"type":"integer"}},"required":["header_offset","header_size","runtime_version","flags","flag_names","entry_point","metadata_rva","metadata_size","resources_rva","resources_size","strong_name_rva","strong_name_size","managed_native_header_rva","managed_native_header_size","ready_to_run_signature"],"type":"object"},{"type":"null"}]},"machine":{"maximum":65535,"minimum":0,"type":"integer"},"machine_hex":{"pattern":"^0x[0-9a-f]{4}$","type":"string"},"optional_header":{"enum":["pe32","pe32-plus"],"type":"string"},"section_count":{"maximum":96,"minimum":1,"type":"integer"}},"required":["machine","machine_hex","architecture","optional_header","section_count","characteristics","cli"],"type":"object"},"references":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"culture":{"anyOf":[{"type":"string"},{"type":"null"}]},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"hash_value_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"hash_value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"public_key_or_token":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"enum":["none","public-key","public-key-token"],"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"token":{"anyOf":[{"pattern":"^[a-f0-9]{16}$","type":"string"},{"type":"null"}]}},"required":["kind","byte_length","sha256","token"],"type":"object"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"version":{"pattern":"^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+$","type":"string"}},"required":["name","version","culture","flags","public_key_or_token","hash_value_sha256","hash_value_length","token","row_offset"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"resources":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"data_length":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"data_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"declared_offset":{"maximum":4294967295,"minimum":0,"type":"integer"},"embedded":{"type":"boolean"},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"implementation_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"visibility":{"enum":["public","private","unknown"],"type":"string"}},"required":["name","flags","visibility","implementation_token","embedded","declared_offset","data_length","data_sha256","token","row_offset"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"schema_version":{"const":1,"type":"number"},"target_frameworks":{"items":{"type":"string"},"type":"array"}},"required":["schema_version","artifact","pe","classification","metadata","module","assembly","target_frameworks","references","resources","attributes","coverage","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Managed Artifact"},{"analysisOperation":"inspect_managed_members","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Inspect bounded PE/CLI metadata members, signatures, raw CIL hashes, limited member-result-v1 decoded-instruction-tuple hashes, separately reported exception regions, call edges, and field-access anchors without loading or executing target code. Metadata tokens are reported as build-local coordinates bound to the artifact SHA-256 and MVID; the v1 tuple hash does not resolve them or fully commit control flow.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"edge_limit":100,"method_limit":25}],"properties":{"edge_limit":{"default":250,"description":"Maximum number of edge entries to return.","maximum":1000,"minimum":1,"type":"integer"},"edge_offset":{"default":0,"description":"Zero-based index of the first edge to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"field_limit":{"default":100,"description":"Maximum number of field entries to return.","maximum":500,"minimum":1,"type":"integer"},"field_offset":{"default":0,"description":"Zero-based index of the first field to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"instruction_anchor_limit":{"default":100,"description":"Maximum number of instruction anchor entries to return.","maximum":500,"minimum":0,"type":"integer"},"max_file_bytes":{"default":268435456,"description":"Maximum permitted file bytes for this operation.","maximum":1073741824,"minimum":4096,"type":"integer"},"max_heap_item_bytes":{"default":1048576,"description":"Maximum permitted heap item bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_metadata_bytes":{"default":67108864,"description":"Maximum permitted metadata bytes for this operation.","maximum":268435456,"minimum":256,"type":"integer"},"max_method_body_bytes":{"default":1048576,"description":"Maximum permitted method body bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_method_instructions":{"default":10000,"description":"Maximum permitted method instructions for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_table_rows":{"default":100000,"description":"Maximum permitted table rows for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"member_ref_limit":{"default":100,"description":"Maximum number of member ref entries to return.","maximum":500,"minimum":1,"type":"integer"},"member_ref_offset":{"default":0,"description":"Zero-based index of the first member ref to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"method_limit":{"default":100,"description":"Maximum number of method entries to return.","maximum":500,"minimum":1,"type":"integer"},"method_offset":{"default":0,"description":"Zero-based index of the first method to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"type_limit":{"default":100,"description":"Maximum number of type entries to return.","maximum":500,"minimum":1,"type":"integer"},"type_offset":{"default":0,"description":"Zero-based index of the first type to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},"kind":"managed-provider","name":"inspect_managed_members","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"format":{"const":"pe","type":"string"},"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","sha256","byte_length","format"],"type":"object"},"call_edges":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"caller":{"anyOf":[{"type":"string"},{"type":"null"}]},"caller_token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"opcode":{"type":"string"},"target_kind":{"enum":["method-def","member-ref","method-spec","unknown"],"type":"string"},"target_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"target_token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["caller_token","caller","opcode","target_token","target_kind","target_name"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"coverage":{"additionalProperties":false,"properties":{"issues":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["invalid-cli-header","invalid-directory","invalid-metadata-root","invalid-stream","missing-stream","invalid-tables","invalid-row","invalid-heap-index","invalid-string","invalid-blob","invalid-guid","invalid-resource","limit-exceeded"],"type":"string"},"detail":{"minLength":1,"type":"string"},"offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"scope":{"minLength":1,"type":"string"}},"required":["code","scope","offset","detail"],"type":"object"},"type":"array"},"state":{"enum":["complete","partial","unavailable"],"type":"string"}},"required":["state","issues"],"type":"object"},"field_accesses":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"field_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"field_token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"method":{"anyOf":[{"type":"string"},{"type":"null"}]},"method_token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"opcode":{"type":"string"}},"required":["method_token","method","opcode","field_token","field_name"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"fields":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"declaring_type_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"flags":{"maximum":65535,"minimum":0,"type":"integer"},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"signature":{"additionalProperties":false,"properties":{"calling_convention":{"anyOf":[{"type":"string"},{"type":"null"}]},"field_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"generic_parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"issue":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"enum":["method","field","unknown"],"type":"string"},"parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"parameter_types":{"items":{"type":"string"},"type":"array"},"parse_status":{"enum":["decoded","partial","unsupported","malformed"],"type":"string"},"raw_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"raw_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"return_type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["raw_length","raw_sha256","kind","parse_status","calling_convention","generic_parameter_count","parameter_count","return_type","parameter_types","field_type","issue"],"type":"object"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","declaring_type_token","declaring_type","name","flags","signature"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"identity_scope":{"additionalProperties":false,"properties":{"requires_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"requires_mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"token_identity":{"const":"build-local","type":"string"}},"required":["token_identity","requires_artifact_sha256","requires_mvid"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"member_refs":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"parent_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"signature":{"additionalProperties":false,"properties":{"calling_convention":{"anyOf":[{"type":"string"},{"type":"null"}]},"field_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"generic_parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"issue":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"enum":["method","field","unknown"],"type":"string"},"parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"parameter_types":{"items":{"type":"string"},"type":"array"},"parse_status":{"enum":["decoded","partial","unsupported","malformed"],"type":"string"},"raw_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"raw_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"return_type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["raw_length","raw_sha256","kind","parse_status","calling_convention","generic_parameter_count","parameter_count","return_type","parameter_types","field_type","issue"],"type":"object"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","parent_token","name","signature"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"metadata":{"additionalProperties":false,"properties":{"status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"table_row_counts":{"additionalProperties":{"maximum":4294967295,"minimum":0,"type":"integer"},"propertyNames":{"type":"string"},"type":"object"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["status","version","table_row_counts"],"type":"object"},"methods":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"properties":{"anchors":{"items":{"additionalProperties":false,"properties":{"il_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"opcode":{"minLength":1,"type":"string"},"operand":{"anyOf":[{"type":"string"},{"type":"null"}]},"operand_kind":{"enum":["none","branch","constant","field","method","signature","string","switch","token","type","variable","unknown"],"type":"string"}},"required":["il_offset","opcode","operand_kind","operand"],"type":"object"},"type":"array"},"decoded_instruction_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exception_regions":{"items":{"additionalProperties":false,"properties":{"class_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"filter_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"handler_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"handler_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"try_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"try_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["flags","try_offset","try_length","handler_offset","handler_length","class_token","filter_offset"],"type":"object"},"type":"array"},"file_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"header_format":{"enum":["tiny","fat","none","unknown"],"type":"string"},"il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"SHA-256 of exactly the raw il_size CIL bytes; excludes the method header, locals signature, alignment, and extra sections"},"il_size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"init_locals":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"instruction_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"issue":{"anyOf":[{"type":"string"},{"type":"null"}]},"local_var_sig_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"max_stack":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Member-result-v1 SHA-256 of UTF-8 JSON [opcode, operand_kind, operand] tuples for a complete decode; retains build-local tokens, omits switch targets, and excludes headers, locals, and exception regions"},"opcode_counts":{"additionalProperties":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"propertyNames":{"type":"string"},"type":"object"},"rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"status":{"enum":["present","partial","absent","malformed","too-large"],"type":"string"},"truncated_instructions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","header_format","rva","file_offset","max_stack","init_locals","local_var_sig_token","il_size","il_sha256","normalized_il_sha256","instruction_count","decoded_instruction_count","truncated_instructions","opcode_counts","anchors","exception_regions","issue"],"type":"object"},"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"declaring_type_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"flags":{"maximum":65535,"minimum":0,"type":"integer"},"impl_flags":{"maximum":65535,"minimum":0,"type":"integer"},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"signature":{"additionalProperties":false,"properties":{"calling_convention":{"anyOf":[{"type":"string"},{"type":"null"}]},"field_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"generic_parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"issue":{"anyOf":[{"type":"string"},{"type":"null"}]},"kind":{"enum":["method","field","unknown"],"type":"string"},"parameter_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"parameter_types":{"items":{"type":"string"},"type":"array"},"parse_status":{"enum":["decoded","partial","unsupported","malformed"],"type":"string"},"raw_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"raw_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"return_type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["raw_length","raw_sha256","kind","parse_status","calling_convention","generic_parameter_count","parameter_count","return_type","parameter_types","field_type","issue"],"type":"object"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","declaring_type_token","declaring_type","name","rva","impl_flags","flags","signature","body"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"module":{"anyOf":[{"additionalProperties":false,"properties":{"enc_base_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"enc_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"generation":{"maximum":65535,"minimum":0,"type":"integer"},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["name","generation","mvid","enc_id","enc_base_id","token","row_offset"],"type":"object"},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"types":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"extends_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"field_list":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"first_row":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"last_row":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["first_row","last_row","count"],"type":"object"},"flags":{"maximum":4294967295,"minimum":0,"type":"integer"},"full_name":{"type":"string"},"method_list":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"first_row":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"last_row":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["first_row","last_row","count"],"type":"object"},"name":{"type":"string"},"namespace":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","namespace","name","full_name","flags","extends_token","field_list","method_list"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"}},"required":["schema_version","artifact","module","metadata","identity_scope","types","fields","methods","member_refs","call_edges","field_accesses","coverage","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Managed Members"},{"analysisOperation":"inspect_managed_native_boundaries","annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Inspect PE/CLI ModuleRef, ImplMap/PInvoke declarations, CLI native-header indicators, and non-IL method implementation flags without loading or executing target code. Results are managed declarations and degraded native-boundary observations, not verified native exports or addresses.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"implementation_limit":50,"import_limit":50}],"properties":{"implementation_limit":{"default":100,"description":"Maximum number of implementation entries to return.","maximum":500,"minimum":1,"type":"integer"},"implementation_offset":{"default":0,"description":"Zero-based index of the first implementation to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"import_limit":{"default":100,"description":"Maximum number of import entries to return.","maximum":500,"minimum":1,"type":"integer"},"import_offset":{"default":0,"description":"Zero-based index of the first import to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"max_file_bytes":{"default":268435456,"description":"Maximum permitted file bytes for this operation.","maximum":1073741824,"minimum":4096,"type":"integer"},"max_heap_item_bytes":{"default":1048576,"description":"Maximum permitted heap item bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_metadata_bytes":{"default":67108864,"description":"Maximum permitted metadata bytes for this operation.","maximum":268435456,"minimum":256,"type":"integer"},"max_table_rows":{"default":100000,"description":"Maximum permitted table rows for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"module_ref_limit":{"default":100,"description":"Maximum number of module ref entries to return.","maximum":500,"minimum":1,"type":"integer"},"module_ref_offset":{"default":0,"description":"Zero-based index of the first module ref to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"type":"object"},"kind":"managed-provider","name":"inspect_managed_native_boundaries","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"format":{"const":"pe","type":"string"},"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","sha256","byte_length","format"],"type":"object"},"cli_native":{"additionalProperties":false,"properties":{"il_only":{"type":"boolean"},"managed_native_header_rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"managed_native_header_size":{"maximum":4294967295,"minimum":0,"type":"integer"},"native_entry_point":{"type":"boolean"},"ready_to_run_signature":{"type":"boolean"},"requires_32bit":{"type":"boolean"},"strong_name_signed":{"type":"boolean"}},"required":["il_only","requires_32bit","strong_name_signed","native_entry_point","ready_to_run_signature","managed_native_header_rva","managed_native_header_size"],"type":"object"},"coverage":{"additionalProperties":false,"properties":{"issues":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["invalid-cli-header","invalid-directory","invalid-metadata-root","invalid-stream","missing-stream","invalid-tables","invalid-row","invalid-heap-index","invalid-string","invalid-blob","invalid-guid","invalid-resource","limit-exceeded"],"type":"string"},"detail":{"minLength":1,"type":"string"},"offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"scope":{"minLength":1,"type":"string"}},"required":["code","scope","offset","detail"],"type":"object"},"type":"array"},"state":{"enum":["complete","partial","unavailable"],"type":"string"}},"required":["state","issues"],"type":"object"},"identity_scope":{"additionalProperties":false,"properties":{"requires_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"requires_mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"token_identity":{"const":"build-local","type":"string"}},"required":["token_identity","requires_artifact_sha256","requires_mvid"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"metadata":{"additionalProperties":false,"properties":{"status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"table_row_counts":{"additionalProperties":{"maximum":4294967295,"minimum":0,"type":"integer"},"propertyNames":{"type":"string"},"type":"object"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["status","version","table_row_counts"],"type":"object"},"module":{"anyOf":[{"additionalProperties":false,"properties":{"enc_base_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"enc_id":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"generation":{"maximum":65535,"minimum":0,"type":"integer"},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["name","generation","mvid","enc_id","enc_base_id","token","row_offset"],"type":"object"},{"type":"null"}]},"module_refs":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","name"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"native_implementations":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"body_interpretation":{"enum":["managed-cil","native-or-runtime","not-file-backed","unknown"],"type":"string"},"boundary_kind":{"enum":["pinvoke","native-body","runtime-provided","unmanaged-method","mixed-or-unknown"],"type":"string"},"code_type":{"enum":["il","native","optil","runtime","unknown"],"type":"string"},"flags":{"maximum":65535,"minimum":0,"type":"integer"},"impl_flags":{"maximum":65535,"minimum":0,"type":"integer"},"managed_kind":{"enum":["managed","unmanaged","unknown"],"type":"string"},"name":{"type":"string"},"pinvoke_declared":{"type":"boolean"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"rva":{"maximum":4294967295,"minimum":0,"type":"integer"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","row_offset","name","rva","flags","impl_flags","code_type","managed_kind","pinvoke_declared","boundary_kind","body_interpretation"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"pinvoke_imports":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"additionalProperties":false,"properties":{"best_fit":{"enum":["assembly-default","enabled","disabled","unknown"],"type":"string"},"call_convention":{"enum":["not-specified","winapi","cdecl","stdcall","thiscall","fastcall","unknown"],"type":"string"},"char_set":{"enum":["not-specified","ansi","unicode","auto","unknown"],"type":"string"},"import_name":{"type":"string"},"import_scope_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"import_scope_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"mapping_flags":{"maximum":65535,"minimum":0,"type":"integer"},"mapping_flags_hex":{"pattern":"^0x[0-9a-f]{4}$","type":"string"},"member_kind":{"enum":["method","field","unknown"],"type":"string"},"member_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"no_mangle":{"type":"boolean"},"row_offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"supports_last_error":{"type":"boolean"},"throw_on_unmappable_char":{"enum":["assembly-default","enabled","disabled","unknown"],"type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"verification":{"const":"managed-declaration-only","type":"string"}},"required":["token","row_offset","mapping_flags","mapping_flags_hex","member_token","member_kind","member_name","import_name","import_scope_token","import_scope_name","no_mangle","char_set","call_convention","supports_last_error","best_fit","throw_on_unmappable_char","verification"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","returned","dropped","complete"],"type":"object"},"schema_version":{"const":1,"type":"number"},"summary":{"additionalProperties":false,"properties":{"mixed_mode_or_native_header":{"type":"boolean"},"module_ref_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"native_implementation_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pinvoke_import_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ready_to_run":{"type":"boolean"}},"required":["module_ref_count","pinvoke_import_count","native_implementation_count","ready_to_run","mixed_mode_or_native_header"],"type":"object"}},"required":["schema_version","artifact","module","metadata","identity_scope","cli_native","module_refs","pinvoke_imports","native_implementations","summary","coverage","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Managed Native Boundaries"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two authenticated inspect_managed_members Evidence records using unique-only decoded-CIL-v1/signature and structural method-shape tiers. Names are reported as observations but are not used as a matching basis; metadata tokens remain build-local coordinates bound to each artifact SHA-256 and MVID, and the v1 tuple digest does not itself remap them.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"left_evidence_id":"ev_45a77d52db5dc9beaf59a9b8ee062c945fda709bd0d3a91fa4e972d85a848324","limits":{"max_candidates":25,"max_field_matches":50,"max_method_matches":100},"right_evidence_id":"ev_8d6450759b2bb695b3b41b0db8d7ddc4a3e9f64a52b93194bc59d2b564c2285c"}],"properties":{"left_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"limits":{"additionalProperties":false,"default":{"max_candidates":50,"max_field_matches":5000,"max_method_matches":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidates":{"default":50,"description":"Maximum permitted candidates for this operation.","maximum":500,"minimum":1,"type":"integer"},"max_field_matches":{"default":5000,"description":"Maximum permitted field matches for this operation.","maximum":50000,"minimum":0,"type":"integer"},"max_method_matches":{"default":10000,"description":"Maximum permitted method matches for this operation.","maximum":50000,"minimum":1,"type":"integer"}},"type":"object"},"right_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_evidence_id","right_evidence_id"],"type":"object"},"kind":"application","name":"compare_managed_members","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"algorithm":{"additionalProperties":false,"properties":{"name":{"const":"rea-managed-member-comparison","type":"string"},"name_matching":{"const":"not-used","type":"string"},"token_identity":{"const":"build-local","type":"string"},"version":{"const":1,"type":"number"}},"required":["name","version","token_identity","name_matching"],"type":"object"},"comparison_id":{"pattern":"^mmc_[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"left_status":{"enum":["complete","partial","unavailable"],"type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_methods":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"right_status":{"enum":["complete","partial","unavailable"],"type":"string"},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"}},"required":["status","left_status","right_status","omitted_methods","omitted_fields","omitted_candidates"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"fields":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"item_id":{"pattern":"^mmc_field_[a-f0-9]{64}$","type":"string"},"left":{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"enum":["exact-il-signature","structural-method-shape","field-signature"],"type":"string"},"candidate_left_tokens":{"prefixItems":[],"type":"array"},"candidate_right_tokens":{"prefixItems":[],"type":"array"},"confidence":{"enum":["exact","high"],"type":"string"},"status":{"const":"matched","type":"string"}},"required":["status","basis","confidence","candidate_left_tokens","candidate_right_tokens"],"type":"object"},"right":{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256"],"type":"object"},"status":{"enum":["unchanged","changed"],"type":"string"}},"required":["evidence_links","limitations","item_id","status","left","right","match"],"type":"object"},{"additionalProperties":false,"properties":{"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"item_id":{"pattern":"^mmc_field_[a-f0-9]{64}$","type":"string"},"left":{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"const":"none","type":"string"},"candidate_left_tokens":{"prefixItems":[],"type":"array"},"candidate_right_tokens":{"prefixItems":[],"type":"array"},"confidence":{"const":"unknown","type":"string"},"status":{"const":"unmatched","type":"string"}},"required":["status","basis","confidence","candidate_left_tokens","candidate_right_tokens"],"type":"object"},"right":{"type":"null"},"status":{"enum":["removed","unknown"],"type":"string"}},"required":["evidence_links","limitations","item_id","status","left","right","match"],"type":"object"},{"additionalProperties":false,"properties":{"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"item_id":{"pattern":"^mmc_field_[a-f0-9]{64}$","type":"string"},"left":{"type":"null"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"const":"none","type":"string"},"candidate_left_tokens":{"prefixItems":[],"type":"array"},"candidate_right_tokens":{"prefixItems":[],"type":"array"},"confidence":{"const":"unknown","type":"string"},"status":{"const":"unmatched","type":"string"}},"required":["status","basis","confidence","candidate_left_tokens","candidate_right_tokens"],"type":"object"},"right":{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256"],"type":"object"},"status":{"enum":["added","unknown"],"type":"string"}},"required":["evidence_links","limitations","item_id","status","left","right","match"],"type":"object"},{"additionalProperties":false,"properties":{"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"item_id":{"pattern":"^mmc_field_[a-f0-9]{64}$","type":"string"},"left":{"type":"null"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"enum":["exact-il-signature","structural-method-shape","field-signature"],"type":"string"},"candidate_left_tokens":{"items":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"maxItems":500,"minItems":1,"type":"array"},"candidate_right_tokens":{"items":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"maxItems":500,"minItems":1,"type":"array"},"confidence":{"const":"unknown","type":"string"},"status":{"const":"ambiguous","type":"string"}},"required":["status","basis","confidence","candidate_left_tokens","candidate_right_tokens"],"type":"object"},"right":{"type":"null"},"status":{"const":"unknown","type":"string"}},"required":["evidence_links","limitations","item_id","status","left","right","match"],"type":"object"}]},"maxItems":50000,"type":"array"},"left":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"fields_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"metadata_status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"methods_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]}},"required":["evidence_id","artifact_sha256","mvid","module_name","metadata_status","methods_total","fields_total"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"matching":{"additionalProperties":false,"properties":{"ambiguous":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exact_il_signature":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"field_signature":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"structural_method_shape":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unmatched":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["exact_il_signature","structural_method_shape","field_signature","ambiguous","unmatched"],"type":"object"},"methods":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"dimensions":{"items":{"enum":["signature","cil","opcode-shape","call-shape","field-shape","exception-shape","availability"],"type":"string"},"maxItems":7,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"item_id":{"pattern":"^mmc_method_[a-f0-9]{64}$","type":"string"},"left":{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256","normalized_il_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"enum":["exact-il-signature","structural-method-shape","field-signature"],"type":"string"},"candidate_left_tokens":{"prefixItems":[],"type":"array"},"candidate_right_tokens":{"prefixItems":[],"type":"array"},"confidence":{"enum":["exact","high"],"type":"string"},"status":{"const":"matched","type":"string"}},"required":["status","basis","confidence","candidate_left_tokens","candidate_right_tokens"],"type":"object"},"right":{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256","normalized_il_sha256"],"type":"object"},"status":{"enum":["unchanged","changed"],"type":"string"}},"required":["evidence_links","limitations","item_id","dimensions","status","left","right","match"],"type":"object"},{"additionalProperties":false,"properties":{"dimensions":{"items":{"enum":["signature","cil","opcode-shape","call-shape","field-shape","exception-shape","availability"],"type":"string"},"maxItems":7,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"item_id":{"pattern":"^mmc_method_[a-f0-9]{64}$","type":"string"},"left":{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256","normalized_il_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"const":"none","type":"string"},"candidate_left_tokens":{"prefixItems":[],"type":"array"},"candidate_right_tokens":{"prefixItems":[],"type":"array"},"confidence":{"const":"unknown","type":"string"},"status":{"const":"unmatched","type":"string"}},"required":["status","basis","confidence","candidate_left_tokens","candidate_right_tokens"],"type":"object"},"right":{"type":"null"},"status":{"enum":["removed","unknown"],"type":"string"}},"required":["evidence_links","limitations","item_id","dimensions","status","left","right","match"],"type":"object"},{"additionalProperties":false,"properties":{"dimensions":{"items":{"enum":["signature","cil","opcode-shape","call-shape","field-shape","exception-shape","availability"],"type":"string"},"maxItems":7,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"item_id":{"pattern":"^mmc_method_[a-f0-9]{64}$","type":"string"},"left":{"type":"null"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"const":"none","type":"string"},"candidate_left_tokens":{"prefixItems":[],"type":"array"},"candidate_right_tokens":{"prefixItems":[],"type":"array"},"confidence":{"const":"unknown","type":"string"},"status":{"const":"unmatched","type":"string"}},"required":["status","basis","confidence","candidate_left_tokens","candidate_right_tokens"],"type":"object"},"right":{"additionalProperties":false,"properties":{"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256","normalized_il_sha256"],"type":"object"},"status":{"enum":["added","unknown"],"type":"string"}},"required":["evidence_links","limitations","item_id","dimensions","status","left","right","match"],"type":"object"},{"additionalProperties":false,"properties":{"dimensions":{"items":{"enum":["signature","cil","opcode-shape","call-shape","field-shape","exception-shape","availability"],"type":"string"},"maxItems":7,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"item_id":{"pattern":"^mmc_method_[a-f0-9]{64}$","type":"string"},"left":{"type":"null"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"enum":["exact-il-signature","structural-method-shape","field-signature"],"type":"string"},"candidate_left_tokens":{"items":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"maxItems":500,"minItems":1,"type":"array"},"candidate_right_tokens":{"items":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"maxItems":500,"minItems":1,"type":"array"},"confidence":{"const":"unknown","type":"string"},"status":{"const":"ambiguous","type":"string"}},"required":["status","basis","confidence","candidate_left_tokens","candidate_right_tokens"],"type":"object"},"right":{"type":"null"},"status":{"const":"unknown","type":"string"}},"required":["evidence_links","limitations","item_id","dimensions","status","left","right","match"],"type":"object"}]},"maxItems":50000,"type":"array"},"right":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"fields_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"metadata_status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"methods_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]}},"required":["evidence_id","artifact_sha256","mvid","module_name","metadata_status","methods_total","fields_total"],"type":"object"},"schema_version":{"const":1,"type":"number"},"summary":{"additionalProperties":false,"properties":{"added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unchanged","changed","added","removed","unknown"],"type":"object"}},"required":["schema_version","comparison_id","algorithm","left","right","summary","matching","methods","fields","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Compare Managed Members"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Verify managed P/Invoke/native-boundary declarations against authenticated native export or function Evidence without executing managed code or translating managed metadata tokens into native addresses. The workflow preserves declaration-only, verified, inferred, contradicted, and unresolved states.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"limits":{"max_candidates_per_import":25,"max_native_observations":20},"managed_boundaries_evidence_id":"ev_5e142d4464b916bcff63fb0835c686152b5b0473a9f1d5f5060d329b1b29739d","native_observation_evidence_ids":["ev_74758ad108882d5752dae4f8fa030c1ed6c7dd62857cb9d2d3a7ce931b52ee7c"]}],"properties":{"limits":{"additionalProperties":false,"default":{"max_candidates_per_import":25,"max_native_observations":20},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidates_per_import":{"default":25,"description":"Maximum permitted candidates per import for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_native_observations":{"default":20,"description":"Maximum permitted native observations for this operation.","maximum":50,"minimum":1,"type":"integer"}},"type":"object"},"managed_boundaries_evidence_id":{"description":"Session-owned inspect_managed_native_boundaries Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"native_observation_evidence_ids":{"description":"Unique session-owned native observation Evidence IDs","items":{"description":"Session-owned inspect_macho or analyze_function Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":50,"minItems":1,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["managed_boundaries_evidence_id","native_observation_evidence_ids"],"type":"object"},"kind":"application","name":"verify_managed_native_boundaries","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"algorithm":{"additionalProperties":false,"properties":{"name":{"const":"rea-managed-native-verification","type":"string"},"token_identity":{"const":"build-local","type":"string"},"token_to_address_mapping":{"const":"not-inferred","type":"string"},"version":{"const":1,"type":"number"}},"required":["name","version","token_identity","token_to_address_mapping"],"type":"object"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"omitted_candidates":{"const":0,"type":"number"},"omitted_native_observations":{"const":0,"type":"number"},"status":{"const":"complete-within-inputs","type":"string"}},"required":["status","omitted_native_observations","omitted_candidates"],"type":"object"},{"additionalProperties":false,"properties":{"omitted_candidates":{"const":0,"type":"number"},"omitted_native_observations":{"const":0,"type":"number"},"status":{"const":"partial","type":"string"}},"required":["status","omitted_native_observations","omitted_candidates"],"type":"object"},{"anyOf":[{"additionalProperties":false,"properties":{"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_native_observations":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"status":{"const":"truncated","type":"string"}},"required":["status","omitted_native_observations","omitted_candidates"],"type":"object"},{"additionalProperties":false,"properties":{"omitted_candidates":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"omitted_native_observations":{"const":0,"type":"number"},"status":{"const":"truncated","type":"string"}},"required":["status","omitted_native_observations","omitted_candidates"],"type":"object"}]}]},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":51,"minItems":2,"type":"array"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"managed_boundary":{"additionalProperties":false,"properties":{"artifact_path":{"minLength":1,"type":"string"},"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"coverage_state":{"enum":["complete","partial","unavailable"],"type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"metadata_status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]},"native_implementations_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pinvoke_imports_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["evidence_id","artifact_sha256","artifact_path","mvid","metadata_status","pinvoke_imports_total","native_implementations_total","coverage_state"],"type":"object"},"native_implementations":{"additionalProperties":false,"properties":{"reason":{"maxLength":4096,"minLength":1,"type":"string"},"unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unresolved","reason"],"type":"object"},"native_observations":{"additionalProperties":false,"properties":{"accepted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symbols":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"truncated":{"type":"boolean"},"unsupported":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","accepted","unsupported","symbols","truncated"],"type":"object"},"pinvoke_imports":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"basis":{"enum":["exact-export-name","exact-function-name"],"type":"string"},"candidates":{"items":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"module_path":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"minLength":1,"type":"string"},"operation":{"minLength":1,"type":"string"},"source":{"enum":["macho-export","function-dossier"],"type":"string"}},"required":["evidence_id","operation","name","address","module_name","module_path","source"],"type":"object"},"maxItems":100,"prefixItems":[{"additionalProperties":false,"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"module_path":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"minLength":1,"type":"string"},"operation":{"minLength":1,"type":"string"},"source":{"enum":["macho-export","function-dossier"],"type":"string"}},"required":["evidence_id","operation","name","address","module_name","module_path","source"],"type":"object"}],"type":"array"},"confidence":{"const":"observed","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":51,"minItems":1,"type":"array"},"item_id":{"pattern":"^mnv_pinvoke_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"managed":{"additionalProperties":false,"properties":{"call_convention":{"enum":["not-specified","winapi","cdecl","stdcall","thiscall","fastcall","unknown"],"type":"string"},"char_set":{"enum":["not-specified","ansi","unicode","auto","unknown"],"type":"string"},"declaration_verification":{"const":"managed-declaration-only","type":"string"},"import_name":{"minLength":1,"type":"string"},"import_scope_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"no_mangle":{"type":"boolean"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","member_token","member_name","import_name","import_scope_name","no_mangle","char_set","call_convention","declaration_verification"],"type":"object"},"matched_native":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"module_path":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"minLength":1,"type":"string"},"operation":{"minLength":1,"type":"string"},"source":{"enum":["macho-export","function-dossier"],"type":"string"}},"required":["evidence_id","operation","name","address","module_name","module_path","source"],"type":"object"},"status":{"const":"verified","type":"string"}},"required":["item_id","managed","evidence_links","limitations","status","basis","confidence","matched_native","candidates"],"type":"object"},{"additionalProperties":false,"properties":{"basis":{"const":"decorated-name-candidate","type":"string"},"candidates":{"items":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"module_path":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"minLength":1,"type":"string"},"operation":{"minLength":1,"type":"string"},"source":{"enum":["macho-export","function-dossier"],"type":"string"}},"required":["evidence_id","operation","name","address","module_name","module_path","source"],"type":"object"},"maxItems":100,"prefixItems":[{"additionalProperties":false,"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"module_path":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"minLength":1,"type":"string"},"operation":{"minLength":1,"type":"string"},"source":{"enum":["macho-export","function-dossier"],"type":"string"}},"required":["evidence_id","operation","name","address","module_name","module_path","source"],"type":"object"}],"type":"array"},"confidence":{"const":"inferred","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":51,"minItems":1,"type":"array"},"item_id":{"pattern":"^mnv_pinvoke_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"managed":{"additionalProperties":false,"properties":{"call_convention":{"enum":["not-specified","winapi","cdecl","stdcall","thiscall","fastcall","unknown"],"type":"string"},"char_set":{"enum":["not-specified","ansi","unicode","auto","unknown"],"type":"string"},"declaration_verification":{"const":"managed-declaration-only","type":"string"},"import_name":{"minLength":1,"type":"string"},"import_scope_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"no_mangle":{"type":"boolean"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","member_token","member_name","import_name","import_scope_name","no_mangle","char_set","call_convention","declaration_verification"],"type":"object"},"matched_native":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"module_path":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"minLength":1,"type":"string"},"operation":{"minLength":1,"type":"string"},"source":{"enum":["macho-export","function-dossier"],"type":"string"}},"required":["evidence_id","operation","name","address","module_name","module_path","source"],"type":"object"},"status":{"const":"inferred","type":"string"}},"required":["item_id","managed","evidence_links","limitations","status","basis","confidence","matched_native","candidates"],"type":"object"},{"additionalProperties":false,"properties":{"basis":{"enum":["no-native-candidate","unsupported-native-evidence"],"type":"string"},"candidates":{"prefixItems":[],"type":"array"},"confidence":{"const":"unknown","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":51,"minItems":1,"type":"array"},"item_id":{"pattern":"^mnv_pinvoke_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"managed":{"additionalProperties":false,"properties":{"call_convention":{"enum":["not-specified","winapi","cdecl","stdcall","thiscall","fastcall","unknown"],"type":"string"},"char_set":{"enum":["not-specified","ansi","unicode","auto","unknown"],"type":"string"},"declaration_verification":{"const":"managed-declaration-only","type":"string"},"import_name":{"minLength":1,"type":"string"},"import_scope_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"no_mangle":{"type":"boolean"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","member_token","member_name","import_name","import_scope_name","no_mangle","char_set","call_convention","declaration_verification"],"type":"object"},"matched_native":{"type":"null"},"status":{"const":"unresolved","type":"string"}},"required":["item_id","managed","evidence_links","limitations","status","basis","confidence","matched_native","candidates"],"type":"object"},{"additionalProperties":false,"properties":{"basis":{"const":"module-mismatch","type":"string"},"candidates":{"items":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"module_path":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"minLength":1,"type":"string"},"operation":{"minLength":1,"type":"string"},"source":{"enum":["macho-export","function-dossier"],"type":"string"}},"required":["evidence_id","operation","name","address","module_name","module_path","source"],"type":"object"},"maxItems":100,"prefixItems":[{"additionalProperties":false,"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"module_path":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"minLength":1,"type":"string"},"operation":{"minLength":1,"type":"string"},"source":{"enum":["macho-export","function-dossier"],"type":"string"}},"required":["evidence_id","operation","name","address","module_name","module_path","source"],"type":"object"}],"type":"array"},"confidence":{"const":"unknown","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":51,"minItems":1,"type":"array"},"item_id":{"pattern":"^mnv_pinvoke_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"managed":{"additionalProperties":false,"properties":{"call_convention":{"enum":["not-specified","winapi","cdecl","stdcall","thiscall","fastcall","unknown"],"type":"string"},"char_set":{"enum":["not-specified","ansi","unicode","auto","unknown"],"type":"string"},"declaration_verification":{"const":"managed-declaration-only","type":"string"},"import_name":{"minLength":1,"type":"string"},"import_scope_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"member_token":{"anyOf":[{"pattern":"^0x[0-9a-f]{8}$","type":"string"},{"type":"null"}]},"no_mangle":{"type":"boolean"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","member_token","member_name","import_name","import_scope_name","no_mangle","char_set","call_convention","declaration_verification"],"type":"object"},"matched_native":{"additionalProperties":false,"properties":{"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"module_path":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"minLength":1,"type":"string"},"operation":{"minLength":1,"type":"string"},"source":{"enum":["macho-export","function-dossier"],"type":"string"}},"required":["evidence_id","operation","name","address","module_name","module_path","source"],"type":"object"},"status":{"const":"contradicted","type":"string"}},"required":["item_id","managed","evidence_links","limitations","status","basis","confidence","matched_native","candidates"],"type":"object"}]},"maxItems":50000,"type":"array"},"schema_version":{"const":1,"type":"number"},"summary":{"additionalProperties":false,"properties":{"contradicted":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"inferred":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"native_body_unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"verified":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["verified","inferred","unresolved","contradicted","native_body_unresolved"],"type":"object"},"verification_id":{"pattern":"^mnv_[a-f0-9]{64}$","type":"string"}},"required":["schema_version","verification_id","algorithm","managed_boundary","native_observations","summary","pinvoke_imports","native_implementations","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Verify Managed Native Boundaries"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Import decompiler-produced managed reconstruction against authenticated inspect_managed_members Evidence. The workflow locks each method to artifact SHA-256, MVID, metadata token, signature hash, and the limited member-result-v1 decoded-IL tuple hash, records the decompiler identity and options, and marks C# or pseudocode as analyst inference rather than canonical byte observation.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"decompiler":{"executable_sha256":null,"family":"ilspy","name":"ilspycmd","options":["--disable-updatecheck","--type","Example.Program"],"version":"9.1.0.7988"},"methods":[{"normalized_il_sha256":"5555555555555555555555555555555555555555555555555555555555555555","reconstruction":{"end_line":1,"kind":"decompiled-csharp","language":"csharp","source_path":"/examples/Example.Program.cs","start_line":1,"text":"internal static void Main() { }"},"signature_sha256":"3333333333333333333333333333333333333333333333333333333333333333","token":"0x06000001"}],"notes":["Synthetic example only; decompiler output is imported as inference."],"static_members_evidence_id":"ev_4871226711dcb86d73cebb54bc54c6e1d6cf227c94c7cf67685dc5d805511493"}],"properties":{"decompiler":{"additionalProperties":false,"description":"Value for decompiler.","properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of executable."},"family":{"description":"Value for family.","enum":["ilspy","dnspy","dnlib","mono-cecil","other"],"type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":512,"minLength":1,"type":"string"},"options":{"default":[],"description":"Value for options.","items":{"maxLength":512,"type":"string"},"maxItems":50,"type":"array"},"version":{"anyOf":[{"maxLength":128,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["name","version","family","executable_sha256"],"type":"object"},"methods":{"description":"Value for methods.","items":{"additionalProperties":false,"properties":{"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of normalized il."},"reconstruction":{"additionalProperties":false,"description":"Value for reconstruction.","properties":{"end_line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}],"description":"Value for end line."},"kind":{"description":"Value for kind.","enum":["decompiled-csharp","decompiled-il","semantic-pseudocode"],"type":"string"},"language":{"description":"Value for language.","enum":["csharp","il","pseudocode"],"type":"string"},"source_path":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Local filesystem path for source."},"start_line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}],"description":"Value for start line."},"text":{"description":"Value for text.","maxLength":65536,"minLength":1,"type":"string"},"text_sha256":{"description":"Exact SHA-256 digest of text.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["kind","language","text"],"type":"object"},"signature_sha256":{"description":"Exact SHA-256 digest of signature.","pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"description":"Value for token.","pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","signature_sha256","normalized_il_sha256","reconstruction"],"type":"object"},"maxItems":50,"minItems":1,"type":"array"},"notes":{"default":[],"description":"Value for notes.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"static_members_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["decompiler","methods","static_members_evidence_id"],"type":"object"},"kind":"application","name":"import_managed_reconstruction","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"decompiler":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"family":{"enum":["ilspy","dnspy","dnlib","mono-cecil","other"],"type":"string"},"name":{"maxLength":512,"minLength":1,"type":"string"},"options":{"default":[],"items":{"maxLength":512,"type":"string"},"maxItems":50,"type":"array"},"options_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"anyOf":[{"maxLength":128,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["name","version","family","executable_sha256","options","options_sha256"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1,"minItems":1,"type":"array"},"executed":{"const":false,"type":"boolean"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"methods":{"items":{"additionalProperties":false,"properties":{"body_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"il_size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"name":{"type":"string"},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"reconstruction":{"additionalProperties":false,"properties":{"end_line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"kind":{"enum":["decompiled-csharp","decompiled-il","semantic-pseudocode"],"type":"string"},"language":{"enum":["csharp","il","pseudocode"],"type":"string"},"line_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"source_path":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]},"start_line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"text":{"maxLength":65536,"minLength":1,"type":"string"},"text_length":{"maximum":65536,"minimum":1,"type":"integer"},"text_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["kind","language","text","text_sha256","text_length","line_count","source_path","start_line","end_line"],"type":"object"},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"},"validation":{"additionalProperties":false,"properties":{"canonical_observation":{"const":false,"type":"boolean"},"confidence_floor":{"const":"inference","type":"string"},"exact_build_required":{"const":true,"type":"boolean"},"matched_static_member":{"const":true,"type":"boolean"}},"required":["matched_static_member","exact_build_required","canonical_observation","confidence_floor"],"type":"object"}},"required":["token","declaring_type","name","signature_sha256","normalized_il_sha256","body_sha256","il_size","reconstruction","validation"],"type":"object"},"maxItems":50,"minItems":1,"type":"array"},"notes":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"phase":{"const":"reconstruction-import","type":"string"},"reconstruction_id":{"pattern":"^mre_[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"},"static_observation":{"additionalProperties":false,"properties":{"artifact_path":{"minLength":1,"type":"string"},"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"metadata_status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]}},"required":["evidence_id","artifact_sha256","artifact_path","byte_length","module_name","mvid","metadata_status"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"decompiled_csharp_methods":{"maximum":50,"minimum":0,"type":"integer"},"decompiled_il_methods":{"maximum":50,"minimum":0,"type":"integer"},"imported_methods":{"maximum":50,"minimum":1,"type":"integer"},"pseudocode_methods":{"maximum":50,"minimum":0,"type":"integer"},"total_text_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["imported_methods","decompiled_csharp_methods","decompiled_il_methods","pseudocode_methods","total_text_bytes"],"type":"object"}},"required":["schema_version","reconstruction_id","phase","executed","static_observation","decompiler","summary","methods","notes","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Import Managed Reconstruction"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Prepare a separately authorized managed runtime-correlation admission plan from authenticated inspect_managed_members Evidence. The operation is default-disabled, requires the managed_runtime permission ceiling and grant, locks the exact artifact SHA-256, MVID, method signature, and limited member-result-v1 decoded-IL tuple hash, distinguishes attach/load/debugger/reflection/instrumentation effects, and records that no target code was executed.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"bounds":{"allow_network":false,"allow_ui":false,"max_output_bytes":65536,"max_threads":32,"timeout_ms":5000},"host":{"architecture":"x86_64","clr_family":"dotnet","os":"linux"},"method":{"normalized_il_sha256":"5555555555555555555555555555555555555555555555555555555555555555","signature_sha256":"3333333333333333333333333333333333333333333333333333333333333333","token":"0x06000001"},"requested_effect":"attach","static_members_evidence_id":"ev_4871226711dcb86d73cebb54bc54c6e1d6cf227c94c7cf67685dc5d805511493"}],"properties":{"bounds":{"additionalProperties":false,"default":{"allow_network":false,"allow_ui":false,"max_output_bytes":65536,"max_threads":32,"timeout_ms":5000},"description":"Value for bounds.","properties":{"allow_network":{"const":false,"default":false,"description":"Value for allow network.","type":"boolean"},"allow_ui":{"const":false,"default":false,"description":"Value for allow ui.","type":"boolean"},"max_output_bytes":{"default":65536,"description":"Maximum permitted output bytes for this operation.","maximum":1048576,"minimum":0,"type":"integer"},"max_threads":{"default":32,"description":"Maximum permitted threads for this operation.","maximum":256,"minimum":1,"type":"integer"},"timeout_ms":{"default":5000,"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"type":"object"},"host":{"additionalProperties":false,"description":"Value for host.","properties":{"architecture":{"description":"Value for architecture.","enum":["x86","x86_64","arm","arm64"],"type":"string"},"clr_family":{"description":"Value for clr family.","enum":["dotnet","dotnet-framework","mono","unknown"],"type":"string"},"os":{"description":"Value for os.","enum":["linux","macos","windows"],"type":"string"}},"required":["os","clr_family","architecture"],"type":"object"},"method":{"additionalProperties":false,"description":"Value for method.","properties":{"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of normalized il."},"signature_sha256":{"description":"Exact SHA-256 digest of signature.","pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"description":"Value for token.","pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","signature_sha256","normalized_il_sha256"],"type":"object"},"requested_effect":{"description":"Value for requested effect.","enum":["attach","load","debugger","reflection","instrumentation"],"type":"string"},"static_members_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["method","requested_effect","host","static_members_evidence_id"],"type":"object"},"kind":"application","name":"plan_managed_runtime_correlation","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"authority_model":{"additionalProperties":false,"properties":{"capability":{"const":"managed_runtime","type":"string"},"default_enabled":{"const":false,"type":"boolean"},"per_call_approval_required":{"const":true,"type":"boolean"},"permission_grant_id":{"minLength":1,"type":"string"}},"required":["capability","permission_grant_id","default_enabled","per_call_approval_required"],"type":"object"},"bounds":{"additionalProperties":false,"properties":{"allow_network":{"const":false,"default":false,"type":"boolean"},"allow_ui":{"const":false,"default":false,"type":"boolean"},"max_output_bytes":{"default":65536,"maximum":1048576,"minimum":0,"type":"integer"},"max_threads":{"default":32,"maximum":256,"minimum":1,"type":"integer"},"timeout_ms":{"default":5000,"maximum":60000,"minimum":1,"type":"integer"}},"required":["timeout_ms","max_threads","max_output_bytes","allow_network","allow_ui"],"type":"object"},"correlation_id":{"pattern":"^mrc_[a-f0-9]{64}$","type":"string"},"effect_taxonomy":{"additionalProperties":false,"properties":{"attaches_process":{"type":"boolean"},"instruments_code":{"type":"boolean"},"invokes_target_code":{"const":false,"type":"boolean"},"loads_target":{"type":"boolean"},"uses_debugger":{"type":"boolean"},"uses_reflection":{"type":"boolean"}},"required":["attaches_process","loads_target","uses_debugger","uses_reflection","instruments_code","invokes_target_code"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1,"minItems":1,"type":"array"},"executed":{"const":false,"type":"boolean"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"method_lock":{"additionalProperties":false,"properties":{"body_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"body_status":{"enum":["present","partial","absent","malformed","too-large"],"type":"string"},"declaring_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"exact_build_required":{"const":true,"type":"boolean"},"il_size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"name":{"type":"string"},"normalized_il_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"signature_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"token":{"pattern":"^0x[0-9a-f]{8}$","type":"string"}},"required":["token","declaring_type","name","signature_sha256","normalized_il_sha256","body_sha256","il_size","body_status","exact_build_required"],"type":"object"},"phase":{"const":"admission-plan","type":"string"},"requested_runtime":{"additionalProperties":false,"properties":{"effect":{"enum":["attach","load","debugger","reflection","instrumentation"],"type":"string"},"executable_path":{"minLength":1,"type":"string"},"filesystem":{"const":"owned-artifacts-only","type":"string"},"host":{"additionalProperties":false,"properties":{"architecture":{"enum":["x86","x86_64","arm","arm64"],"type":"string"},"clr_family":{"enum":["dotnet","dotnet-framework","mono","unknown"],"type":"string"},"os":{"enum":["linux","macos","windows"],"type":"string"}},"required":["os","clr_family","architecture"],"type":"object"},"network":{"const":"none","type":"string"}},"required":["effect","host","executable_path","network","filesystem"],"type":"object"},"schema_version":{"const":1,"type":"number"},"static_observation":{"additionalProperties":false,"properties":{"artifact_path":{"minLength":1,"type":"string"},"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"metadata_status":{"enum":["absent","complete","partial","malformed"],"type":"string"},"module_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"mvid":{"anyOf":[{"pattern":"^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$","type":"string"},{"type":"null"}]}},"required":["evidence_id","artifact_sha256","artifact_path","byte_length","module_name","mvid","metadata_status"],"type":"object"},"unsupported_until_executor_exists":{"const":true,"type":"boolean"}},"required":["schema_version","correlation_id","phase","executed","authority_model","static_observation","method_lock","requested_runtime","effect_taxonomy","bounds","unsupported_until_executor_exists","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Plan Managed Runtime Correlation"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Project authenticated managed artifact, member, and native-boundary Evidence into the provider-neutral application graph without executing managed code, loading assemblies, or translating managed metadata tokens to native addresses. The graph preserves managed static observations as managed-specific nodes linked to source Evidence.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"limits":{"additionalProperties":false,"default":{"max_fields":5000,"max_methods":10000,"max_native_implementations":5000,"max_pinvoke_imports":5000,"max_types":5000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_fields":{"default":5000,"description":"Maximum permitted fields for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_methods":{"default":10000,"description":"Maximum permitted methods for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_native_implementations":{"default":5000,"description":"Maximum permitted native implementations for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_pinvoke_imports":{"default":5000,"description":"Maximum permitted pinvoke imports for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_types":{"default":5000,"description":"Maximum permitted types for this operation.","maximum":100000,"minimum":0,"type":"integer"}},"type":"object"},"managed_artifact_evidence_id":{"description":"Session-owned inspect_managed_artifact Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_members_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_native_boundaries_evidence_id":{"description":"Session-owned inspect_managed_native_boundaries Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"}},"required":["managed_artifact_evidence_id"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"additionalProperties":false,"default":{"max_fields":5000,"max_methods":10000,"max_native_implementations":5000,"max_pinvoke_imports":5000,"max_types":5000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_fields":{"default":5000,"description":"Maximum permitted fields for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_methods":{"default":10000,"description":"Maximum permitted methods for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_native_implementations":{"default":5000,"description":"Maximum permitted native implementations for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_pinvoke_imports":{"default":5000,"description":"Maximum permitted pinvoke imports for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_types":{"default":5000,"description":"Maximum permitted types for this operation.","maximum":100000,"minimum":0,"type":"integer"}},"type":"object"},"managed_artifact_evidence_id":{"description":"Session-owned inspect_managed_artifact Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_members_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_native_boundaries_evidence_id":{"description":"Session-owned inspect_managed_native_boundaries Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"}},"required":["managed_members_evidence_id"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"additionalProperties":false,"default":{"max_fields":5000,"max_methods":10000,"max_native_implementations":5000,"max_pinvoke_imports":5000,"max_types":5000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_fields":{"default":5000,"description":"Maximum permitted fields for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_methods":{"default":10000,"description":"Maximum permitted methods for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_native_implementations":{"default":5000,"description":"Maximum permitted native implementations for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_pinvoke_imports":{"default":5000,"description":"Maximum permitted pinvoke imports for this operation.","maximum":100000,"minimum":0,"type":"integer"},"max_types":{"default":5000,"description":"Maximum permitted types for this operation.","maximum":100000,"minimum":0,"type":"integer"}},"type":"object"},"managed_artifact_evidence_id":{"description":"Session-owned inspect_managed_artifact Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_members_evidence_id":{"description":"Session-owned inspect_managed_members Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"managed_native_boundaries_evidence_id":{"description":"Session-owned inspect_managed_native_boundaries Evidence ID","pattern":"^ev_[a-f0-9]{64}$","type":"string"}},"required":["managed_native_boundaries_evidence_id"],"type":"object"}],"examples":[{"limits":{"max_fields":100,"max_methods":100,"max_native_implementations":100,"max_pinvoke_imports":100,"max_types":100},"managed_members_evidence_id":"ev_4871226711dcb86d73cebb54bc54c6e1d6cf227c94c7cf67685dc5d805511493"}],"type":"object"},"kind":"application","name":"project_managed_application_graph","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"omitted_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_methods":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_native_implementations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_pinvoke_imports":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_types":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"}},"required":["status","omitted_types","omitted_methods","omitted_fields","omitted_pinvoke_imports","omitted_native_implementations"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":3,"minItems":1,"type":"array"},"graph":{"additionalProperties":false,"properties":{"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"projection_id":{"pattern":"^magp_[a-f0-9]{64}$","type":"string"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"},"source_evidence":{"additionalProperties":false,"properties":{"managed_artifact_evidence_id":{"anyOf":[{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"managed_members_evidence_id":{"anyOf":[{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"managed_native_boundaries_evidence_id":{"anyOf":[{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["managed_artifact_evidence_id","managed_members_evidence_id","managed_native_boundaries_evidence_id"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"assemblies":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_edges":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"methods":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"native_implementations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pinvoke_imports":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"types":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["graph_nodes","graph_edges","assemblies","modules","types","methods","fields","pinvoke_imports","native_implementations"],"type":"object"}},"required":["schema_version","projection_id","root_artifact_sha256","source_evidence","summary","graph","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Project Managed Application Graph"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"List bounded page targets from an approved user-owned loopback Chrome DevTools Protocol endpoint. Only targets whose current URL matches an approved exact origin are returned; URL credentials, query values, and fragments are redacted.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"allowed_origins":["https://app.example.test"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","limit":100,"offset":0}],"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit approval for browser observation","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":200,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["cdp_endpoint","allowed_origins","approved"],"type":"object"},"kind":"browser-provider","name":"list_browser_targets","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"excluded":{"additionalProperties":false,"properties":{"disallowed_origin":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"non_page":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unsupported_url":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["disallowed_origin","unsupported_url","non_page"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"targets":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"origin":{"type":"string"},"target_id":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"},"url":{"type":"string"}},"required":["target_id","type","title","url","origin","attached"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["schema_version","browser","targets","excluded","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Browser Targets"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Passively inspect one approved page target through CDP without evaluating JavaScript, navigating, clicking, closing, or mutating the page. Returns bounded DOM structure, accessibility, scripts, resources, attach-window network and console metadata, workers, and redacted storage inventory as Evidence v2.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit approval for browser observation","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"console_text_approved":{"default":false,"description":"Explicit operator approval for console text.","type":"boolean"},"include_accessibility_text":{"default":false,"description":"Whether to include accessibility text in the result.","type":"boolean"},"include_console_text":{"default":false,"description":"Whether to include console text in the result.","type":"boolean"},"include_json_body_shapes":{"default":false,"description":"Whether to include json body shapes in the result.","type":"boolean"},"include_script_sources":{"const":false,"default":false,"description":"Whether to include script sources in the result.","type":"boolean"},"include_storage_fingerprints":{"default":false,"description":"Whether to include storage fingerprints in the result.","type":"boolean"},"include_storage_keys":{"default":false,"description":"Whether to include storage keys in the result.","type":"boolean"},"include_websocket_shapes":{"default":false,"description":"Whether to include websocket shapes in the result.","type":"boolean"},"json_body_schema_approved":{"default":false,"description":"Explicit operator approval for json body schema.","type":"boolean"},"limits":{"default":{"max_ax_nodes":2000,"max_ax_text_field_bytes":1024,"max_console_events":200,"max_console_text_field_bytes":1024,"max_dom_nodes":2000,"max_frames":200,"max_json_body_bytes":1048576,"max_json_shape_depth":20,"max_json_shape_nodes":5000,"max_network_events":1000,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":200,"max_storage_keys":1000,"max_total_ax_text_bytes":65536,"max_total_console_text_bytes":65536,"max_total_json_body_bytes":4194304,"max_total_script_source_bytes":4194304,"max_total_websocket_shape_bytes":1048576,"max_websocket_events":500,"max_websocket_shape_bytes":65536,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_ax_nodes":{"default":2000,"description":"Maximum permitted ax nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_ax_text_field_bytes":{"default":1024,"description":"Maximum permitted ax text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_console_events":{"default":200,"description":"Maximum permitted console events for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_console_text_field_bytes":{"default":1024,"description":"Maximum permitted console text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_json_body_bytes":{"default":1048576,"description":"Maximum permitted json body bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_json_shape_depth":{"default":20,"description":"Maximum permitted json shape depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_json_shape_nodes":{"default":5000,"description":"Maximum permitted json shape nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_network_events":{"default":1000,"description":"Maximum permitted network events for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":200,"description":"Maximum permitted scripts for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_storage_keys":{"default":1000,"description":"Maximum permitted storage keys for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_total_ax_text_bytes":{"default":65536,"description":"Maximum permitted total ax text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_console_text_bytes":{"default":65536,"description":"Maximum permitted total console text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_json_body_bytes":{"default":4194304,"description":"Maximum permitted total json body bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_websocket_shape_bytes":{"default":1048576,"description":"Maximum permitted total websocket shape bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_websocket_events":{"default":500,"description":"Maximum permitted websocket events for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_websocket_shape_bytes":{"default":65536,"description":"Maximum permitted websocket shape bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":500,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":false,"default":false,"description":"Explicit operator approval for source capture.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"},"websocket_shape_approved":{"default":false,"description":"Explicit operator approval for websocket shape.","type":"boolean"}},"required":["cdp_endpoint","allowed_origins","approved","target_id"],"type":"object"},{"additionalProperties":false,"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit approval for browser observation","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"console_text_approved":{"default":false,"description":"Explicit operator approval for console text.","type":"boolean"},"include_accessibility_text":{"default":false,"description":"Whether to include accessibility text in the result.","type":"boolean"},"include_console_text":{"default":false,"description":"Whether to include console text in the result.","type":"boolean"},"include_json_body_shapes":{"default":false,"description":"Whether to include json body shapes in the result.","type":"boolean"},"include_script_sources":{"const":true,"default":true,"description":"Whether to include script sources in the result.","type":"boolean"},"include_storage_fingerprints":{"default":false,"description":"Whether to include storage fingerprints in the result.","type":"boolean"},"include_storage_keys":{"default":false,"description":"Whether to include storage keys in the result.","type":"boolean"},"include_websocket_shapes":{"default":false,"description":"Whether to include websocket shapes in the result.","type":"boolean"},"json_body_schema_approved":{"default":false,"description":"Explicit operator approval for json body schema.","type":"boolean"},"limits":{"default":{"max_ax_nodes":2000,"max_ax_text_field_bytes":1024,"max_console_events":200,"max_console_text_field_bytes":1024,"max_dom_nodes":2000,"max_frames":200,"max_json_body_bytes":1048576,"max_json_shape_depth":20,"max_json_shape_nodes":5000,"max_network_events":1000,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":200,"max_storage_keys":1000,"max_total_ax_text_bytes":65536,"max_total_console_text_bytes":65536,"max_total_json_body_bytes":4194304,"max_total_script_source_bytes":4194304,"max_total_websocket_shape_bytes":1048576,"max_websocket_events":500,"max_websocket_shape_bytes":65536,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_ax_nodes":{"default":2000,"description":"Maximum permitted ax nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_ax_text_field_bytes":{"default":1024,"description":"Maximum permitted ax text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_console_events":{"default":200,"description":"Maximum permitted console events for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_console_text_field_bytes":{"default":1024,"description":"Maximum permitted console text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_json_body_bytes":{"default":1048576,"description":"Maximum permitted json body bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_json_shape_depth":{"default":20,"description":"Maximum permitted json shape depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_json_shape_nodes":{"default":5000,"description":"Maximum permitted json shape nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_network_events":{"default":1000,"description":"Maximum permitted network events for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":200,"description":"Maximum permitted scripts for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_storage_keys":{"default":1000,"description":"Maximum permitted storage keys for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_total_ax_text_bytes":{"default":65536,"description":"Maximum permitted total ax text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_console_text_bytes":{"default":65536,"description":"Maximum permitted total console text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_json_body_bytes":{"default":4194304,"description":"Maximum permitted total json body bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_websocket_shape_bytes":{"default":1048576,"description":"Maximum permitted total websocket shape bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_websocket_events":{"default":500,"description":"Maximum permitted websocket events for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_websocket_shape_bytes":{"default":65536,"description":"Maximum permitted websocket shape bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":500,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":true,"description":"Explicit operator approval for source capture.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"},"websocket_shape_approved":{"default":false,"description":"Explicit operator approval for websocket shape.","type":"boolean"}},"required":["cdp_endpoint","allowed_origins","approved","target_id","source_capture_approved"],"type":"object"}],"examples":[{"allowed_origins":["https://app.example.test"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","console_text_approved":false,"include_accessibility_text":false,"include_console_text":false,"include_json_body_shapes":false,"include_script_sources":false,"include_storage_fingerprints":false,"include_storage_keys":false,"include_websocket_shapes":false,"json_body_schema_approved":false,"limits":{"max_ax_nodes":2000,"max_ax_text_field_bytes":1024,"max_console_events":200,"max_console_text_field_bytes":1024,"max_dom_nodes":2000,"max_frames":200,"max_json_body_bytes":1048576,"max_json_shape_depth":20,"max_json_shape_nodes":5000,"max_network_events":1000,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":200,"max_storage_keys":1000,"max_total_ax_text_bytes":65536,"max_total_console_text_bytes":65536,"max_total_json_body_bytes":4194304,"max_total_script_source_bytes":4194304,"max_total_websocket_shape_bytes":1048576,"max_websocket_events":500,"max_websocket_shape_bytes":65536,"max_workers":500},"observation_ms":500,"target_id":"TARGET_ID_FROM_LIST_BROWSER_TARGETS","websocket_shape_approved":false}],"type":"object"},"kind":"browser-provider","name":"inspect_web_page","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"accessibility":{"additionalProperties":false,"properties":{"nodes":{"items":{"additionalProperties":false,"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"ignored":{"type":"boolean"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"node_id":{"type":"string"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"role":{"anyOf":[{"type":"string"},{"type":"null"}]},"states":{"default":[],"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"value":{"anyOf":[{"type":"boolean"},{"type":"number"},{"type":"string"}]}},"required":["name","value"],"type":"object"},"type":"array"}},"required":["node_id","parent_id","role","name","description","ignored","states"],"type":"object"},"type":"array"},"text_capture":{"additionalProperties":false,"properties":{"excluded_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["not_approved","included","truncated","unavailable"],"type":"string"},"truncated_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","retained_bytes","excluded_fields","truncated_fields"],"type":"object"},"total_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","text_capture","nodes"],"type":"object"},"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"capture_window":{"additionalProperties":false,"properties":{"ended_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"observation_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"started_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"}},"required":["started_at","ended_at","observation_ms"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"attach_limited_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"additionalProperties":false,"properties":{"console_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"items":{"additionalProperties":false,"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reason":{"enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"console":{"additionalProperties":false,"properties":{"coverage_started_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"events":{"items":{"additionalProperties":false,"properties":{"argument_types":{"items":{"type":"string"},"type":"array"},"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"text_capture":{"additionalProperties":false,"properties":{"retained_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["not_approved","included","truncated"],"type":"string"},"truncated_values":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"values":{"items":{"additionalProperties":false,"properties":{"argument_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"type":"string"},"type":{"type":"string"}},"required":["argument_index","type","text"],"type":"object"},"type":"array"}},"required":["status","values","retained_bytes","truncated_values"],"type":"object"},"timestamp":{"type":"number"},"type":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type","timestamp","argument_types","url","line","column","text_capture"],"type":"object"},"type":"array"},"prior_activity_available":{"const":false,"type":"boolean"}},"required":["events","coverage_started_at","prior_activity_available"],"type":"object"},"dom":{"additionalProperties":false,"properties":{"nodes":{"items":{"additionalProperties":false,"properties":{"attribute_names":{"items":{"type":"string"},"type":"array"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_name":{"type":"string"},"node_type":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_value_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parent_index":{"maximum":9007199254740991,"minimum":-1,"type":"integer"}},"required":["index","parent_index","node_type","node_name","node_value_length","attribute_names"],"type":"object"},"type":"array"},"total_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","nodes"],"type":"object"},"frames":{"items":{"additionalProperties":false,"properties":{"frame_id":{"type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"}},"required":["frame_id","parent_frame_id","url","origin"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"metadata":{"additionalProperties":false,"properties":{"agent_hints":{"items":{"additionalProperties":false,"properties":{"declaration":{"type":"string"},"mechanism":{"enum":["link_rel","dom_link_rel","well_known_resource","response_header"],"type":"string"},"trust":{"const":"page-declared-untrusted","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["mechanism","declaration","url","trust"],"type":"object"},"type":"array"},"dom_urls":{"items":{"additionalProperties":false,"properties":{"attribute":{"enum":["href","src","action","formaction","poster"],"type":"string"},"destination_scope":{"enum":["approved","outside_policy","unsupported"],"type":"string"},"node_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["node_index","attribute","url","destination_scope"],"type":"object"},"type":"array"},"excluded_dom_urls":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"headers_allowlisted":{"const":true,"type":"boolean"},"responses":{"items":{"additionalProperties":false,"properties":{"content_encoding":{"anyOf":[{"type":"string"},{"type":"null"}]},"content_length":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"csp":{"additionalProperties":false,"properties":{"directives":{"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"sources":{"items":{"additionalProperties":false,"properties":{"kind":{"enum":["keyword","scheme","approved_origin","external_origin","other"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","value"],"type":"object"},"type":"array"}},"required":["name","sources"],"type":"object"},"type":"array"},"hash_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nonce_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["directives","nonce_count","hash_count"],"type":"object"},"links":{"items":{"additionalProperties":false,"properties":{"as":{"anyOf":[{"type":"string"},{"type":"null"}]},"crossorigin":{"anyOf":[{"type":"string"},{"type":"null"}]},"destination_scope":{"enum":["approved","outside_policy","unsupported"],"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"rel":{"items":{"type":"string"},"type":"array"},"type":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["href","destination_scope","rel","as","type","crossorigin"],"type":"object"},"type":"array"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"policies":{"additionalProperties":false,"properties":{"coep":{"anyOf":[{"type":"string"},{"type":"null"}]},"coop":{"anyOf":[{"type":"string"},{"type":"null"}]},"corp":{"anyOf":[{"type":"string"},{"type":"null"}]},"permissions_policy_features":{"items":{"type":"string"},"type":"array"},"referrer_policy":{"anyOf":[{"type":"string"},{"type":"null"}]},"x_content_type_options":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["coop","coep","corp","referrer_policy","x_content_type_options","permissions_policy_features"],"type":"object"},"request_id":{"type":"string"},"url":{"type":"string"}},"required":["request_id","url","mime_type","content_length","content_encoding","csp","links","policies"],"type":"object"},"type":"array"}},"required":["responses","dom_urls","agent_hints","excluded_dom_urls","headers_allowlisted"],"type":"object"},"network":{"additionalProperties":false,"properties":{"coverage_started_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"prior_activity_available":{"const":false,"type":"boolean"},"requests":{"items":{"additionalProperties":false,"properties":{"body_shapes":{"additionalProperties":false,"properties":{"request":{"anyOf":[{"additionalProperties":false,"properties":{"max_depth_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"items":{"additionalProperties":false,"properties":{"observations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"type":"string"},"types":{"items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}]},"response":{"anyOf":[{"additionalProperties":false,"properties":{"max_depth_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"items":{"additionalProperties":false,"properties":{"observations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"type":"string"},"types":{"items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}]},"status":{"enum":["not_approved","included","partial","unavailable","truncated"],"type":"string"}},"required":["status","request","response"],"type":"object"},"encoded_data_length":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}]},"initiator":{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"type":{"type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type","url","line","column"],"type":"object"},"method":{"type":"string"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"request_id":{"type":"string"},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"type":"number"},{"type":"null"}]},"url":{"type":"string"}},"required":["request_id","url","origin","method","resource_type","status","mime_type","encoded_data_length","initiator","body_shapes"],"type":"object"},"type":"array"},"websocket_events":{"items":{"additionalProperties":false,"properties":{"direction":{"enum":["sent","received"],"type":"string"},"opcode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_shape":{"anyOf":[{"additionalProperties":false,"properties":{"format":{"enum":["json","text","binary"],"type":"string"},"json_shape":{"anyOf":[{"additionalProperties":false,"properties":{"max_depth_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"items":{"additionalProperties":false,"properties":{"observations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"type":"string"},"types":{"items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}]},"truncated":{"type":"boolean"}},"required":["format","json_shape","truncated"],"type":"object"},{"type":"null"}]},"request_id":{"type":"string"}},"required":["request_id","direction","opcode","payload_bytes","payload_shape"],"type":"object"},"type":"array"}},"required":["requests","websocket_events","coverage_started_at","prior_activity_available"],"type":"object"},"resources":{"items":{"additionalProperties":false,"properties":{"content_size":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}]},"mime_type":{"type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"resource_key":{"pattern":"^res_[a-f0-9]{64}$","type":"string"},"type":{"type":"string"},"url":{"type":"string"}},"required":["resource_key","url","origin","type","mime_type","content_size"],"type":"object"},"type":"array"},"schema_version":{"const":2,"type":"number"},"scripts":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"cdp_hash":{"type":"string"},"frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"is_module":{"type":"boolean"},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"resource_reconciliation":{"oneOf":[{"additionalProperties":false,"properties":{"resource_key":{"type":"string"},"status":{"const":"exact","type":"string"}},"required":["status","resource_key"],"type":"object"},{"additionalProperties":false,"properties":{"candidate_resource_keys":{"items":{"type":"string"},"type":"array"},"status":{"const":"ambiguous","type":"string"}},"required":["status","candidate_resource_keys"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"const":"no_exact_sanitized_url","type":"string"},"status":{"const":"unmatched","type":"string"}},"required":["status","reason"],"type":"object"}]},"script_key":{"pattern":"^scr_[a-f0-9]{64}(?:_[0-9]+)?$","type":"string"},"source":{"oneOf":[{"additionalProperties":false,"properties":{"included":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["included","reason"],"type":"object"},{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","type":"string"},"media_type":{"maxLength":256,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},"included":{"const":true,"type":"boolean"}},"required":["included","artifact"],"type":"object"}]},"source_map_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"url":{"type":"string"}},"required":["script_key","frame_id","url","origin","cdp_hash","length","is_module","language","source_map_url","resource_reconciliation","source"],"type":"object"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"},"storage":{"additionalProperties":false,"properties":{"cache_names":{"items":{"type":"string"},"type":"array"},"content_fingerprints":{"default":[],"items":{"additionalProperties":false,"properties":{"complete":{"type":"boolean"},"identity_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"enum":["cookie","local_storage","session_storage","indexed_db_schema","indexed_db_record","cache_entry"],"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["scope","identity_sha256","value_sha256","complete"],"type":"object"},"type":"array"},"fingerprint_algorithm":{"const":"sha256","default":"sha256","type":"string"},"fingerprints_complete":{"default":false,"type":"boolean"},"indexed_db_names":{"items":{"type":"string"},"type":"array"},"local_storage_keys":{"items":{"type":"string"},"type":"array"},"origin":{"type":"string"},"quota_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}]},"session_storage_keys":{"items":{"type":"string"},"type":"array"},"usage_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}]},"values_redacted":{"const":true,"type":"boolean"}},"required":["origin","usage_bytes","quota_bytes","local_storage_keys","session_storage_keys","indexed_db_names","cache_names","content_fingerprints","fingerprint_algorithm","fingerprints_complete","values_redacted"],"type":"object"},"target":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"origin":{"type":"string"},"target_id":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"},"url":{"type":"string"}},"required":["target_id","type","title","url","origin","attached"],"type":"object"},"workers":{"items":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"opener_target_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"origin":{"anyOf":[{"type":"string"},{"type":"null"}]},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"target_id":{"type":"string"},"type":{"type":"string"},"url":{"type":"string"}},"required":["target_id","type","url","origin","attached","opener_target_id","parent_frame_id"],"type":"object"},"type":"array"}},"required":["schema_version","browser","target","capture_window","completeness","frames","dom","accessibility","scripts","resources","network","console","workers","metadata","storage","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Web Page"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Capture explicitly approved JavaScript source from one approved CDP page and statically derive a bounded chunk graph, route and endpoint candidates, vendor fingerprints, page-declared WebMCP metadata, and optional separately approved source-map evidence. JavaScript is parsed but never executed.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"analysis_limits":{"default":{"max_ast_nodes":250000,"max_findings":1000,"max_original_sources":2000,"max_source_map_bytes":4194304,"max_source_map_mappings":10000,"max_source_maps":100,"max_total_source_map_bytes":16777216},"description":"Value for analysis limits.","properties":{"max_ast_nodes":{"default":250000,"description":"Maximum permitted ast nodes for this operation.","maximum":2000000,"minimum":1,"type":"integer"},"max_findings":{"default":1000,"description":"Maximum permitted findings for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_original_sources":{"default":2000,"description":"Maximum permitted original sources for this operation.","maximum":20000,"minimum":1,"type":"integer"},"max_source_map_bytes":{"default":4194304,"description":"Maximum permitted source map bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_source_map_mappings":{"default":10000,"description":"Maximum permitted source map mappings for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_source_maps":{"default":100,"description":"Maximum permitted source maps for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_total_source_map_bytes":{"default":16777216,"description":"Maximum permitted total source map bytes for this operation.","maximum":67108864,"minimum":1,"type":"integer"}},"type":"object"},"approved":{"const":true,"description":"Explicit approval for browser observation","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"console_text_approved":{"default":false,"description":"Explicit operator approval for console text.","type":"boolean"},"fetch_source_maps":{"const":false,"default":false,"description":"Value for fetch source maps.","type":"boolean"},"include_accessibility_text":{"default":false,"description":"Whether to include accessibility text in the result.","type":"boolean"},"include_console_text":{"default":false,"description":"Whether to include console text in the result.","type":"boolean"},"include_json_body_shapes":{"default":false,"description":"Whether to include json body shapes in the result.","type":"boolean"},"include_script_sources":{"const":true,"default":true,"description":"Whether to include script sources in the result.","type":"boolean"},"include_storage_fingerprints":{"default":false,"description":"Whether to include storage fingerprints in the result.","type":"boolean"},"include_storage_keys":{"default":false,"description":"Whether to include storage keys in the result.","type":"boolean"},"include_websocket_shapes":{"default":false,"description":"Whether to include websocket shapes in the result.","type":"boolean"},"json_body_schema_approved":{"default":false,"description":"Explicit operator approval for json body schema.","type":"boolean"},"limits":{"default":{"max_ax_nodes":2000,"max_ax_text_field_bytes":1024,"max_console_events":200,"max_console_text_field_bytes":1024,"max_dom_nodes":2000,"max_frames":200,"max_json_body_bytes":1048576,"max_json_shape_depth":20,"max_json_shape_nodes":5000,"max_network_events":1000,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":200,"max_storage_keys":1000,"max_total_ax_text_bytes":65536,"max_total_console_text_bytes":65536,"max_total_json_body_bytes":4194304,"max_total_script_source_bytes":4194304,"max_total_websocket_shape_bytes":1048576,"max_websocket_events":500,"max_websocket_shape_bytes":65536,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_ax_nodes":{"default":2000,"description":"Maximum permitted ax nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_ax_text_field_bytes":{"default":1024,"description":"Maximum permitted ax text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_console_events":{"default":200,"description":"Maximum permitted console events for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_console_text_field_bytes":{"default":1024,"description":"Maximum permitted console text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_json_body_bytes":{"default":1048576,"description":"Maximum permitted json body bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_json_shape_depth":{"default":20,"description":"Maximum permitted json shape depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_json_shape_nodes":{"default":5000,"description":"Maximum permitted json shape nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_network_events":{"default":1000,"description":"Maximum permitted network events for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":200,"description":"Maximum permitted scripts for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_storage_keys":{"default":1000,"description":"Maximum permitted storage keys for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_total_ax_text_bytes":{"default":65536,"description":"Maximum permitted total ax text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_console_text_bytes":{"default":65536,"description":"Maximum permitted total console text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_json_body_bytes":{"default":4194304,"description":"Maximum permitted total json body bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_websocket_shape_bytes":{"default":1048576,"description":"Maximum permitted total websocket shape bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_websocket_events":{"default":500,"description":"Maximum permitted websocket events for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_websocket_shape_bytes":{"default":65536,"description":"Maximum permitted websocket shape bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":500,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":true,"description":"Explicit operator approval for source capture.","type":"boolean"},"source_map_fetch_approved":{"const":false,"default":false,"description":"Explicit operator approval for source map fetch.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"},"websocket_shape_approved":{"default":false,"description":"Explicit operator approval for websocket shape.","type":"boolean"}},"required":["cdp_endpoint","allowed_origins","approved","target_id","source_capture_approved"],"type":"object"},{"additionalProperties":false,"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"analysis_limits":{"default":{"max_ast_nodes":250000,"max_findings":1000,"max_original_sources":2000,"max_source_map_bytes":4194304,"max_source_map_mappings":10000,"max_source_maps":100,"max_total_source_map_bytes":16777216},"description":"Value for analysis limits.","properties":{"max_ast_nodes":{"default":250000,"description":"Maximum permitted ast nodes for this operation.","maximum":2000000,"minimum":1,"type":"integer"},"max_findings":{"default":1000,"description":"Maximum permitted findings for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_original_sources":{"default":2000,"description":"Maximum permitted original sources for this operation.","maximum":20000,"minimum":1,"type":"integer"},"max_source_map_bytes":{"default":4194304,"description":"Maximum permitted source map bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_source_map_mappings":{"default":10000,"description":"Maximum permitted source map mappings for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_source_maps":{"default":100,"description":"Maximum permitted source maps for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_total_source_map_bytes":{"default":16777216,"description":"Maximum permitted total source map bytes for this operation.","maximum":67108864,"minimum":1,"type":"integer"}},"type":"object"},"approved":{"const":true,"description":"Explicit approval for browser observation","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"console_text_approved":{"default":false,"description":"Explicit operator approval for console text.","type":"boolean"},"fetch_source_maps":{"const":true,"description":"Value for fetch source maps.","type":"boolean"},"include_accessibility_text":{"default":false,"description":"Whether to include accessibility text in the result.","type":"boolean"},"include_console_text":{"default":false,"description":"Whether to include console text in the result.","type":"boolean"},"include_json_body_shapes":{"default":false,"description":"Whether to include json body shapes in the result.","type":"boolean"},"include_script_sources":{"const":true,"default":true,"description":"Whether to include script sources in the result.","type":"boolean"},"include_storage_fingerprints":{"default":false,"description":"Whether to include storage fingerprints in the result.","type":"boolean"},"include_storage_keys":{"default":false,"description":"Whether to include storage keys in the result.","type":"boolean"},"include_websocket_shapes":{"default":false,"description":"Whether to include websocket shapes in the result.","type":"boolean"},"json_body_schema_approved":{"default":false,"description":"Explicit operator approval for json body schema.","type":"boolean"},"limits":{"default":{"max_ax_nodes":2000,"max_ax_text_field_bytes":1024,"max_console_events":200,"max_console_text_field_bytes":1024,"max_dom_nodes":2000,"max_frames":200,"max_json_body_bytes":1048576,"max_json_shape_depth":20,"max_json_shape_nodes":5000,"max_network_events":1000,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":200,"max_storage_keys":1000,"max_total_ax_text_bytes":65536,"max_total_console_text_bytes":65536,"max_total_json_body_bytes":4194304,"max_total_script_source_bytes":4194304,"max_total_websocket_shape_bytes":1048576,"max_websocket_events":500,"max_websocket_shape_bytes":65536,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_ax_nodes":{"default":2000,"description":"Maximum permitted ax nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_ax_text_field_bytes":{"default":1024,"description":"Maximum permitted ax text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_console_events":{"default":200,"description":"Maximum permitted console events for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_console_text_field_bytes":{"default":1024,"description":"Maximum permitted console text field bytes for this operation.","maximum":16384,"minimum":1,"type":"integer"},"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_json_body_bytes":{"default":1048576,"description":"Maximum permitted json body bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_json_shape_depth":{"default":20,"description":"Maximum permitted json shape depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_json_shape_nodes":{"default":5000,"description":"Maximum permitted json shape nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_network_events":{"default":1000,"description":"Maximum permitted network events for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":200,"description":"Maximum permitted scripts for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_storage_keys":{"default":1000,"description":"Maximum permitted storage keys for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_total_ax_text_bytes":{"default":65536,"description":"Maximum permitted total ax text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_console_text_bytes":{"default":65536,"description":"Maximum permitted total console text bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_total_json_body_bytes":{"default":4194304,"description":"Maximum permitted total json body bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_total_websocket_shape_bytes":{"default":1048576,"description":"Maximum permitted total websocket shape bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_websocket_events":{"default":500,"description":"Maximum permitted websocket events for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_websocket_shape_bytes":{"default":65536,"description":"Maximum permitted websocket shape bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":500,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":true,"description":"Explicit operator approval for source capture.","type":"boolean"},"source_map_fetch_approved":{"const":true,"description":"Explicit operator approval for source map fetch.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"},"websocket_shape_approved":{"default":false,"description":"Explicit operator approval for websocket shape.","type":"boolean"}},"required":["cdp_endpoint","allowed_origins","approved","target_id","source_capture_approved","fetch_source_maps","source_map_fetch_approved"],"type":"object"}],"examples":[{"allowed_origins":["https://app.example.test"],"analysis_limits":{"max_ast_nodes":250000,"max_findings":1000,"max_original_sources":2000,"max_source_map_bytes":4194304,"max_source_map_mappings":10000,"max_source_maps":100,"max_total_source_map_bytes":16777216},"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","fetch_source_maps":false,"include_accessibility_text":false,"include_script_sources":true,"include_storage_keys":false,"observation_ms":500,"source_capture_approved":true,"source_map_fetch_approved":false,"target_id":"TARGET_ID_FROM_LIST_BROWSER_TARGETS"}],"type":"object"},"kind":"browser-provider","name":"analyze_web_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"capture":{"additionalProperties":false,"properties":{"scripts_analyzed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source_artifacts":{"items":{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","type":"string"},"media_type":{"maxLength":256,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text_available":{"const":true,"type":"boolean"},"uri":{"pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text_available"],"type":"object"},"type":"array"},"target_url":{"type":"string"}},"required":["target_url","scripts_observed","scripts_analyzed","source_artifacts"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"dropped_findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parse_failures":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parsed_scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete_within_limits","truncated","partial"],"type":"string"},"visited_ast_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","parsed_scripts","parse_failures","visited_ast_nodes","dropped_findings"],"type":"object"},"inferences":{"items":{"additionalProperties":false,"properties":{"basis":{"items":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"detector":{"type":"string"},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"script_key":{"type":"string"}},"required":["script_key","artifact_sha256","line","column","detector"],"type":"object"},"minItems":1,"type":"array"},"confidence":{"enum":["low","medium","high"],"type":"string"},"kind":{"enum":["vendor_fingerprint","route_framework","bundle_runtime"],"type":"string"},"value":{"type":"string"}},"required":["kind","value","confidence","basis"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"observations":{"additionalProperties":false,"properties":{"chunks":{"additionalProperties":false,"properties":{"edges":{"items":{"additionalProperties":false,"properties":{"from_script_key":{"type":"string"},"kind":{"enum":["static_import","dynamic_import","require","worker_import"],"type":"string"},"location":{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"script_key":{"type":"string"}},"required":["script_key","line","column"],"type":"object"},"resolved_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"specifier":{"type":"string"}},"required":["from_script_key","kind","specifier","resolved_url","location"],"type":"object"},"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"script_key":{"type":"string"},"url":{"type":"string"}},"required":["script_key","url","artifact_sha256","bytes"],"type":"object"},"type":"array"}},"required":["nodes","edges"],"type":"object"},"endpoints":{"items":{"additionalProperties":false,"properties":{"location":{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"script_key":{"type":"string"}},"required":["script_key","line","column"],"type":"object"},"mechanism":{"type":"string"},"value":{"type":"string"}},"required":["value","mechanism","location"],"type":"object"},"type":"array"},"routes":{"items":{"additionalProperties":false,"properties":{"location":{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"script_key":{"type":"string"}},"required":["script_key","line","column"],"type":"object"},"mechanism":{"type":"string"},"value":{"type":"string"}},"required":["value","mechanism","location"],"type":"object"},"type":"array"},"source_maps":{"additionalProperties":false,"properties":{"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"dropped_script_keys":{"items":{"type":"string"},"type":"array"},"items":{"items":{"additionalProperties":false,"properties":{"artifact":{"anyOf":[{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","type":"string"},"media_type":{"maxLength":256,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},{"type":"null"}]},"declared_url":{"type":"string"},"limitation":{"anyOf":[{"type":"string"},{"type":"null"}]},"mappings":{"items":{"additionalProperties":false,"properties":{"generated_column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"generated_line":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"original_column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"original_line":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"source":{"type":"string"}},"required":["generated_line","generated_column","source","original_line","original_column","name"],"type":"object"},"type":"array"},"original_module_edges":{"items":{"additionalProperties":false,"properties":{"from_source":{"type":"string"},"kind":{"enum":["static_import","dynamic_import","require"],"type":"string"},"resolved_source":{"anyOf":[{"type":"string"},{"type":"null"}]},"specifier":{"type":"string"}},"required":["from_source","kind","specifier","resolved_source"],"type":"object"},"type":"array"},"original_sources":{"items":{"additionalProperties":false,"properties":{"artifact":{"anyOf":[{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","type":"string"},"media_type":{"maxLength":256,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},{"type":"null"}]},"source":{"type":"string"}},"required":["source","artifact"],"type":"object"},"type":"array"},"script_key":{"type":"string"},"status":{"enum":["included","fetch_failed","invalid","policy_filtered","truncated"],"type":"string"}},"required":["script_key","declared_url","status","artifact","original_sources","original_module_edges","mappings","limitation"],"type":"object"},"type":"array"},"processed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"requested":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["not_requested","included","partial","unavailable","truncated"],"type":"string"}},"required":["status","requested","processed","dropped","dropped_script_keys","items"],"type":"object"},"webmcp_declarations":{"items":{"additionalProperties":false,"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"script_key":{"type":"string"}},"required":["script_key","line","column"],"type":"object"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"schema_property_names":{"items":{"type":"string"},"type":"array"},"trust":{"const":"page-declared-untrusted","type":"string"}},"required":["name","description","schema_property_names","trust","location"],"type":"object"},"type":"array"}},"required":["chunks","routes","endpoints","webmcp_declarations","source_maps"],"type":"object"},"schema_version":{"const":1,"type":"number"},"unknowns":{"items":{"additionalProperties":false,"properties":{"affected_script_keys":{"items":{"type":"string"},"type":"array"},"dimension":{"type":"string"},"reason":{"type":"string"}},"required":["dimension","reason","affected_script_keys"],"type":"object"},"type":"array"}},"required":["schema_version","capture","observations","inferences","unknowns","completeness","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Analyze Web Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Arm a bounded CDP observation window while the user operates the page. Allows approved same-origin reload and SPA navigation, records ordered navigation, redirect, lifecycle, and failure metadata, and stops before retaining an out-of-policy destination.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"allowed_origins":["https://app.example.test"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","max_timeline_events":2000,"observation_ms":10000,"target_id":"TARGET_ID_FROM_LIST_BROWSER_TARGETS"}],"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"max_timeline_events":{"default":2000,"description":"Maximum permitted timeline events for this operation.","maximum":20000,"minimum":1,"type":"integer"},"observation_ms":{"default":10000,"description":"Value for observation ms.","maximum":60000,"minimum":1,"type":"integer"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["cdp_endpoint","allowed_origins","target_id","approved"],"type":"object"},"kind":"browser-provider","name":"observe_web_session","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"attach_limited_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"additionalProperties":false,"properties":{"console_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"items":{"additionalProperties":false,"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reason":{"enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"target":{"additionalProperties":false,"properties":{"final_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"initial_url":{"type":"string"},"target_id":{"type":"string"}},"required":["target_id","initial_url","final_url"],"type":"object"},"timeline":{"items":{"additionalProperties":false,"properties":{"destination_scope":{"anyOf":[{"enum":["approved","outside_policy","unsupported"],"type":"string"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}]},"frame_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"loader_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}]},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"timestamp":{"minimum":0,"type":"number"},"type":{"enum":["navigation_requested","navigation_committed","same_origin_reload","same_document_navigation","redirect","load_failed","lifecycle","target_terminated"],"type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["sequence","type","timestamp","frame_id","loader_id","request_id","url","destination_scope","detail"],"type":"object"},"type":"array"},"window":{"additionalProperties":false,"properties":{"armed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"end_reason":{"enum":["window_elapsed","target_left_scope","target_terminated"],"type":"string"},"ended_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"requested_ms":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["armed_at","ended_at","requested_ms","end_reason"],"type":"object"}},"required":["schema_version","browser","target","window","timeline","completeness","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Observe Web Session"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Passively inventory page-registered WebMCP tools using the experimental CDP WebMCP domain. Metadata is bounded and page-declared-untrusted; REA never registers or invokes discovered tools.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"allowed_origins":["https://app.example.test"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","max_schema_bytes":262144,"max_schema_depth":20,"max_schema_nodes":5000,"max_tools":500,"observation_ms":100,"target_id":"TARGET_ID_FROM_LIST_BROWSER_TARGETS"}],"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"max_schema_bytes":{"default":262144,"description":"Maximum permitted schema bytes for this operation.","maximum":1048576,"minimum":1,"type":"integer"},"max_schema_depth":{"default":20,"description":"Maximum permitted schema depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_schema_nodes":{"default":5000,"description":"Maximum permitted schema nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_tools":{"default":500,"description":"Maximum permitted tools for this operation.","maximum":5000,"minimum":1,"type":"integer"},"observation_ms":{"default":100,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["cdp_endpoint","allowed_origins","target_id","approved"],"type":"object"},"kind":"browser-provider","name":"discover_webmcp_tools","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"attach_limited_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"additionalProperties":false,"properties":{"console_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"items":{"additionalProperties":false,"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reason":{"enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"status":{"enum":["available","unavailable"],"type":"string"},"target":{"additionalProperties":false,"properties":{"origin":{"type":"string"},"target_id":{"type":"string"},"url":{"type":"string"}},"required":["target_id","url","origin"],"type":"object"},"tools":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"autosubmit":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"read_only":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"untrusted_content":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"required":["read_only","untrusted_content","autosubmit"],"type":"object"},"declaration_kind":{"enum":["declarative","imperative"],"type":"string"},"description":{"type":"string"},"frame_id":{"type":"string"},"frame_url":{"type":"string"},"input_schema_shape":{"anyOf":[{"additionalProperties":false,"properties":{"max_depth_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"items":{"additionalProperties":false,"properties":{"observations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"type":"string"},"types":{"items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}]},"name":{"type":"string"},"owner_origin":{"type":"string"},"registration_source":{"anyOf":[{"additionalProperties":false,"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"url":{"type":"string"}},"required":["url","line","column"],"type":"object"},{"type":"null"}]},"tool_key":{"pattern":"^webmcp_[a-f0-9]{64}$","type":"string"},"trust":{"const":"page-declared-untrusted","type":"string"}},"required":["tool_key","name","description","frame_id","frame_url","owner_origin","declaration_kind","input_schema_shape","annotations","registration_source","trust"],"type":"object"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"}},"required":["schema_version","browser","target","status","tools","completeness","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Discover Webmcp Tools"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Compare either passive web captures or step-indexed browser scenarios. Scenario comparison aligns exact step IDs, records deterministic literal normalization, and exposes bounded artifact-level changes plus alignment failures. Missing or truncated evidence never proves equality.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"after":{"description":"Later passive web-page capture.","properties":{"inspection":{"description":"Value for inspection.","properties":{"accessibility":{"description":"Value for accessibility.","properties":{"nodes":{"description":"Value for nodes.","items":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for description."},"ignored":{"description":"Value for ignored.","type":"boolean"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact name used by this operation."},"node_id":{"description":"Value for node id.","type":"string"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for parent id."},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for role."},"states":{"default":[],"description":"Value for states.","items":{"properties":{"name":{"description":"Exact name used by this operation.","type":"string"},"value":{"anyOf":[{"type":"boolean"},{"type":"number"},{"type":"string"}],"description":"Value for value."}},"required":["name","value"],"type":"object"},"type":"array"}},"required":["node_id","parent_id","role","name","description","ignored"],"type":"object"},"type":"array"},"text_capture":{"description":"Value for text capture.","properties":{"excluded_fields":{"description":"Value for excluded fields.","maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_bytes":{"description":"Bounded byte count for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","truncated","unavailable"],"type":"string"},"truncated_fields":{"description":"Value for truncated fields.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","retained_bytes","excluded_fields","truncated_fields"],"type":"object"},"total_nodes":{"description":"Value for total nodes.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","text_capture","nodes"],"type":"object"},"browser":{"description":"Value for browser.","properties":{"js_version":{"description":"Value for js version.","type":"string"},"product":{"description":"Value for product.","type":"string"},"protocol_version":{"description":"Value for protocol version.","type":"string"},"revision":{"description":"Value for revision.","type":"string"},"user_agent":{"description":"Value for user agent.","type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"capture_window":{"description":"Value for capture window.","properties":{"ended_at":{"description":"Value for ended at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"observation_ms":{"description":"Value for observation ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"started_at":{"description":"Value for started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"}},"required":["started_at","ended_at","observation_ms"],"type":"object"},"completeness":{"description":"Value for completeness.","properties":{"attach_limited_sections":{"description":"Value for attach limited sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"description":"Value for conditions.","items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"description":"Value for dropped events.","properties":{"console_events":{"description":"Value for console events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"description":"Value for network requests.","maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"description":"Value for scripts.","maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"description":"Value for timeline events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"description":"Value for webmcp tools.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"description":"Value for websocket connections.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"description":"Value for websocket frames.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"description":"Value for excluded.","items":{"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for count."},"reason":{"description":"Value for reason.","enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"description":"Value for section.","enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"description":"Value for policy filtered sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"description":"Value for unavailable sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"console":{"description":"Value for console.","properties":{"coverage_started_at":{"description":"Value for coverage started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"events":{"description":"Value for events.","items":{"properties":{"argument_types":{"description":"Value for argument types.","items":{"type":"string"},"type":"array"},"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"text_capture":{"description":"Value for text capture.","properties":{"retained_bytes":{"description":"Bounded byte count for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","truncated"],"type":"string"},"truncated_values":{"description":"Value for truncated values.","maximum":9007199254740991,"minimum":0,"type":"integer"},"values":{"description":"Value for values.","items":{"properties":{"argument_index":{"description":"Value for argument index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"description":"Value for text.","type":"string"},"type":{"description":"Value for type.","type":"string"}},"required":["argument_index","type","text"],"type":"object"},"type":"array"}},"required":["status","values","retained_bytes","truncated_values"],"type":"object"},"timestamp":{"description":"Value for timestamp.","type":"number"},"type":{"description":"Value for type.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["type","timestamp","argument_types","url","line","column","text_capture"],"type":"object"},"type":"array"},"prior_activity_available":{"const":false,"description":"Value for prior activity available.","type":"boolean"}},"required":["events","coverage_started_at","prior_activity_available"],"type":"object"},"dom":{"description":"Value for dom.","properties":{"nodes":{"description":"Value for nodes.","items":{"properties":{"attribute_names":{"description":"Value for attribute names.","items":{"type":"string"},"type":"array"},"index":{"description":"Value for index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_name":{"description":"Value for node name.","type":"string"},"node_type":{"description":"Value for node type.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_value_length":{"description":"Value for node value length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"parent_index":{"description":"Value for parent index.","maximum":9007199254740991,"minimum":-1,"type":"integer"}},"required":["index","parent_index","node_type","node_name","node_value_length","attribute_names"],"type":"object"},"type":"array"},"total_nodes":{"description":"Value for total nodes.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","nodes"],"type":"object"},"frames":{"description":"Value for frames.","items":{"properties":{"frame_id":{"description":"Value for frame id.","type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for parent frame id."},"url":{"description":"Value for url.","type":"string"}},"required":["frame_id","parent_frame_id","url","origin"],"type":"object"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"metadata":{"description":"Value for metadata.","properties":{"agent_hints":{"description":"Value for agent hints.","items":{"properties":{"declaration":{"description":"Value for declaration.","type":"string"},"mechanism":{"description":"Value for mechanism.","enum":["link_rel","dom_link_rel","well_known_resource","response_header"],"type":"string"},"trust":{"const":"page-declared-untrusted","description":"Value for trust.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["mechanism","declaration","url","trust"],"type":"object"},"type":"array"},"dom_urls":{"description":"Value for dom urls.","items":{"properties":{"attribute":{"description":"Value for attribute.","enum":["href","src","action","formaction","poster"],"type":"string"},"destination_scope":{"description":"Value for destination scope.","enum":["approved","outside_policy","unsupported"],"type":"string"},"node_index":{"description":"Value for node index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["node_index","attribute","url","destination_scope"],"type":"object"},"type":"array"},"excluded_dom_urls":{"description":"Value for excluded dom urls.","maximum":9007199254740991,"minimum":0,"type":"integer"},"headers_allowlisted":{"const":true,"description":"Value for headers allowlisted.","type":"boolean"},"responses":{"description":"Value for responses.","items":{"properties":{"content_encoding":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for content encoding."},"content_length":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for content length."},"csp":{"description":"Value for csp.","properties":{"directives":{"description":"Value for directives.","items":{"properties":{"name":{"description":"Exact name used by this operation.","type":"string"},"sources":{"description":"Value for sources.","items":{"properties":{"kind":{"description":"Value for kind.","enum":["keyword","scheme","approved_origin","external_origin","other"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for value."}},"required":["kind","value"],"type":"object"},"type":"array"}},"required":["name","sources"],"type":"object"},"type":"array"},"hash_count":{"description":"Value for hash count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"nonce_count":{"description":"Value for nonce count.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["directives","nonce_count","hash_count"],"type":"object"},"links":{"description":"Value for links.","items":{"properties":{"as":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for as."},"crossorigin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for crossorigin."},"destination_scope":{"description":"Value for destination scope.","enum":["approved","outside_policy","unsupported"],"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for href."},"rel":{"description":"Value for rel.","items":{"type":"string"},"type":"array"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for type."}},"required":["href","destination_scope","rel","as","type","crossorigin"],"type":"object"},"type":"array"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for mime type."},"policies":{"description":"Value for policies.","properties":{"coep":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for coep."},"coop":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for coop."},"corp":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for corp."},"permissions_policy_features":{"description":"Value for permissions policy features.","items":{"type":"string"},"type":"array"},"referrer_policy":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for referrer policy."},"x_content_type_options":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for x content type options."}},"required":["coop","coep","corp","referrer_policy","x_content_type_options","permissions_policy_features"],"type":"object"},"request_id":{"description":"Value for request id.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["request_id","url","mime_type","content_length","content_encoding","csp","links","policies"],"type":"object"},"type":"array"}},"required":["responses","dom_urls","agent_hints","excluded_dom_urls","headers_allowlisted"],"type":"object"},"network":{"description":"Value for network.","properties":{"coverage_started_at":{"description":"Value for coverage started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"prior_activity_available":{"const":false,"description":"Value for prior activity available.","type":"boolean"},"requests":{"description":"Value for requests.","items":{"properties":{"body_shapes":{"description":"Value for body shapes.","properties":{"request":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for request."},"response":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for response."},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","partial","unavailable","truncated"],"type":"string"}},"required":["status","request","response"],"type":"object"},"encoded_data_length":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Value for encoded data length."},"initiator":{"description":"Value for initiator.","properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"type":{"description":"Value for type.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["type","url","line","column"],"type":"object"},"method":{"description":"Value for method.","type":"string"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for mime type."},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"request_id":{"description":"Value for request id.","type":"string"},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for resource type."},"status":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Current lifecycle or verification status."},"url":{"description":"Value for url.","type":"string"}},"required":["request_id","url","origin","method","resource_type","status","mime_type","encoded_data_length","initiator","body_shapes"],"type":"object"},"type":"array"},"websocket_events":{"description":"Value for websocket events.","items":{"properties":{"direction":{"description":"Direction in which to traverse or compare relationships.","enum":["sent","received"],"type":"string"},"opcode":{"description":"Value for opcode.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_bytes":{"description":"Bounded byte count for payload.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_shape":{"anyOf":[{"properties":{"format":{"description":"Declared input artifact format.","enum":["json","text","binary"],"type":"string"},"json_shape":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for json shape."},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["format","json_shape","truncated"],"type":"object"},{"type":"null"}],"description":"Value for payload shape."},"request_id":{"description":"Value for request id.","type":"string"}},"required":["request_id","direction","opcode","payload_bytes","payload_shape"],"type":"object"},"type":"array"}},"required":["requests","websocket_events","coverage_started_at","prior_activity_available"],"type":"object"},"resources":{"description":"Value for resources.","items":{"properties":{"content_size":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Value for content size."},"mime_type":{"description":"Value for mime type.","type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"resource_key":{"description":"Value for resource key.","pattern":"^res_[a-f0-9]{64}$","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["resource_key","url","origin","type","mime_type","content_size"],"type":"object"},"type":"array"},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"scripts":{"description":"Value for scripts.","properties":{"items":{"description":"Value for items.","items":{"properties":{"cdp_hash":{"description":"Value for cdp hash.","type":"string"},"frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for frame id."},"is_module":{"description":"Whether is module.","type":"boolean"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for language."},"length":{"description":"Value for length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"resource_reconciliation":{"description":"Value for resource reconciliation.","oneOf":[{"properties":{"resource_key":{"description":"Value for resource key.","type":"string"},"status":{"const":"exact","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","resource_key"],"type":"object"},{"properties":{"candidate_resource_keys":{"description":"Value for candidate resource keys.","items":{"type":"string"},"type":"array"},"status":{"const":"ambiguous","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","candidate_resource_keys"],"type":"object"},{"properties":{"reason":{"const":"no_exact_sanitized_url","description":"Value for reason.","type":"string"},"status":{"const":"unmatched","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","reason"],"type":"object"}]},"script_key":{"description":"Value for script key.","pattern":"^scr_[a-f0-9]{64}(?:_[0-9]+)?$","type":"string"},"source":{"description":"Value for source.","oneOf":[{"properties":{"included":{"const":false,"description":"Value for included.","type":"boolean"},"reason":{"description":"Value for reason.","type":"string"}},"required":["included","reason"],"type":"object"},{"properties":{"artifact":{"description":"Value for artifact.","properties":{"bytes":{"description":"Value for bytes.","maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","description":"Value for charset.","type":"string"},"media_type":{"description":"Value for media type.","maxLength":256,"minLength":1,"type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},"included":{"const":true,"description":"Value for included.","type":"boolean"}},"required":["included","artifact"],"type":"object"}]},"source_map_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for source map url."},"url":{"description":"Value for url.","type":"string"}},"required":["script_key","url","origin","cdp_hash","length","is_module","language","source_map_url","resource_reconciliation","source"],"type":"object"},"type":"array"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"},"storage":{"description":"Value for storage.","properties":{"cache_names":{"description":"Value for cache names.","items":{"type":"string"},"type":"array"},"content_fingerprints":{"default":[],"description":"Value for content fingerprints.","items":{"properties":{"complete":{"description":"Value for complete.","type":"boolean"},"identity_sha256":{"description":"Exact SHA-256 digest of identity.","pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"description":"Value for scope.","enum":["cookie","local_storage","session_storage","indexed_db_schema","indexed_db_record","cache_entry"],"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of value."}},"required":["scope","identity_sha256","value_sha256","complete"],"type":"object"},"type":"array"},"fingerprint_algorithm":{"const":"sha256","default":"sha256","description":"Value for fingerprint algorithm.","type":"string"},"fingerprints_complete":{"default":false,"description":"Value for fingerprints complete.","type":"boolean"},"indexed_db_names":{"description":"Value for indexed db names.","items":{"type":"string"},"type":"array"},"local_storage_keys":{"description":"Value for local storage keys.","items":{"type":"string"},"type":"array"},"origin":{"description":"Value for origin.","type":"string"},"quota_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Bounded byte count for quota."},"session_storage_keys":{"description":"Value for session storage keys.","items":{"type":"string"},"type":"array"},"usage_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Bounded byte count for usage."},"values_redacted":{"const":true,"description":"Value for values redacted.","type":"boolean"}},"required":["origin","usage_bytes","quota_bytes","local_storage_keys","session_storage_keys","indexed_db_names","cache_names","values_redacted"],"type":"object"},"target":{"description":"Value for target.","properties":{"attached":{"description":"Value for attached.","type":"boolean"},"origin":{"description":"Value for origin.","type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"title":{"description":"Value for title.","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","type","title","url","origin","attached"],"type":"object"},"workers":{"description":"Value for workers.","items":{"properties":{"attached":{"description":"Value for attached.","type":"boolean"},"opener_target_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for opener target id."},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for parent frame id."},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","type","url","origin","attached"],"type":"object"},"type":"array"}},"required":["schema_version","browser","target","capture_window","completeness","frames","dom","accessibility","scripts","resources","network","console","workers","metadata","storage","limitations"],"type":"object"},"webmcp":{"anyOf":[{"properties":{"browser":{"description":"Value for browser.","properties":{"js_version":{"description":"Value for js version.","type":"string"},"product":{"description":"Value for product.","type":"string"},"protocol_version":{"description":"Value for protocol version.","type":"string"},"revision":{"description":"Value for revision.","type":"string"},"user_agent":{"description":"Value for user agent.","type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"completeness":{"description":"Value for completeness.","properties":{"attach_limited_sections":{"description":"Value for attach limited sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"description":"Value for conditions.","items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"description":"Value for dropped events.","properties":{"console_events":{"description":"Value for console events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"description":"Value for network requests.","maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"description":"Value for scripts.","maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"description":"Value for timeline events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"description":"Value for webmcp tools.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"description":"Value for websocket connections.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"description":"Value for websocket frames.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"description":"Value for excluded.","items":{"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for count."},"reason":{"description":"Value for reason.","enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"description":"Value for section.","enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"description":"Value for policy filtered sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"description":"Value for unavailable sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"status":{"description":"Current lifecycle or verification status.","enum":["available","unavailable"],"type":"string"},"target":{"description":"Value for target.","properties":{"origin":{"description":"Value for origin.","type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","url","origin"],"type":"object"},"tools":{"description":"Value for tools.","properties":{"items":{"description":"Value for items.","items":{"properties":{"annotations":{"description":"Value for annotations.","properties":{"autosubmit":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for autosubmit."},"read_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for read only."},"untrusted_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for untrusted content."}},"required":["read_only","untrusted_content","autosubmit"],"type":"object"},"declaration_kind":{"description":"Value for declaration kind.","enum":["declarative","imperative"],"type":"string"},"description":{"description":"Value for description.","type":"string"},"frame_id":{"description":"Value for frame id.","type":"string"},"frame_url":{"description":"Value for frame url.","type":"string"},"input_schema_shape":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for input schema shape."},"name":{"description":"Exact name used by this operation.","type":"string"},"owner_origin":{"description":"Value for owner origin.","type":"string"},"registration_source":{"anyOf":[{"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"url":{"description":"Value for url.","type":"string"}},"required":["url","line","column"],"type":"object"},{"type":"null"}],"description":"Value for registration source."},"tool_key":{"description":"Value for tool key.","pattern":"^webmcp_[a-f0-9]{64}$","type":"string"},"trust":{"const":"page-declared-untrusted","description":"Value for trust.","type":"string"}},"required":["tool_key","name","description","frame_id","frame_url","owner_origin","declaration_kind","input_schema_shape","annotations","registration_source","trust"],"type":"object"},"type":"array"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"}},"required":["schema_version","browser","target","status","tools","completeness","limitations"],"type":"object"},{"type":"null"}],"default":null,"description":"Value for webmcp."}},"required":["inspection"],"type":"object"},"before":{"description":"Earlier passive web-page capture.","properties":{"inspection":{"description":"Value for inspection.","properties":{"accessibility":{"description":"Value for accessibility.","properties":{"nodes":{"description":"Value for nodes.","items":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for description."},"ignored":{"description":"Value for ignored.","type":"boolean"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact name used by this operation."},"node_id":{"description":"Value for node id.","type":"string"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for parent id."},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for role."},"states":{"default":[],"description":"Value for states.","items":{"properties":{"name":{"description":"Exact name used by this operation.","type":"string"},"value":{"anyOf":[{"type":"boolean"},{"type":"number"},{"type":"string"}],"description":"Value for value."}},"required":["name","value"],"type":"object"},"type":"array"}},"required":["node_id","parent_id","role","name","description","ignored"],"type":"object"},"type":"array"},"text_capture":{"description":"Value for text capture.","properties":{"excluded_fields":{"description":"Value for excluded fields.","maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_bytes":{"description":"Bounded byte count for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","truncated","unavailable"],"type":"string"},"truncated_fields":{"description":"Value for truncated fields.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","retained_bytes","excluded_fields","truncated_fields"],"type":"object"},"total_nodes":{"description":"Value for total nodes.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","text_capture","nodes"],"type":"object"},"browser":{"description":"Value for browser.","properties":{"js_version":{"description":"Value for js version.","type":"string"},"product":{"description":"Value for product.","type":"string"},"protocol_version":{"description":"Value for protocol version.","type":"string"},"revision":{"description":"Value for revision.","type":"string"},"user_agent":{"description":"Value for user agent.","type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"capture_window":{"description":"Value for capture window.","properties":{"ended_at":{"description":"Value for ended at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"observation_ms":{"description":"Value for observation ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"started_at":{"description":"Value for started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"}},"required":["started_at","ended_at","observation_ms"],"type":"object"},"completeness":{"description":"Value for completeness.","properties":{"attach_limited_sections":{"description":"Value for attach limited sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"description":"Value for conditions.","items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"description":"Value for dropped events.","properties":{"console_events":{"description":"Value for console events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"description":"Value for network requests.","maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"description":"Value for scripts.","maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"description":"Value for timeline events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"description":"Value for webmcp tools.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"description":"Value for websocket connections.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"description":"Value for websocket frames.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"description":"Value for excluded.","items":{"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for count."},"reason":{"description":"Value for reason.","enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"description":"Value for section.","enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"description":"Value for policy filtered sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"description":"Value for unavailable sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"console":{"description":"Value for console.","properties":{"coverage_started_at":{"description":"Value for coverage started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"events":{"description":"Value for events.","items":{"properties":{"argument_types":{"description":"Value for argument types.","items":{"type":"string"},"type":"array"},"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"text_capture":{"description":"Value for text capture.","properties":{"retained_bytes":{"description":"Bounded byte count for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","truncated"],"type":"string"},"truncated_values":{"description":"Value for truncated values.","maximum":9007199254740991,"minimum":0,"type":"integer"},"values":{"description":"Value for values.","items":{"properties":{"argument_index":{"description":"Value for argument index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"description":"Value for text.","type":"string"},"type":{"description":"Value for type.","type":"string"}},"required":["argument_index","type","text"],"type":"object"},"type":"array"}},"required":["status","values","retained_bytes","truncated_values"],"type":"object"},"timestamp":{"description":"Value for timestamp.","type":"number"},"type":{"description":"Value for type.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["type","timestamp","argument_types","url","line","column","text_capture"],"type":"object"},"type":"array"},"prior_activity_available":{"const":false,"description":"Value for prior activity available.","type":"boolean"}},"required":["events","coverage_started_at","prior_activity_available"],"type":"object"},"dom":{"description":"Value for dom.","properties":{"nodes":{"description":"Value for nodes.","items":{"properties":{"attribute_names":{"description":"Value for attribute names.","items":{"type":"string"},"type":"array"},"index":{"description":"Value for index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_name":{"description":"Value for node name.","type":"string"},"node_type":{"description":"Value for node type.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_value_length":{"description":"Value for node value length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"parent_index":{"description":"Value for parent index.","maximum":9007199254740991,"minimum":-1,"type":"integer"}},"required":["index","parent_index","node_type","node_name","node_value_length","attribute_names"],"type":"object"},"type":"array"},"total_nodes":{"description":"Value for total nodes.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","nodes"],"type":"object"},"frames":{"description":"Value for frames.","items":{"properties":{"frame_id":{"description":"Value for frame id.","type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for parent frame id."},"url":{"description":"Value for url.","type":"string"}},"required":["frame_id","parent_frame_id","url","origin"],"type":"object"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"metadata":{"description":"Value for metadata.","properties":{"agent_hints":{"description":"Value for agent hints.","items":{"properties":{"declaration":{"description":"Value for declaration.","type":"string"},"mechanism":{"description":"Value for mechanism.","enum":["link_rel","dom_link_rel","well_known_resource","response_header"],"type":"string"},"trust":{"const":"page-declared-untrusted","description":"Value for trust.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["mechanism","declaration","url","trust"],"type":"object"},"type":"array"},"dom_urls":{"description":"Value for dom urls.","items":{"properties":{"attribute":{"description":"Value for attribute.","enum":["href","src","action","formaction","poster"],"type":"string"},"destination_scope":{"description":"Value for destination scope.","enum":["approved","outside_policy","unsupported"],"type":"string"},"node_index":{"description":"Value for node index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["node_index","attribute","url","destination_scope"],"type":"object"},"type":"array"},"excluded_dom_urls":{"description":"Value for excluded dom urls.","maximum":9007199254740991,"minimum":0,"type":"integer"},"headers_allowlisted":{"const":true,"description":"Value for headers allowlisted.","type":"boolean"},"responses":{"description":"Value for responses.","items":{"properties":{"content_encoding":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for content encoding."},"content_length":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for content length."},"csp":{"description":"Value for csp.","properties":{"directives":{"description":"Value for directives.","items":{"properties":{"name":{"description":"Exact name used by this operation.","type":"string"},"sources":{"description":"Value for sources.","items":{"properties":{"kind":{"description":"Value for kind.","enum":["keyword","scheme","approved_origin","external_origin","other"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for value."}},"required":["kind","value"],"type":"object"},"type":"array"}},"required":["name","sources"],"type":"object"},"type":"array"},"hash_count":{"description":"Value for hash count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"nonce_count":{"description":"Value for nonce count.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["directives","nonce_count","hash_count"],"type":"object"},"links":{"description":"Value for links.","items":{"properties":{"as":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for as."},"crossorigin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for crossorigin."},"destination_scope":{"description":"Value for destination scope.","enum":["approved","outside_policy","unsupported"],"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for href."},"rel":{"description":"Value for rel.","items":{"type":"string"},"type":"array"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for type."}},"required":["href","destination_scope","rel","as","type","crossorigin"],"type":"object"},"type":"array"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for mime type."},"policies":{"description":"Value for policies.","properties":{"coep":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for coep."},"coop":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for coop."},"corp":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for corp."},"permissions_policy_features":{"description":"Value for permissions policy features.","items":{"type":"string"},"type":"array"},"referrer_policy":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for referrer policy."},"x_content_type_options":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for x content type options."}},"required":["coop","coep","corp","referrer_policy","x_content_type_options","permissions_policy_features"],"type":"object"},"request_id":{"description":"Value for request id.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["request_id","url","mime_type","content_length","content_encoding","csp","links","policies"],"type":"object"},"type":"array"}},"required":["responses","dom_urls","agent_hints","excluded_dom_urls","headers_allowlisted"],"type":"object"},"network":{"description":"Value for network.","properties":{"coverage_started_at":{"description":"Value for coverage started at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"prior_activity_available":{"const":false,"description":"Value for prior activity available.","type":"boolean"},"requests":{"description":"Value for requests.","items":{"properties":{"body_shapes":{"description":"Value for body shapes.","properties":{"request":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for request."},"response":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for response."},"status":{"description":"Current lifecycle or verification status.","enum":["not_approved","included","partial","unavailable","truncated"],"type":"string"}},"required":["status","request","response"],"type":"object"},"encoded_data_length":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Value for encoded data length."},"initiator":{"description":"Value for initiator.","properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"type":{"description":"Value for type.","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for url."}},"required":["type","url","line","column"],"type":"object"},"method":{"description":"Value for method.","type":"string"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for mime type."},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"request_id":{"description":"Value for request id.","type":"string"},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for resource type."},"status":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Current lifecycle or verification status."},"url":{"description":"Value for url.","type":"string"}},"required":["request_id","url","origin","method","resource_type","status","mime_type","encoded_data_length","initiator","body_shapes"],"type":"object"},"type":"array"},"websocket_events":{"description":"Value for websocket events.","items":{"properties":{"direction":{"description":"Direction in which to traverse or compare relationships.","enum":["sent","received"],"type":"string"},"opcode":{"description":"Value for opcode.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_bytes":{"description":"Bounded byte count for payload.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_shape":{"anyOf":[{"properties":{"format":{"description":"Declared input artifact format.","enum":["json","text","binary"],"type":"string"},"json_shape":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for json shape."},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["format","json_shape","truncated"],"type":"object"},{"type":"null"}],"description":"Value for payload shape."},"request_id":{"description":"Value for request id.","type":"string"}},"required":["request_id","direction","opcode","payload_bytes","payload_shape"],"type":"object"},"type":"array"}},"required":["requests","websocket_events","coverage_started_at","prior_activity_available"],"type":"object"},"resources":{"description":"Value for resources.","items":{"properties":{"content_size":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Value for content size."},"mime_type":{"description":"Value for mime type.","type":"string"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"resource_key":{"description":"Value for resource key.","pattern":"^res_[a-f0-9]{64}$","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["resource_key","url","origin","type","mime_type","content_size"],"type":"object"},"type":"array"},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"scripts":{"description":"Value for scripts.","properties":{"items":{"description":"Value for items.","items":{"properties":{"cdp_hash":{"description":"Value for cdp hash.","type":"string"},"frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for frame id."},"is_module":{"description":"Whether is module.","type":"boolean"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for language."},"length":{"description":"Value for length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"resource_reconciliation":{"description":"Value for resource reconciliation.","oneOf":[{"properties":{"resource_key":{"description":"Value for resource key.","type":"string"},"status":{"const":"exact","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","resource_key"],"type":"object"},{"properties":{"candidate_resource_keys":{"description":"Value for candidate resource keys.","items":{"type":"string"},"type":"array"},"status":{"const":"ambiguous","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","candidate_resource_keys"],"type":"object"},{"properties":{"reason":{"const":"no_exact_sanitized_url","description":"Value for reason.","type":"string"},"status":{"const":"unmatched","description":"Current lifecycle or verification status.","type":"string"}},"required":["status","reason"],"type":"object"}]},"script_key":{"description":"Value for script key.","pattern":"^scr_[a-f0-9]{64}(?:_[0-9]+)?$","type":"string"},"source":{"description":"Value for source.","oneOf":[{"properties":{"included":{"const":false,"description":"Value for included.","type":"boolean"},"reason":{"description":"Value for reason.","type":"string"}},"required":["included","reason"],"type":"object"},{"properties":{"artifact":{"description":"Value for artifact.","properties":{"bytes":{"description":"Value for bytes.","maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","description":"Value for charset.","type":"string"},"media_type":{"description":"Value for media type.","maxLength":256,"minLength":1,"type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},"included":{"const":true,"description":"Value for included.","type":"boolean"}},"required":["included","artifact"],"type":"object"}]},"source_map_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for source map url."},"url":{"description":"Value for url.","type":"string"}},"required":["script_key","url","origin","cdp_hash","length","is_module","language","source_map_url","resource_reconciliation","source"],"type":"object"},"type":"array"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"},"storage":{"description":"Value for storage.","properties":{"cache_names":{"description":"Value for cache names.","items":{"type":"string"},"type":"array"},"content_fingerprints":{"default":[],"description":"Value for content fingerprints.","items":{"properties":{"complete":{"description":"Value for complete.","type":"boolean"},"identity_sha256":{"description":"Exact SHA-256 digest of identity.","pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"description":"Value for scope.","enum":["cookie","local_storage","session_storage","indexed_db_schema","indexed_db_record","cache_entry"],"type":"string"},"value_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of value."}},"required":["scope","identity_sha256","value_sha256","complete"],"type":"object"},"type":"array"},"fingerprint_algorithm":{"const":"sha256","default":"sha256","description":"Value for fingerprint algorithm.","type":"string"},"fingerprints_complete":{"default":false,"description":"Value for fingerprints complete.","type":"boolean"},"indexed_db_names":{"description":"Value for indexed db names.","items":{"type":"string"},"type":"array"},"local_storage_keys":{"description":"Value for local storage keys.","items":{"type":"string"},"type":"array"},"origin":{"description":"Value for origin.","type":"string"},"quota_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Bounded byte count for quota."},"session_storage_keys":{"description":"Value for session storage keys.","items":{"type":"string"},"type":"array"},"usage_bytes":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"description":"Bounded byte count for usage."},"values_redacted":{"const":true,"description":"Value for values redacted.","type":"boolean"}},"required":["origin","usage_bytes","quota_bytes","local_storage_keys","session_storage_keys","indexed_db_names","cache_names","values_redacted"],"type":"object"},"target":{"description":"Value for target.","properties":{"attached":{"description":"Value for attached.","type":"boolean"},"origin":{"description":"Value for origin.","type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"title":{"description":"Value for title.","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","type","title","url","origin","attached"],"type":"object"},"workers":{"description":"Value for workers.","items":{"properties":{"attached":{"description":"Value for attached.","type":"boolean"},"opener_target_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for opener target id."},"origin":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for origin."},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Value for parent frame id."},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"type":{"description":"Value for type.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","type","url","origin","attached"],"type":"object"},"type":"array"}},"required":["schema_version","browser","target","capture_window","completeness","frames","dom","accessibility","scripts","resources","network","console","workers","metadata","storage","limitations"],"type":"object"},"webmcp":{"anyOf":[{"properties":{"browser":{"description":"Value for browser.","properties":{"js_version":{"description":"Value for js version.","type":"string"},"product":{"description":"Value for product.","type":"string"},"protocol_version":{"description":"Value for protocol version.","type":"string"},"revision":{"description":"Value for revision.","type":"string"},"user_agent":{"description":"Value for user agent.","type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"completeness":{"description":"Value for completeness.","properties":{"attach_limited_sections":{"description":"Value for attach limited sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"description":"Value for conditions.","items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"description":"Value for dropped events.","properties":{"console_events":{"description":"Value for console events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"description":"Value for network requests.","maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"description":"Value for scripts.","maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"description":"Value for timeline events.","maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"description":"Value for webmcp tools.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"description":"Value for websocket connections.","maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"description":"Value for websocket frames.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"description":"Value for excluded.","items":{"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for count."},"reason":{"description":"Value for reason.","enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"description":"Value for section.","enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"description":"Value for policy filtered sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"description":"Value for unavailable sections.","items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"status":{"description":"Current lifecycle or verification status.","enum":["available","unavailable"],"type":"string"},"target":{"description":"Value for target.","properties":{"origin":{"description":"Value for origin.","type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","type":"string"},"url":{"description":"Value for url.","type":"string"}},"required":["target_id","url","origin"],"type":"object"},"tools":{"description":"Value for tools.","properties":{"items":{"description":"Value for items.","items":{"properties":{"annotations":{"description":"Value for annotations.","properties":{"autosubmit":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for autosubmit."},"read_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for read only."},"untrusted_content":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for untrusted content."}},"required":["read_only","untrusted_content","autosubmit"],"type":"object"},"declaration_kind":{"description":"Value for declaration kind.","enum":["declarative","imperative"],"type":"string"},"description":{"description":"Value for description.","type":"string"},"frame_id":{"description":"Value for frame id.","type":"string"},"frame_url":{"description":"Value for frame url.","type":"string"},"input_schema_shape":{"anyOf":[{"properties":{"max_depth_observed":{"description":"Maximum permitted depth observed for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"node_count":{"description":"Value for node count.","maximum":9007199254740991,"minimum":1,"type":"integer"},"properties":{"description":"Value for properties.","items":{"properties":{"observations":{"description":"Value for observations.","maximum":9007199254740991,"minimum":1,"type":"integer"},"path":{"description":"Local filesystem path used by this operation.","type":"string"},"types":{"description":"Value for types.","items":{"enum":["object","array","string","number","boolean","null"],"type":"string"},"minItems":1,"type":"array"}},"required":["path","types","observations"],"type":"object"},"type":"array"},"root_type":{"description":"Value for root type.","enum":["object","array","string","number","boolean","null"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["root_type","node_count","max_depth_observed","properties","truncated"],"type":"object"},{"type":"null"}],"description":"Value for input schema shape."},"name":{"description":"Exact name used by this operation.","type":"string"},"owner_origin":{"description":"Value for owner origin.","type":"string"},"registration_source":{"anyOf":[{"properties":{"column":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for column."},"line":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for line."},"url":{"description":"Value for url.","type":"string"}},"required":["url","line","column"],"type":"object"},{"type":"null"}],"description":"Value for registration source."},"tool_key":{"description":"Value for tool key.","pattern":"^webmcp_[a-f0-9]{64}$","type":"string"},"trust":{"const":"page-declared-untrusted","description":"Value for trust.","type":"string"}},"required":["tool_key","name","description","frame_id","frame_url","owner_origin","declaration_kind","input_schema_shape","annotations","registration_source","trust"],"type":"object"},"type":"array"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"}},"required":["schema_version","browser","target","status","tools","completeness","limitations"],"type":"object"},{"type":"null"}],"default":null,"description":"Value for webmcp."}},"required":["inspection"],"type":"object"},"max_changes":{"default":2000,"description":"Maximum normalized change records to retain.","maximum":20000,"minimum":1,"type":"integer"}},"required":["before","after"],"type":"object"},{"additionalProperties":false,"properties":{"after_scenario":{"additionalProperties":false,"description":"Later browser scenario capture.","properties":{"browser":{"additionalProperties":false,"description":"Value for browser.","properties":{"cleanup":{"description":"Value for cleanup.","enum":["terminated-owned-process","disconnected-external"],"type":"string"},"mode":{"description":"Operation mode that selects the requested behavior.","enum":["launch","connect"],"type":"string"},"process_ownership":{"description":"Value for process ownership.","enum":["provider-owned","external"],"type":"string"},"product":{"description":"Value for product.","maxLength":1024,"minLength":1,"type":"string"},"version":{"description":"Value for version.","maxLength":256,"minLength":1,"type":"string"}},"required":["mode","process_ownership","cleanup","product","version"],"type":"object"},"completeness":{"description":"Value for completeness.","oneOf":[{"additionalProperties":false,"properties":{"equality_eligible":{"const":true,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","prefixItems":[],"type":"array"},"status":{"const":"complete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"},"status":{"const":"incomplete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"const":"truncated","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"}]},"duration_ms":{"description":"Value for duration ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"events":{"additionalProperties":false,"description":"Value for events.","properties":{"dropped":{"description":"Value for dropped.","maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"description":"Value for items.","items":{"anyOf":[{"additionalProperties":false,"properties":{"kind":{"const":"console","description":"Value for kind.","type":"string"},"level":{"description":"Value for level.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"description":"Value for text.","maxLength":65536,"type":"string"},"url":{"anyOf":[{"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}],"description":"Value for url."}},"required":["sequence","step_index","kind","level","text","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"page-error","description":"Value for kind.","type":"string"},"message":{"description":"Value for message.","maxLength":65536,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"stack":{"anyOf":[{"maxLength":262144,"type":"string"},{"type":"null"}],"description":"Value for stack."},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","step_index","kind","message","stack"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"description":"Value for failure.","type":"null"},"header_names":{"description":"Value for header names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"const":"request","description":"Value for kind.","type":"string"},"method":{"description":"Value for method.","maxLength":32,"minLength":1,"type":"string"},"resource_type":{"description":"Value for resource type.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","type":"null"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","method","url","resource_type","header_names","kind","status","failure"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"description":"Value for failure.","type":"null"},"header_names":{"description":"Value for header names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"const":"response","description":"Value for kind.","type":"string"},"method":{"description":"Value for method.","maxLength":32,"minLength":1,"type":"string"},"resource_type":{"description":"Value for resource type.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","maximum":599,"minimum":100,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","method","url","resource_type","header_names","kind","status","failure"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"description":"Value for failure.","maxLength":1024,"minLength":1,"type":"string"},"header_names":{"description":"Value for header names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"const":"request-failed","description":"Value for kind.","type":"string"},"method":{"description":"Value for method.","maxLength":32,"minLength":1,"type":"string"},"resource_type":{"description":"Value for resource type.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","type":"null"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","method","url","resource_type","header_names","kind","status","failure"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["websocket-opened","websocket-closed"],"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["websocket-frame-sent","websocket-frame-received"],"type":"string"},"payload_bytes":{"description":"Bounded byte count for payload.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_text":{"description":"Value for payload text.","maxLength":65536,"type":"string"},"payload_type":{"const":"text","description":"Value for payload type.","type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"description":"Value for truncated.","type":"boolean"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url","payload_bytes","truncated","payload_type","payload_text"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["websocket-frame-sent","websocket-frame-received"],"type":"string"},"payload_bytes":{"description":"Bounded byte count for payload.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_text":{"description":"Value for payload text.","type":"null"},"payload_type":{"const":"binary","description":"Value for payload type.","type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"description":"Value for truncated.","type":"boolean"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url","payload_bytes","truncated","payload_type","payload_text"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["frame-attached","frame-detached","frame-navigated","worker-created","worker-closed","popup-opened","popup-closed"],"type":"string"},"name":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}],"description":"Exact name used by this operation."},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}],"description":"Value for url."}},"required":["sequence","step_index","kind","url","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"download-cancelled","description":"Value for kind.","type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"suggested_filename":{"description":"Value for suggested filename.","maxLength":1024,"type":"string"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","suggested_filename","url"],"type":"object"}]},"maxItems":100000,"type":"array"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["retained","dropped","items"],"type":"object"},"limitations":{"description":"Value for limitations.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"scenario":{"additionalProperties":false,"description":"Value for scenario.","properties":{"action_count":{"description":"Value for action count.","maximum":128,"minimum":1,"type":"integer"},"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"secret_references":{"description":"Value for secret references.","items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"start_origin":{"description":"Value for start origin.","maxLength":2048,"minLength":1,"type":"string"}},"required":["start_origin","allowed_origins","action_count","secret_references"],"type":"object"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"steps":{"description":"Value for steps.","items":{"anyOf":[{"additionalProperties":false,"properties":{"action":{"description":"Value for action.","maxLength":64,"minLength":1,"type":"string"},"after_url":{"description":"Value for after url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"artifacts":{"additionalProperties":false,"description":"Value for artifacts.","properties":{"accessibility":{"description":"Value for accessibility.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"dom":{"description":"Value for dom.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"history":{"description":"Value for history.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"current_url":{"description":"Value for current url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"length":{"description":"Value for length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"navigation_entries":{"description":"Value for navigation entries.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"type":{"description":"Value for type.","enum":["navigate","reload","back_forward","prerender","unknown"],"type":"string"}},"required":["type","name"],"type":"object"},"maxItems":256,"type":"array"}},"required":["length","current_url","navigation_entries"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"screenshot":{"description":"Value for screenshot.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"description":"Value for data base64.","maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","description":"Value for media type.","type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"storage":{"description":"Value for storage.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"cookies":{"description":"Value for cookies.","items":{"oneOf":[{"additionalProperties":false,"properties":{"domain":{"description":"Value for domain.","maxLength":2048,"type":"string"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"domain":{"description":"Value for domain.","maxLength":2048,"type":"string"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"local_storage":{"description":"Value for local storage.","items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"session_storage":{"description":"Value for session storage.","items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"}},"required":["cookies","local_storage","session_storage"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"url":{"description":"Value for url.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]}},"required":["screenshot","dom","accessibility","url","history","storage"],"type":"object"},"before_url":{"description":"Value for before url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"completeness":{"description":"Value for completeness.","oneOf":[{"additionalProperties":false,"properties":{"equality_eligible":{"const":true,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","prefixItems":[],"type":"array"},"status":{"const":"complete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"},"status":{"const":"incomplete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"const":"truncated","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"}]},"elapsed_ms":{"description":"Value for elapsed ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"description":"Structured, caller-actionable error when the operation fails.","type":"null"},"event_sequence_end":{"description":"Value for event sequence end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"event_sequence_start":{"description":"Value for event sequence start.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"const":"completed","description":"Current lifecycle or verification status.","type":"string"},"step_id":{"description":"Value for step id.","maxLength":64,"minLength":1,"type":"string"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["step_index","step_id","action","elapsed_ms","before_url","after_url","event_sequence_start","event_sequence_end","artifacts","completeness","status","error"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"description":"Value for action.","maxLength":64,"minLength":1,"type":"string"},"after_url":{"description":"Value for after url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"artifacts":{"additionalProperties":false,"description":"Value for artifacts.","properties":{"accessibility":{"description":"Value for accessibility.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"dom":{"description":"Value for dom.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"history":{"description":"Value for history.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"current_url":{"description":"Value for current url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"length":{"description":"Value for length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"navigation_entries":{"description":"Value for navigation entries.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"type":{"description":"Value for type.","enum":["navigate","reload","back_forward","prerender","unknown"],"type":"string"}},"required":["type","name"],"type":"object"},"maxItems":256,"type":"array"}},"required":["length","current_url","navigation_entries"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"screenshot":{"description":"Value for screenshot.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"description":"Value for data base64.","maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","description":"Value for media type.","type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"storage":{"description":"Value for storage.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"cookies":{"description":"Value for cookies.","items":{"oneOf":[{"additionalProperties":false,"properties":{"domain":{"description":"Value for domain.","maxLength":2048,"type":"string"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"domain":{"description":"Value for domain.","maxLength":2048,"type":"string"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"local_storage":{"description":"Value for local storage.","items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"session_storage":{"description":"Value for session storage.","items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"}},"required":["cookies","local_storage","session_storage"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"url":{"description":"Value for url.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]}},"required":["screenshot","dom","accessibility","url","history","storage"],"type":"object"},"before_url":{"description":"Value for before url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"completeness":{"description":"Value for completeness.","oneOf":[{"additionalProperties":false,"properties":{"equality_eligible":{"const":true,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","prefixItems":[],"type":"array"},"status":{"const":"complete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"},"status":{"const":"incomplete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"const":"truncated","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"}]},"elapsed_ms":{"description":"Value for elapsed ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"description":"Structured, caller-actionable error when the operation fails.","maxLength":4096,"type":"string"},"event_sequence_end":{"description":"Value for event sequence end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"event_sequence_start":{"description":"Value for event sequence start.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["failed","cancelled"],"type":"string"},"step_id":{"description":"Value for step id.","maxLength":64,"minLength":1,"type":"string"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["step_index","step_id","action","elapsed_ms","before_url","after_url","event_sequence_start","event_sequence_end","artifacts","completeness","status","error"],"type":"object"}]},"maxItems":129,"minItems":1,"type":"array"}},"required":["schema_version","browser","scenario","duration_ms","steps","events","completeness","limitations"],"type":"object"},"before_scenario":{"additionalProperties":false,"description":"Earlier browser scenario capture.","properties":{"browser":{"additionalProperties":false,"description":"Value for browser.","properties":{"cleanup":{"description":"Value for cleanup.","enum":["terminated-owned-process","disconnected-external"],"type":"string"},"mode":{"description":"Operation mode that selects the requested behavior.","enum":["launch","connect"],"type":"string"},"process_ownership":{"description":"Value for process ownership.","enum":["provider-owned","external"],"type":"string"},"product":{"description":"Value for product.","maxLength":1024,"minLength":1,"type":"string"},"version":{"description":"Value for version.","maxLength":256,"minLength":1,"type":"string"}},"required":["mode","process_ownership","cleanup","product","version"],"type":"object"},"completeness":{"description":"Value for completeness.","oneOf":[{"additionalProperties":false,"properties":{"equality_eligible":{"const":true,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","prefixItems":[],"type":"array"},"status":{"const":"complete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"},"status":{"const":"incomplete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"const":"truncated","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"}]},"duration_ms":{"description":"Value for duration ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"events":{"additionalProperties":false,"description":"Value for events.","properties":{"dropped":{"description":"Value for dropped.","maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"description":"Value for items.","items":{"anyOf":[{"additionalProperties":false,"properties":{"kind":{"const":"console","description":"Value for kind.","type":"string"},"level":{"description":"Value for level.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"description":"Value for text.","maxLength":65536,"type":"string"},"url":{"anyOf":[{"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}],"description":"Value for url."}},"required":["sequence","step_index","kind","level","text","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"page-error","description":"Value for kind.","type":"string"},"message":{"description":"Value for message.","maxLength":65536,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"stack":{"anyOf":[{"maxLength":262144,"type":"string"},{"type":"null"}],"description":"Value for stack."},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","step_index","kind","message","stack"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"description":"Value for failure.","type":"null"},"header_names":{"description":"Value for header names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"const":"request","description":"Value for kind.","type":"string"},"method":{"description":"Value for method.","maxLength":32,"minLength":1,"type":"string"},"resource_type":{"description":"Value for resource type.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","type":"null"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","method","url","resource_type","header_names","kind","status","failure"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"description":"Value for failure.","type":"null"},"header_names":{"description":"Value for header names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"const":"response","description":"Value for kind.","type":"string"},"method":{"description":"Value for method.","maxLength":32,"minLength":1,"type":"string"},"resource_type":{"description":"Value for resource type.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","maximum":599,"minimum":100,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","method","url","resource_type","header_names","kind","status","failure"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"description":"Value for failure.","maxLength":1024,"minLength":1,"type":"string"},"header_names":{"description":"Value for header names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"const":"request-failed","description":"Value for kind.","type":"string"},"method":{"description":"Value for method.","maxLength":32,"minLength":1,"type":"string"},"resource_type":{"description":"Value for resource type.","maxLength":64,"minLength":1,"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","type":"null"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","method","url","resource_type","header_names","kind","status","failure"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["websocket-opened","websocket-closed"],"type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["websocket-frame-sent","websocket-frame-received"],"type":"string"},"payload_bytes":{"description":"Bounded byte count for payload.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_text":{"description":"Value for payload text.","maxLength":65536,"type":"string"},"payload_type":{"const":"text","description":"Value for payload type.","type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"description":"Value for truncated.","type":"boolean"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url","payload_bytes","truncated","payload_type","payload_text"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["websocket-frame-sent","websocket-frame-received"],"type":"string"},"payload_bytes":{"description":"Bounded byte count for payload.","maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_text":{"description":"Value for payload text.","type":"null"},"payload_type":{"const":"binary","description":"Value for payload type.","type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"description":"Value for truncated.","type":"boolean"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url","payload_bytes","truncated","payload_type","payload_text"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"description":"Value for kind.","enum":["frame-attached","frame-detached","frame-navigated","worker-created","worker-closed","popup-opened","popup-closed"],"type":"string"},"name":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}],"description":"Exact name used by this operation."},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}],"description":"Value for url."}},"required":["sequence","step_index","kind","url","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"download-cancelled","description":"Value for kind.","type":"string"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"},"suggested_filename":{"description":"Value for suggested filename.","maxLength":1024,"type":"string"},"url":{"description":"Value for url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","suggested_filename","url"],"type":"object"}]},"maxItems":100000,"type":"array"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["retained","dropped","items"],"type":"object"},"limitations":{"description":"Value for limitations.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"scenario":{"additionalProperties":false,"description":"Value for scenario.","properties":{"action_count":{"description":"Value for action count.","maximum":128,"minimum":1,"type":"integer"},"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"secret_references":{"description":"Value for secret references.","items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"start_origin":{"description":"Value for start origin.","maxLength":2048,"minLength":1,"type":"string"}},"required":["start_origin","allowed_origins","action_count","secret_references"],"type":"object"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"steps":{"description":"Value for steps.","items":{"anyOf":[{"additionalProperties":false,"properties":{"action":{"description":"Value for action.","maxLength":64,"minLength":1,"type":"string"},"after_url":{"description":"Value for after url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"artifacts":{"additionalProperties":false,"description":"Value for artifacts.","properties":{"accessibility":{"description":"Value for accessibility.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"dom":{"description":"Value for dom.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"history":{"description":"Value for history.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"current_url":{"description":"Value for current url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"length":{"description":"Value for length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"navigation_entries":{"description":"Value for navigation entries.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"type":{"description":"Value for type.","enum":["navigate","reload","back_forward","prerender","unknown"],"type":"string"}},"required":["type","name"],"type":"object"},"maxItems":256,"type":"array"}},"required":["length","current_url","navigation_entries"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"screenshot":{"description":"Value for screenshot.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"description":"Value for data base64.","maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","description":"Value for media type.","type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"storage":{"description":"Value for storage.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"cookies":{"description":"Value for cookies.","items":{"oneOf":[{"additionalProperties":false,"properties":{"domain":{"description":"Value for domain.","maxLength":2048,"type":"string"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"domain":{"description":"Value for domain.","maxLength":2048,"type":"string"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"local_storage":{"description":"Value for local storage.","items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"session_storage":{"description":"Value for session storage.","items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"}},"required":["cookies","local_storage","session_storage"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"url":{"description":"Value for url.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]}},"required":["screenshot","dom","accessibility","url","history","storage"],"type":"object"},"before_url":{"description":"Value for before url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"completeness":{"description":"Value for completeness.","oneOf":[{"additionalProperties":false,"properties":{"equality_eligible":{"const":true,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","prefixItems":[],"type":"array"},"status":{"const":"complete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"},"status":{"const":"incomplete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"const":"truncated","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"}]},"elapsed_ms":{"description":"Value for elapsed ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"description":"Structured, caller-actionable error when the operation fails.","type":"null"},"event_sequence_end":{"description":"Value for event sequence end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"event_sequence_start":{"description":"Value for event sequence start.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"const":"completed","description":"Current lifecycle or verification status.","type":"string"},"step_id":{"description":"Value for step id.","maxLength":64,"minLength":1,"type":"string"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["step_index","step_id","action","elapsed_ms","before_url","after_url","event_sequence_start","event_sequence_end","artifacts","completeness","status","error"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"description":"Value for action.","maxLength":64,"minLength":1,"type":"string"},"after_url":{"description":"Value for after url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"artifacts":{"additionalProperties":false,"description":"Value for artifacts.","properties":{"accessibility":{"description":"Value for accessibility.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"dom":{"description":"Value for dom.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"description":"Value for text.","maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"history":{"description":"Value for history.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"current_url":{"description":"Value for current url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"length":{"description":"Value for length.","maximum":9007199254740991,"minimum":0,"type":"integer"},"navigation_entries":{"description":"Value for navigation entries.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"type":{"description":"Value for type.","enum":["navigate","reload","back_forward","prerender","unknown"],"type":"string"}},"required":["type","name"],"type":"object"},"maxItems":256,"type":"array"}},"required":["length","current_url","navigation_entries"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"screenshot":{"description":"Value for screenshot.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"bytes":{"description":"Value for bytes.","maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"description":"Value for data base64.","maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","description":"Value for media type.","type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"storage":{"description":"Value for storage.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"additionalProperties":false,"description":"Value for value.","properties":{"cookies":{"description":"Value for cookies.","items":{"oneOf":[{"additionalProperties":false,"properties":{"domain":{"description":"Value for domain.","maxLength":2048,"type":"string"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"domain":{"description":"Value for domain.","maxLength":2048,"type":"string"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"local_storage":{"description":"Value for local storage.","items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"session_storage":{"description":"Value for session storage.","items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"type":"string"},"value_sha256":{"description":"Exact SHA-256 digest of value.","type":"null"},"value_state":{"const":"redacted-secret","description":"Value for value state.","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"}},"required":["cookies","local_storage","session_storage"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"url":{"description":"Value for url.","oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","description":"Value for state.","type":"string"},"value":{"description":"Value for value.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","description":"Value for state.","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","description":"Value for state.","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"description":"Value for observed.","maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"},"retained":{"description":"Value for retained.","maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","description":"Value for state.","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]}},"required":["screenshot","dom","accessibility","url","history","storage"],"type":"object"},"before_url":{"description":"Value for before url.","properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}],"description":"Value for origin."},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"description":"Value for redacted.","type":"boolean"},"url":{"description":"Value for url.","maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"completeness":{"description":"Value for completeness.","oneOf":[{"additionalProperties":false,"properties":{"equality_eligible":{"const":true,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","prefixItems":[],"type":"array"},"status":{"const":"complete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"},"status":{"const":"incomplete","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"description":"Value for equality eligible.","type":"boolean"},"missing_sections":{"description":"Value for missing sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"const":"truncated","description":"Current lifecycle or verification status.","type":"string"},"truncated_sections":{"description":"Value for truncated sections.","items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"}]},"elapsed_ms":{"description":"Value for elapsed ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"description":"Structured, caller-actionable error when the operation fails.","maxLength":4096,"type":"string"},"event_sequence_end":{"description":"Value for event sequence end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"event_sequence_start":{"description":"Value for event sequence start.","maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["failed","cancelled"],"type":"string"},"step_id":{"description":"Value for step id.","maxLength":64,"minLength":1,"type":"string"},"step_index":{"description":"Value for step index.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["step_index","step_id","action","elapsed_ms","before_url","after_url","event_sequence_start","event_sequence_end","artifacts","completeness","status","error"],"type":"object"}]},"maxItems":129,"minItems":1,"type":"array"}},"required":["schema_version","browser","scenario","duration_ms","steps","events","completeness","limitations"],"type":"object"},"max_changes":{"default":2000,"description":"Maximum normalized change records to retain.","maximum":20000,"minimum":1,"type":"integer"},"normalization":{"additionalProperties":false,"default":{"rules":[]},"description":"Exact-literal normalization policy.","properties":{"rules":{"default":[],"description":"Value for rules.","items":{"additionalProperties":false,"properties":{"artifacts":{"description":"Artifact families whose durable string fields use this rule.","items":{"enum":["action_state","dom","accessibility","url","history","storage","events"],"type":"string"},"maxItems":7,"minItems":1,"type":"array"},"match":{"description":"Exact public literal to replace; regular expressions are not used.","maxLength":4096,"minLength":1,"type":"string"},"replacement":{"description":"Recorded replacement text used in normalized comparison.","maxLength":4096,"type":"string"},"rule_id":{"description":"Stable rule identity; rules execute in rule_id order.","maxLength":64,"minLength":1,"type":"string"}},"required":["rule_id","artifacts","match","replacement"],"type":"object"},"maxItems":128,"type":"array"}},"type":"object"}},"required":["before_scenario","after_scenario"],"type":"object"}],"examples":[{"after_scenario":{"browser":{"cleanup":"disconnected-external","mode":"connect","process_ownership":"external","product":"Chromium","version":"149"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"duration_ms":10,"events":{"dropped":0,"items":[],"retained":0},"limitations":[],"scenario":{"action_count":1,"allowed_origins":["https://app.example.test"],"secret_references":[],"start_origin":"https://app.example.test"},"schema_version":1,"steps":[{"action":"scenario_start","after_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"artifacts":{"accessibility":{"state":"not_requested"},"dom":{"state":"not_requested"},"history":{"state":"not_requested"},"screenshot":{"state":"not_requested"},"storage":{"state":"not_requested"},"url":{"state":"not_requested"}},"before_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"elapsed_ms":0,"error":null,"event_sequence_end":0,"event_sequence_start":1,"status":"completed","step_id":"scenario_start","step_index":0},{"action":"click","after_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"artifacts":{"accessibility":{"state":"not_requested"},"dom":{"state":"not_requested"},"history":{"state":"not_requested"},"screenshot":{"state":"not_requested"},"storage":{"state":"not_requested"},"url":{"state":"not_requested"}},"before_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"elapsed_ms":10,"error":null,"event_sequence_end":0,"event_sequence_start":1,"status":"completed","step_id":"open-settings","step_index":1}]},"before_scenario":{"browser":{"cleanup":"disconnected-external","mode":"connect","process_ownership":"external","product":"Chromium","version":"149"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"duration_ms":10,"events":{"dropped":0,"items":[],"retained":0},"limitations":[],"scenario":{"action_count":1,"allowed_origins":["https://app.example.test"],"secret_references":[],"start_origin":"https://app.example.test"},"schema_version":1,"steps":[{"action":"scenario_start","after_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"artifacts":{"accessibility":{"state":"not_requested"},"dom":{"state":"not_requested"},"history":{"state":"not_requested"},"screenshot":{"state":"not_requested"},"storage":{"state":"not_requested"},"url":{"state":"not_requested"}},"before_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"elapsed_ms":0,"error":null,"event_sequence_end":0,"event_sequence_start":1,"status":"completed","step_id":"scenario_start","step_index":0},{"action":"click","after_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"artifacts":{"accessibility":{"state":"not_requested"},"dom":{"state":"not_requested"},"history":{"state":"not_requested"},"screenshot":{"state":"not_requested"},"storage":{"state":"not_requested"},"url":{"state":"not_requested"}},"before_url":{"origin":"https://app.example.test","query_parameter_names":[],"redacted":false,"url":"https://app.example.test/"},"completeness":{"equality_eligible":true,"missing_sections":[],"status":"complete","truncated_sections":[]},"elapsed_ms":10,"error":null,"event_sequence_end":0,"event_sequence_start":1,"status":"completed","step_id":"open-settings","step_index":1}]},"max_changes":2000,"normalization":{"rules":[{"artifacts":["dom","accessibility"],"match":"build-123","replacement":"[BUILD_ID]","rule_id":"volatile-build-id"}]}}],"type":"object"},"kind":"browser-provider","name":"compare_web_captures","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"additionalProperties":false,"properties":{"alignment":{"additionalProperties":false,"properties":{"after_only":{"items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":129,"type":"array"},"aligned_steps":{"maximum":129,"minimum":0,"type":"integer"},"before_only":{"items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":129,"type":"array"},"failures":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["duplicate_before_step_id","duplicate_after_step_id","missing_before_step","missing_after_step","action_mismatch","capture_context_mismatch"],"type":"string"},"reason":{"maxLength":2048,"minLength":1,"type":"string"},"step_id":{"anyOf":[{"maxLength":64,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["code","step_id","reason"],"type":"object"},"maxItems":520,"type":"array"},"status":{"enum":["aligned","partial","failed"],"type":"string"}},"required":["status","aligned_steps","before_only","after_only","failures"],"type":"object"},"artifact_diffs":{"additionalProperties":false,"properties":{"omitted":{"maximum":1032,"minimum":0,"type":"integer"},"retained":{"maximum":1032,"minimum":0,"type":"integer"},"total":{"maximum":1032,"minimum":0,"type":"integer"}},"required":["total","retained","omitted"],"type":"object"},"comparison_kind":{"const":"browser_scenario","type":"string"},"limitations":{"items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"normalization":{"additionalProperties":false,"properties":{"built_in_rules":{"items":{"enum":["ignore_step_elapsed_ms","ignore_event_sequence","ignore_event_step_index","compare_screenshot_content_digest","compare_normalized_text_content"],"type":"string"},"maxItems":5,"minItems":5,"type":"array"},"rules":{"items":{"additionalProperties":false,"properties":{"artifacts":{"description":"Artifact families whose durable string fields use this rule.","items":{"enum":["action_state","dom","accessibility","url","history","storage","events"],"type":"string"},"maxItems":7,"minItems":1,"type":"array"},"match":{"description":"Exact public literal to replace; regular expressions are not used.","maxLength":4096,"minLength":1,"type":"string"},"replacement":{"description":"Recorded replacement text used in normalized comparison.","maxLength":4096,"type":"string"},"rule_id":{"description":"Stable rule identity; rules execute in rule_id order.","maxLength":64,"minLength":1,"type":"string"}},"required":["rule_id","artifacts","match","replacement"],"type":"object"},"maxItems":128,"type":"array"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["built_in_rules","rules","sha256"],"type":"object"},"overall_status":{"enum":["changed","unchanged","unknown"],"type":"string"},"schema_version":{"const":1,"type":"number"},"steps":{"items":{"additionalProperties":false,"properties":{"after_action":{"maxLength":64,"minLength":1,"type":"string"},"after_step_index":{"maximum":128,"minimum":0,"type":"integer"},"artifact_diffs":{"items":{"additionalProperties":false,"properties":{"after_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"after_state":{"enum":["captured","not_requested","missing","truncated"],"type":"string"},"artifact":{"enum":["action_state","screenshot","dom","accessibility","url","history","storage","events"],"type":"string"},"before_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"before_state":{"enum":["captured","not_requested","missing","truncated"],"type":"string"},"reason":{"anyOf":[{"maxLength":2048,"minLength":1,"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unknown"],"type":"string"}},"required":["artifact","status","before_state","after_state","before_sha256","after_sha256","reason"],"type":"object"},"maxItems":8,"type":"array"},"before_action":{"maxLength":64,"minLength":1,"type":"string"},"before_step_index":{"maximum":128,"minimum":0,"type":"integer"},"omitted_artifact_diffs":{"maximum":8,"minimum":0,"type":"integer"},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"step_id":{"maxLength":64,"minLength":1,"type":"string"}},"required":["step_id","before_step_index","after_step_index","before_action","after_action","status","artifact_diffs","omitted_artifact_diffs"],"type":"object"},"maxItems":129,"type":"array"}},"required":["schema_version","comparison_kind","overall_status","normalization","alignment","steps","artifact_diffs","limitations"],"type":"object"},{"additionalProperties":false,"properties":{"after_target":{"additionalProperties":false,"properties":{"target_id":{"type":"string"},"url":{"type":"string"}},"required":["target_id","url"],"type":"object"},"before_target":{"additionalProperties":false,"properties":{"target_id":{"type":"string"},"url":{"type":"string"}},"required":["target_id","url"],"type":"object"},"dimensions":{"additionalProperties":false,"properties":{"accessibility":{"additionalProperties":false,"default":{"changes":[],"omitted_changes":0,"reason":"Dimension was not recorded by this version 1 capture diff.","status":"unknown","total_changes":0},"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"dom_structure":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"metadata":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"network":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"resources":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"scripts":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"storage":{"additionalProperties":false,"default":{"changes":[],"omitted_changes":0,"reason":"Dimension was not recorded by this version 1 capture diff.","status":"unknown","total_changes":0},"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"},"webmcp":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change":{"enum":["added","removed","modified"],"type":"string"},"identity":{"type":"string"}},"required":["identity","change"],"type":"object"},"type":"array"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"enum":["changed","unchanged","unknown"],"type":"string"},"total_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","total_changes","changes","omitted_changes","reason"],"type":"object"}},"required":["dom_structure","scripts","resources","network","metadata","webmcp","accessibility","storage"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"overall_status":{"enum":["changed","unchanged","unknown"],"type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","overall_status","before_target","after_target","dimensions","limitations"],"type":"object"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Compare Web Captures"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Capture the current visible viewport of one approved page as a bounded, content-addressed PNG artifact. Screenshot capture requires separate explicit approval and never scrolls, navigates, or evaluates page JavaScript.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"allowed_origins":["https://app.example.test"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9222","maximum_image_bytes":4194304,"screenshot_approved":true,"target_id":"TARGET_ID_FROM_LIST_BROWSER_TARGETS"}],"properties":{"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"maximum_image_bytes":{"default":4194304,"description":"Bounded byte count for maximum image.","maximum":8388608,"minimum":1,"type":"integer"},"screenshot_approved":{"const":true,"description":"Explicit operator approval for screenshot.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["cdp_endpoint","allowed_origins","target_id","approved","screenshot_approved"],"type":"object"},"kind":"browser-provider","name":"capture_web_screenshot","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"bytes":{"maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"},"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"captured_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"completeness":{"additionalProperties":false,"properties":{"attach_limited_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"additionalProperties":false,"properties":{"console_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"items":{"additionalProperties":false,"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reason":{"enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"target":{"additionalProperties":false,"properties":{"origin":{"type":"string"},"target_id":{"type":"string"},"url":{"type":"string"}},"required":["target_id","url","origin"],"type":"object"},"viewport":{"additionalProperties":false,"properties":{"height":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"width":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["width","height"],"type":"object"}},"required":["schema_version","browser","target","captured_at","viewport","artifact","completeness","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Capture Web Screenshot"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Compare two self-verifying PNG screenshot artifacts with bounded local pixel metrics. Returns exact changed-pixel ratios and channel deltas without OCR or external services.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"after":{"bytes":70,"data_base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PzWvWQAAAABJRU5ErkJggg==","media_type":"image/png","sha256":"153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c","uri":"rea://web-screenshot/sha256/153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c"},"before":{"bytes":70,"data_base64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PzWvWQAAAABJRU5ErkJggg==","media_type":"image/png","sha256":"153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c","uri":"rea://web-screenshot/sha256/153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c"},"channel_threshold":0,"maximum_pixels":16000000}],"properties":{"after":{"description":"The later or right-hand observation to compare.","properties":{"bytes":{"description":"Value for bytes.","maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"description":"Value for data base64.","maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","description":"Value for media type.","type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"},"before":{"description":"The earlier or left-hand observation to compare.","properties":{"bytes":{"description":"Value for bytes.","maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"description":"Value for data base64.","maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","description":"Value for media type.","type":"string"},"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"description":"Value for uri.","pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"},"channel_threshold":{"default":0,"description":"Value for channel threshold.","maximum":255,"minimum":0,"type":"integer"},"maximum_pixels":{"default":16000000,"description":"Value for maximum pixels.","maximum":32000000,"minimum":1,"type":"integer"}},"required":["before","after"],"type":"object"},"kind":"browser-provider","name":"compare_web_screenshots","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"oneOf":[{"additionalProperties":false,"properties":{"after":{"additionalProperties":false,"properties":{"height":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"width":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["width","height"],"type":"object"},"before":{"additionalProperties":false,"properties":{"height":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"width":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["width","height"],"type":"object"},"changed_pixels":{"const":0,"type":"number"},"changed_ratio":{"const":0,"type":"number"},"channel_threshold":{"maximum":255,"minimum":0,"type":"integer"},"compared_pixels":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"maximum_channel_delta":{"maximum":255,"minimum":0,"type":"integer"},"mean_absolute_channel_delta":{"maximum":255,"minimum":0,"type":"number"},"schema_version":{"const":1,"type":"number"},"status":{"const":"identical","type":"string"}},"required":["schema_version","before","after","channel_threshold","limitations","status","compared_pixels","changed_pixels","changed_ratio","maximum_channel_delta","mean_absolute_channel_delta"],"type":"object"},{"additionalProperties":false,"properties":{"after":{"additionalProperties":false,"properties":{"height":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"width":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["width","height"],"type":"object"},"before":{"additionalProperties":false,"properties":{"height":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"width":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["width","height"],"type":"object"},"changed_pixels":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"changed_ratio":{"exclusiveMinimum":0,"maximum":1,"type":"number"},"channel_threshold":{"maximum":255,"minimum":0,"type":"integer"},"compared_pixels":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"maximum_channel_delta":{"exclusiveMinimum":0,"maximum":255,"type":"integer"},"mean_absolute_channel_delta":{"exclusiveMinimum":0,"maximum":255,"type":"number"},"schema_version":{"const":1,"type":"number"},"status":{"const":"different","type":"string"}},"required":["schema_version","before","after","channel_threshold","limitations","status","compared_pixels","changed_pixels","changed_ratio","maximum_channel_delta","mean_absolute_channel_delta"],"type":"object"},{"additionalProperties":false,"properties":{"after":{"additionalProperties":false,"properties":{"height":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"width":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["width","height"],"type":"object"},"before":{"additionalProperties":false,"properties":{"height":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"width":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["width","height"],"type":"object"},"changed_pixels":{"type":"null"},"changed_ratio":{"type":"null"},"channel_threshold":{"maximum":255,"minimum":0,"type":"integer"},"compared_pixels":{"const":0,"type":"number"},"limitations":{"items":{"type":"string"},"type":"array"},"maximum_channel_delta":{"type":"null"},"mean_absolute_channel_delta":{"type":"null"},"schema_version":{"const":1,"type":"number"},"status":{"const":"dimension_mismatch","type":"string"}},"required":["schema_version","before","after","channel_threshold","limitations","status","compared_pixels","changed_pixels","changed_ratio","maximum_channel_delta","mean_absolute_channel_delta"],"type":"object"}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Compare Web Screenshots"},{"analysisOperation":null,"annotations":{"destructiveHint":true,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Run one approved, bounded browser scenario through Playwright. Launch mode owns and terminates a temporary browser profile; connect mode attaches to one exact loopback CDP target and disconnects without terminating the external browser. Only the fixed action vocabulary is accepted. Navigation, storage, requests, redirects, secrets, redaction, captures, and limits must be declared before execution. Returns step-indexed Evidence with screenshots, DOM, accessibility, URL/history/storage state, runtime events, explicit missing/truncated sections, and equality eligibility.","effects":{"accessesNetwork":true,"changesUiState":true,"idempotent":false,"launchesProcess":true,"mayDiscardData":true,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"actions":[{"action":"wait_for","locator":{"kind":"test_id","value":"application-ready"},"state":"visible","step_id":"ready"}],"allowed_origins":["https://app.example.test"],"approved":true,"browser":{"cleanup":"close-and-delete-profile","executable_path":"/opt/chromium/chrome","headless":true,"mode":"launch","user_data":"temporary-owned"},"capture":{"after_each_step":["screenshot","url","accessibility"],"at_end":["dom","history","storage"],"events":["console","page-errors","network","websockets"]},"environment":{"color_scheme":"light","locale":"en-US","reduced_motion":"reduce","service_workers":"block","timezone":"UTC","viewport":{"device_scale_factor":1,"height":720,"width":1280}},"limits":{"action_timeout_ms":5000,"max_accessibility_nodes":10000,"max_dom_nodes":10000,"max_duration_ms":60000,"max_events":2000,"max_frames":100,"max_popups":10,"max_screenshot_bytes":4194304,"max_screenshots":16,"max_storage_entries":256,"max_total_metadata_bytes":4194304,"max_websockets":100,"max_workers":20,"navigation_timeout_ms":10000},"redaction":{"header_names":["authorization","cookie","proxy-authorization","set-cookie"],"query_parameter_names":[],"secret_values":"replace-with-secret-reference"},"request_replay":{"mode":"disabled"},"schema_version":1,"secrets":[],"start_url":{"query":[],"url":"https://app.example.test/"},"storage":{"cookies":[],"local_storage":[],"session_storage":[]}}],"properties":{"actions":{"description":"Value for actions.","items":{"oneOf":[{"additionalProperties":false,"properties":{"action":{"const":"goto","description":"Value for action.","type":"string"},"destination":{"additionalProperties":false,"description":"Value for destination.","properties":{"query":{"default":[],"description":"Non-empty feature or text query to investigate.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"url":{"description":"Value for url.","maxLength":65536,"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"},"wait_until":{"description":"Value for wait until.","enum":["commit","domcontentloaded","load"],"type":"string"}},"required":["step_id","action","destination","wait_until"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"click","description":"Value for action.","type":"string"},"button":{"default":"left","description":"Value for button.","enum":["left","middle","right"],"type":"string"},"click_count":{"default":1,"description":"Value for click count.","maximum":3,"minimum":1,"type":"integer"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"required":["step_id","action","locator"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"fill","description":"Value for action.","type":"string"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["step_id","action","locator","value"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"press","description":"Value for action.","type":"string"},"key":{"description":"Value for key.","maxLength":64,"minLength":1,"type":"string"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"required":["step_id","action","locator","key"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"select_option","description":"Value for action.","type":"string"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["step_id","action","locator","value"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"description":"Value for action.","enum":["check","uncheck"],"type":"string"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"required":["step_id","action","locator"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"wait_for","description":"Value for action.","type":"string"},"locator":{"description":"Value for locator.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"test_id","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":512,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"exact":{"const":true,"description":"Value for exact.","type":"boolean"},"kind":{"const":"role","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"role":{"description":"Value for role.","enum":["button","checkbox","combobox","dialog","link","listbox","menuitem","option","radio","slider","spinbutton","switch","tab","textbox"],"type":"string"}},"required":["kind","role","name","exact"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"kind":{"const":"css","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","selector","approved"],"type":"object"}]},"state":{"description":"Value for state.","enum":["attached","detached","visible","hidden"],"type":"string"},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"timeout_ms":{"description":"Value for timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"required":["step_id","action","locator","state"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"const":"wait_for_timeout","description":"Value for action.","type":"string"},"duration_ms":{"description":"Value for duration ms.","maximum":60000,"minimum":1,"type":"integer"},"step_id":{"description":"Value for step id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["step_id","action","duration_ms"],"type":"object"}]},"maxItems":128,"minItems":1,"type":"array"},"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"browser":{"description":"Value for browser.","oneOf":[{"additionalProperties":false,"properties":{"cleanup":{"const":"close-and-delete-profile","description":"Value for cleanup.","type":"string"},"executable_path":{"description":"Local filesystem path for executable.","maxLength":4096,"minLength":1,"type":"string"},"headless":{"const":true,"description":"Value for headless.","type":"boolean"},"mode":{"const":"launch","description":"Operation mode that selects the requested behavior.","type":"string"},"user_data":{"const":"temporary-owned","description":"Value for user data.","type":"string"}},"required":["mode","executable_path","headless","user_data","cleanup"],"type":"object"},{"additionalProperties":false,"properties":{"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"cleanup":{"const":"disconnect-only","description":"Value for cleanup.","type":"string"},"mode":{"const":"connect","description":"Operation mode that selects the requested behavior.","type":"string"},"ownership":{"const":"external","description":"Value for ownership.","type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["mode","cdp_endpoint","target_id","ownership","cleanup"],"type":"object"}]},"capture":{"additionalProperties":false,"description":"Value for capture.","properties":{"after_each_step":{"description":"Value for after each step.","items":{"enum":["screenshot","dom","accessibility","url","history","storage"],"type":"string"},"maxItems":6,"type":"array"},"at_end":{"description":"Value for at end.","items":{"enum":["screenshot","dom","accessibility","url","history","storage"],"type":"string"},"maxItems":6,"type":"array"},"events":{"description":"Value for events.","items":{"enum":["console","page-errors","network","websockets","frames","workers","popups","downloads"],"type":"string"},"type":"array"}},"required":["after_each_step","at_end","events"],"type":"object"},"environment":{"additionalProperties":false,"description":"Value for environment.","properties":{"color_scheme":{"description":"Value for color scheme.","enum":["light","dark","no-preference"],"type":"string"},"locale":{"description":"Value for locale.","maxLength":64,"minLength":2,"pattern":"^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$","type":"string"},"reduced_motion":{"description":"Value for reduced motion.","enum":["reduce","no-preference"],"type":"string"},"service_workers":{"const":"block","description":"Value for service workers.","type":"string"},"timezone":{"description":"Value for timezone.","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_+-]+(?:\\\\/[A-Za-z0-9_+-]+)*$","type":"string"},"viewport":{"additionalProperties":false,"description":"Value for viewport.","properties":{"device_scale_factor":{"default":1,"description":"Value for device scale factor.","maximum":4,"minimum":0.5,"type":"number"},"height":{"description":"Value for height.","maximum":4320,"minimum":240,"type":"integer"},"width":{"description":"Value for width.","maximum":7680,"minimum":320,"type":"integer"}},"required":["width","height"],"type":"object"}},"required":["viewport","locale","timezone","color_scheme","reduced_motion","service_workers"],"type":"object"},"limits":{"additionalProperties":false,"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"action_timeout_ms":{"description":"Value for action timeout ms.","maximum":60000,"minimum":1,"type":"integer"},"max_accessibility_nodes":{"description":"Maximum permitted accessibility nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_dom_nodes":{"description":"Maximum permitted dom nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_duration_ms":{"description":"Maximum permitted duration ms for this operation.","maximum":300000,"minimum":100,"type":"integer"},"max_events":{"description":"Maximum permitted events for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_frames":{"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_popups":{"description":"Maximum permitted popups for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_screenshot_bytes":{"description":"Maximum permitted screenshot bytes for this operation.","maximum":8388608,"minimum":1,"type":"integer"},"max_screenshots":{"description":"Maximum permitted screenshots for this operation.","maximum":256,"minimum":0,"type":"integer"},"max_storage_entries":{"description":"Maximum permitted storage entries for this operation.","maximum":512,"minimum":0,"type":"integer"},"max_total_metadata_bytes":{"description":"Maximum permitted total metadata bytes for this operation.","maximum":67108864,"minimum":1024,"type":"integer"},"max_websockets":{"description":"Maximum permitted websockets for this operation.","maximum":10000,"minimum":0,"type":"integer"},"max_workers":{"description":"Maximum permitted workers for this operation.","maximum":1000,"minimum":0,"type":"integer"},"navigation_timeout_ms":{"description":"Value for navigation timeout ms.","maximum":60000,"minimum":1,"type":"integer"}},"required":["max_duration_ms","action_timeout_ms","navigation_timeout_ms","max_events","max_frames","max_workers","max_popups","max_websockets","max_dom_nodes","max_accessibility_nodes","max_screenshots","max_screenshot_bytes","max_storage_entries","max_total_metadata_bytes"],"type":"object"},"redaction":{"additionalProperties":false,"description":"Value for redaction.","properties":{"header_names":{"description":"Value for header names.","items":{"maxLength":256,"minLength":1,"type":"string"},"maxItems":128,"type":"array"},"query_parameter_names":{"description":"Value for query parameter names.","items":{"maxLength":256,"minLength":1,"type":"string"},"maxItems":128,"type":"array"},"secret_values":{"const":"replace-with-secret-reference","description":"Value for secret values.","type":"string"}},"required":["secret_values"],"type":"object"},"request_replay":{"description":"Value for request replay.","oneOf":[{"additionalProperties":false,"properties":{"mode":{"const":"disabled","description":"Operation mode that selects the requested behavior.","type":"string"}},"required":["mode"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"const":"exact","description":"Operation mode that selects the requested behavior.","type":"string"},"routes":{"description":"Value for routes.","items":{"additionalProperties":false,"properties":{"method":{"description":"Value for method.","enum":["GET","HEAD","POST","PUT","PATCH","DELETE","OPTIONS"],"type":"string"},"request":{"additionalProperties":false,"description":"Value for request.","properties":{"query":{"default":[],"description":"Non-empty feature or text query to investigate.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"url":{"description":"Value for url.","maxLength":65536,"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"response":{"description":"Value for response.","oneOf":[{"additionalProperties":false,"properties":{"body":{"description":"Value for body.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]},"headers":{"description":"Value for headers.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+\\\\-.^_`|~0-9A-Za-z]+$","type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"kind":{"const":"response","description":"Value for kind.","type":"string"},"status":{"description":"Current lifecycle or verification status.","maximum":599,"minimum":100,"type":"integer"}},"required":["kind","status"],"type":"object"},{"additionalProperties":false,"properties":{"destination":{"additionalProperties":false,"description":"Value for destination.","properties":{"query":{"default":[],"description":"Non-empty feature or text query to investigate.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"url":{"description":"Value for url.","maxLength":65536,"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"kind":{"const":"redirect","description":"Value for kind.","type":"string"},"status":{"anyOf":[{"const":301,"type":"number"},{"const":302,"type":"number"},{"const":303,"type":"number"},{"const":307,"type":"number"},{"const":308,"type":"number"}],"description":"Current lifecycle or verification status."}},"required":["kind","status","destination"],"type":"object"}]},"route_id":{"description":"Value for route id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["route_id","method","request","response"],"type":"object"},"maxItems":256,"minItems":1,"type":"array"},"unmatched":{"description":"Value for unmatched.","enum":["abort","passthrough-approved-origins"],"type":"string"}},"required":["mode","unmatched","routes"],"type":"object"}]},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"secrets":{"default":[],"description":"Value for secrets.","items":{"additionalProperties":false,"properties":{"environment_variable":{"description":"Value for environment variable.","pattern":"^[A-Z_][A-Z0-9_]{0,127}$","type":"string"},"purpose":{"description":"Value for purpose.","enum":["input","storage","request-replay"],"type":"string"},"redaction":{"const":"replace-with-secret-reference","description":"Value for redaction.","type":"string"},"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["secret_id","environment_variable","purpose","redaction"],"type":"object"},"maxItems":64,"type":"array"},"start_url":{"additionalProperties":false,"description":"Value for start url.","properties":{"query":{"default":[],"description":"Non-empty feature or text query to investigate.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"url":{"description":"Value for url.","maxLength":65536,"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"storage":{"additionalProperties":false,"description":"Value for storage.","properties":{"cookies":{"description":"Value for cookies.","items":{"additionalProperties":false,"properties":{"destination":{"additionalProperties":false,"description":"Value for destination.","properties":{"query":{"default":[],"description":"Non-empty feature or text query to investigate.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":256,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":64,"type":"array"},"url":{"description":"Value for url.","maxLength":65536,"minLength":1,"type":"string"}},"required":["url"],"type":"object"},"http_only":{"description":"Value for http only.","type":"boolean"},"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"same_site":{"description":"Value for same site.","enum":["Strict","Lax","None"],"type":"string"},"secure":{"description":"Value for secure.","type":"boolean"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value","destination","http_only","secure","same_site"],"type":"object"},"maxItems":128,"type":"array"},"local_storage":{"description":"Value for local storage.","items":{"additionalProperties":false,"properties":{"entries":{"description":"Value for entries.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":128,"type":"array"},"origin":{"description":"Value for origin.","maxLength":2048,"minLength":1,"type":"string"}},"required":["origin","entries"],"type":"object"},"maxItems":32,"type":"array"},"session_storage":{"description":"Value for session storage.","items":{"additionalProperties":false,"properties":{"entries":{"description":"Value for entries.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","maxLength":1024,"minLength":1,"type":"string"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"classification":{"const":"public","description":"Value for classification.","type":"string"},"source":{"const":"literal","description":"Value for source.","type":"string"},"value":{"description":"Value for value.","maxLength":65536,"type":"string"}},"required":["source","value","classification"],"type":"object"},{"additionalProperties":false,"properties":{"secret_id":{"description":"Value for secret id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"source":{"const":"secret","description":"Value for source.","type":"string"}},"required":["source","secret_id"],"type":"object"}]}},"required":["name","value"],"type":"object"},"maxItems":128,"type":"array"},"origin":{"description":"Value for origin.","maxLength":2048,"minLength":1,"type":"string"}},"required":["origin","entries"],"type":"object"},"maxItems":32,"type":"array"}},"type":"object"}},"required":["schema_version","browser","start_url","allowed_origins","environment","actions","storage","request_replay","redaction","capture","limits","approved"],"type":"object"},"kind":"browser-provider","name":"capture_browser_scenario","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"cleanup":{"enum":["terminated-owned-process","disconnected-external"],"type":"string"},"mode":{"enum":["launch","connect"],"type":"string"},"process_ownership":{"enum":["provider-owned","external"],"type":"string"},"product":{"maxLength":1024,"minLength":1,"type":"string"},"version":{"maxLength":256,"minLength":1,"type":"string"}},"required":["mode","process_ownership","cleanup","product","version"],"type":"object"},"completeness":{"oneOf":[{"additionalProperties":false,"properties":{"equality_eligible":{"const":true,"type":"boolean"},"missing_sections":{"prefixItems":[],"type":"array"},"status":{"const":"complete","type":"string"},"truncated_sections":{"prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"type":"boolean"},"missing_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"},"status":{"const":"incomplete","type":"string"},"truncated_sections":{"prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"type":"boolean"},"missing_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"const":"truncated","type":"string"},"truncated_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"}]},"duration_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"events":{"additionalProperties":false,"properties":{"dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"items":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"kind":{"const":"console","type":"string"},"level":{"maxLength":64,"minLength":1,"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text":{"maxLength":65536,"type":"string"},"url":{"anyOf":[{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}]}},"required":["sequence","step_index","kind","level","text","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"page-error","type":"string"},"message":{"maxLength":65536,"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"stack":{"anyOf":[{"maxLength":262144,"type":"string"},{"type":"null"}]},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","step_index","kind","message","stack"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"type":"null"},"header_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"const":"request","type":"string"},"method":{"maxLength":32,"minLength":1,"type":"string"},"resource_type":{"maxLength":64,"minLength":1,"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"type":"null"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","method","url","resource_type","header_names","kind","status","failure"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"type":"null"},"header_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"const":"response","type":"string"},"method":{"maxLength":32,"minLength":1,"type":"string"},"resource_type":{"maxLength":64,"minLength":1,"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"maximum":599,"minimum":100,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","method","url","resource_type","header_names","kind","status","failure"],"type":"object"},{"additionalProperties":false,"properties":{"failure":{"maxLength":1024,"minLength":1,"type":"string"},"header_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"kind":{"const":"request-failed","type":"string"},"method":{"maxLength":32,"minLength":1,"type":"string"},"resource_type":{"maxLength":64,"minLength":1,"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"type":"null"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","method","url","resource_type","header_names","kind","status","failure"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"enum":["websocket-opened","websocket-closed"],"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"enum":["websocket-frame-sent","websocket-frame-received"],"type":"string"},"payload_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_text":{"maxLength":65536,"type":"string"},"payload_type":{"const":"text","type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"},"url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url","payload_bytes","truncated","payload_type","payload_text"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"enum":["websocket-frame-sent","websocket-frame-received"],"type":"string"},"payload_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"payload_text":{"type":"null"},"payload_type":{"const":"binary","type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"},"url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","url","payload_bytes","truncated","payload_type","payload_text"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"enum":["frame-attached","frame-detached","frame-navigated","worker-created","worker-closed","popup-opened","popup-closed"],"type":"string"},"name":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"url":{"anyOf":[{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},{"type":"null"}]}},"required":["sequence","step_index","kind","url","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"download-cancelled","type":"string"},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"suggested_filename":{"maxLength":1024,"type":"string"},"url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["sequence","step_index","kind","suggested_filename","url"],"type":"object"}]},"maxItems":100000,"type":"array"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["retained","dropped","items"],"type":"object"},"limitations":{"items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"scenario":{"additionalProperties":false,"properties":{"action_count":{"maximum":128,"minimum":1,"type":"integer"},"allowed_origins":{"items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"secret_references":{"items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":64,"type":"array"},"start_origin":{"maxLength":2048,"minLength":1,"type":"string"}},"required":["start_origin","allowed_origins","action_count","secret_references"],"type":"object"},"schema_version":{"const":1,"type":"number"},"steps":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"action":{"maxLength":64,"minLength":1,"type":"string"},"after_url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"artifacts":{"additionalProperties":false,"properties":{"accessibility":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"bytes":{"maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"dom":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"bytes":{"maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"history":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"current_url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"navigation_entries":{"items":{"additionalProperties":false,"properties":{"name":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"type":{"enum":["navigate","reload","back_forward","prerender","unknown"],"type":"string"}},"required":["type","name"],"type":"object"},"maxItems":256,"type":"array"}},"required":["length","current_url","navigation_entries"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"screenshot":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"bytes":{"maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"storage":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"cookies":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"domain":{"maxLength":2048,"type":"string"},"http_only":{"type":"boolean"},"name":{"maxLength":1024,"type":"string"},"path":{"maxLength":4096,"type":"string"},"same_site":{"enum":["Strict","Lax","None"],"type":"string"},"secure":{"type":"boolean"},"value_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"domain":{"maxLength":2048,"type":"string"},"http_only":{"type":"boolean"},"name":{"maxLength":1024,"type":"string"},"path":{"maxLength":4096,"type":"string"},"same_site":{"enum":["Strict","Lax","None"],"type":"string"},"secure":{"type":"boolean"},"value_sha256":{"type":"null"},"value_state":{"const":"redacted-secret","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"local_storage":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"maxLength":1024,"type":"string"},"value_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"maxLength":1024,"type":"string"},"value_sha256":{"type":"null"},"value_state":{"const":"redacted-secret","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"session_storage":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"maxLength":1024,"type":"string"},"value_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"maxLength":1024,"type":"string"},"value_sha256":{"type":"null"},"value_state":{"const":"redacted-secret","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"}},"required":["cookies","local_storage","session_storage"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"url":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]}},"required":["screenshot","dom","accessibility","url","history","storage"],"type":"object"},"before_url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"completeness":{"oneOf":[{"additionalProperties":false,"properties":{"equality_eligible":{"const":true,"type":"boolean"},"missing_sections":{"prefixItems":[],"type":"array"},"status":{"const":"complete","type":"string"},"truncated_sections":{"prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"type":"boolean"},"missing_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"},"status":{"const":"incomplete","type":"string"},"truncated_sections":{"prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"type":"boolean"},"missing_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"const":"truncated","type":"string"},"truncated_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"}]},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"type":"null"},"event_sequence_end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"event_sequence_start":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"const":"completed","type":"string"},"step_id":{"maxLength":64,"minLength":1,"type":"string"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["step_index","step_id","action","elapsed_ms","before_url","after_url","event_sequence_start","event_sequence_end","artifacts","completeness","status","error"],"type":"object"},{"additionalProperties":false,"properties":{"action":{"maxLength":64,"minLength":1,"type":"string"},"after_url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"artifacts":{"additionalProperties":false,"properties":{"accessibility":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"bytes":{"maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"dom":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"bytes":{"maximum":16777216,"minimum":0,"type":"integer"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"maxLength":1048576,"type":"string"}},"required":["sha256","bytes","text"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"history":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"current_url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"navigation_entries":{"items":{"additionalProperties":false,"properties":{"name":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"type":{"enum":["navigate","reload","back_forward","prerender","unknown"],"type":"string"}},"required":["type","name"],"type":"object"},"maxItems":256,"type":"array"}},"required":["length","current_url","navigation_entries"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"screenshot":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"bytes":{"maximum":8388608,"minimum":1,"type":"integer"},"data_base64":{"maxLength":11184815,"type":"string"},"media_type":{"const":"image/png","type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-screenshot\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","data_base64"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"storage":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"cookies":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"domain":{"maxLength":2048,"type":"string"},"http_only":{"type":"boolean"},"name":{"maxLength":1024,"type":"string"},"path":{"maxLength":4096,"type":"string"},"same_site":{"enum":["Strict","Lax","None"],"type":"string"},"secure":{"type":"boolean"},"value_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"domain":{"maxLength":2048,"type":"string"},"http_only":{"type":"boolean"},"name":{"maxLength":1024,"type":"string"},"path":{"maxLength":4096,"type":"string"},"same_site":{"enum":["Strict","Lax","None"],"type":"string"},"secure":{"type":"boolean"},"value_sha256":{"type":"null"},"value_state":{"const":"redacted-secret","type":"string"}},"required":["name","domain","path","secure","http_only","same_site","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"local_storage":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"maxLength":1024,"type":"string"},"value_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"maxLength":1024,"type":"string"},"value_sha256":{"type":"null"},"value_state":{"const":"redacted-secret","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"},"session_storage":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"name":{"maxLength":1024,"type":"string"},"value_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"value_state":{"const":"hashed","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"maxLength":1024,"type":"string"},"value_sha256":{"type":"null"},"value_state":{"const":"redacted-secret","type":"string"}},"required":["name","value_state","value_sha256"],"type":"object"}]},"maxItems":512,"type":"array"}},"required":["cookies","local_storage","session_storage"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]},"url":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"captured","type":"string"},"value":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"state":{"const":"not_requested","type":"string"}},"required":["state"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"maxLength":1024,"minLength":1,"type":"string"},"state":{"const":"missing","type":"string"}},"required":["state","reason"],"type":"object"},{"additionalProperties":false,"properties":{"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reason":{"maxLength":1024,"minLength":1,"type":"string"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"truncated","type":"string"}},"required":["state","observed","retained","reason"],"type":"object"}]}},"required":["screenshot","dom","accessibility","url","history","storage"],"type":"object"},"before_url":{"additionalProperties":false,"properties":{"origin":{"anyOf":[{"maxLength":2048,"type":"string"},{"type":"null"}]},"query_parameter_names":{"items":{"maxLength":256,"type":"string"},"maxItems":256,"type":"array"},"redacted":{"type":"boolean"},"url":{"maxLength":131072,"type":"string"}},"required":["url","origin","query_parameter_names","redacted"],"type":"object"},"completeness":{"oneOf":[{"additionalProperties":false,"properties":{"equality_eligible":{"const":true,"type":"boolean"},"missing_sections":{"prefixItems":[],"type":"array"},"status":{"const":"complete","type":"string"},"truncated_sections":{"prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"type":"boolean"},"missing_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"},"status":{"const":"incomplete","type":"string"},"truncated_sections":{"prefixItems":[],"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"},{"additionalProperties":false,"properties":{"equality_eligible":{"const":false,"type":"boolean"},"missing_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"type":"array"},"status":{"const":"truncated","type":"string"},"truncated_sections":{"items":{"enum":["action","screenshot","dom","accessibility","url","history","storage","events","frames","workers","popups","websockets"],"type":"string"},"minItems":1,"type":"array"}},"required":["status","equality_eligible","missing_sections","truncated_sections"],"type":"object"}]},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"maxLength":4096,"type":"string"},"event_sequence_end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"event_sequence_start":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"status":{"enum":["failed","cancelled"],"type":"string"},"step_id":{"maxLength":64,"minLength":1,"type":"string"},"step_index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["step_index","step_id","action","elapsed_ms","before_url","after_url","event_sequence_start","event_sequence_end","artifacts","completeness","status","error"],"type":"object"}]},"maxItems":129,"minItems":1,"type":"array"}},"required":["schema_version","browser","scenario","duration_ms","steps","events","completeness","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Capture Browser Scenario"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"List Electron file:// page targets from an approved user-owned loopback CDP endpoint. Every path is canonicalized and must remain contained by an approved filesystem root, including after symlink resolution.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"allowed_file_roots":["/Applications/Example.app/Contents/Resources"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9223","limit":100,"offset":0}],"properties":{"allowed_file_roots":{"description":"Approved canonical filesystem allowed file roots.","items":{"maxLength":16384,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":200,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["cdp_endpoint","allowed_file_roots","approved"],"type":"object"},"kind":"electron-provider","name":"list_electron_targets","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"excluded":{"additionalProperties":false,"properties":{"non_page":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outside_root":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unsupported_url":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["outside_root","unsupported_url","non_page"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"schema_version":{"const":1,"type":"number"},"targets":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"file_path":{"type":"string"},"target_id":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"}},"required":["target_id","type","title","file_path","attached"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["schema_version","browser","targets","excluded","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Electron Targets"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Passively inspect one approved Electron file page through CDP. Returns root-confined frames, DOM structure, resource paths, and scripts without evaluating renderer JavaScript or invoking Electron APIs; script contents require separate approval.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"properties":{"allowed_file_roots":{"description":"Approved canonical filesystem allowed file roots.","items":{"maxLength":16384,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"include_script_sources":{"const":false,"default":false,"description":"Whether to include script sources in the result.","type":"boolean"},"limits":{"default":{"max_dom_nodes":2000,"max_frames":200,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":500,"max_total_script_source_bytes":4194304,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":500,"description":"Maximum permitted scripts for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":100,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":false,"default":false,"description":"Explicit operator approval for source capture.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["cdp_endpoint","allowed_file_roots","approved","target_id"],"type":"object"},{"properties":{"allowed_file_roots":{"description":"Approved canonical filesystem allowed file roots.","items":{"maxLength":16384,"minLength":1,"type":"string"},"maxItems":32,"minItems":1,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cdp_endpoint":{"description":"Approved literal loopback Chrome DevTools Protocol endpoint.","maxLength":2048,"minLength":1,"type":"string"},"include_script_sources":{"const":true,"description":"Whether to include script sources in the result.","type":"boolean"},"limits":{"default":{"max_dom_nodes":2000,"max_frames":200,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":500,"max_total_script_source_bytes":4194304,"max_workers":500},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_dom_nodes":{"default":2000,"description":"Maximum permitted dom nodes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_frames":{"default":200,"description":"Maximum permitted frames for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_resources":{"default":2000,"description":"Maximum permitted resources for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_script_source_bytes":{"default":1048576,"description":"Maximum permitted script source bytes for this operation.","maximum":4194304,"minimum":1,"type":"integer"},"max_scripts":{"default":500,"description":"Maximum permitted scripts for this operation.","maximum":2000,"minimum":1,"type":"integer"},"max_total_script_source_bytes":{"default":4194304,"description":"Maximum permitted total script source bytes for this operation.","maximum":16777216,"minimum":1,"type":"integer"},"max_workers":{"default":500,"description":"Maximum permitted workers for this operation.","maximum":5000,"minimum":1,"type":"integer"}},"type":"object"},"observation_ms":{"default":100,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"source_capture_approved":{"const":true,"description":"Explicit operator approval for source capture.","type":"boolean"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["cdp_endpoint","allowed_file_roots","approved","target_id","include_script_sources","source_capture_approved"],"type":"object"}],"examples":[{"allowed_file_roots":["/Applications/Example.app/Contents/Resources"],"approved":true,"cdp_endpoint":"http://127.0.0.1:9223","include_script_sources":false,"limits":{"max_dom_nodes":2000,"max_frames":200,"max_resources":2000,"max_script_source_bytes":1048576,"max_scripts":500,"max_total_script_source_bytes":4194304,"max_workers":500},"observation_ms":100,"source_capture_approved":false,"target_id":"TARGET_ID_FROM_LIST_ELECTRON_TARGETS"}],"type":"object"},"kind":"electron-provider","name":"inspect_electron_page","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"browser":{"additionalProperties":false,"properties":{"js_version":{"type":"string"},"product":{"type":"string"},"protocol_version":{"type":"string"},"revision":{"type":"string"},"user_agent":{"type":"string"}},"required":["product","protocol_version","revision","user_agent","js_version"],"type":"object"},"capture_window":{"additionalProperties":false,"properties":{"ended_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"observation_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"started_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"}},"required":["started_at","ended_at","observation_ms"],"type":"object"},"completeness":{"additionalProperties":false,"properties":{"attach_limited_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"conditions":{"items":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"maxItems":3,"minItems":1,"type":"array"},"dropped_events":{"additionalProperties":false,"properties":{"console_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"network_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"timeline_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"webmcp_tools":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"websocket_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["scripts","network_requests","console_events","websocket_connections","websocket_frames","webmcp_tools","timeline_events","total"],"type":"object"},"excluded":{"items":{"additionalProperties":false,"properties":{"count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"reason":{"enum":["disallowed_origin","unsupported_url","unattributed_origin","not_approved","out_of_target_scope","provider_unavailable","invalid_protocol_value"],"type":"string"},"section":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"}},"required":["section","reason","count"],"type":"object"},"type":"array"},"policy_filtered_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"status":{"enum":["complete_within_window","policy_filtered","attach_limited","truncated"],"type":"string"},"truncated_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"},"unavailable_sections":{"items":{"enum":["frames","dom","accessibility","scripts","script_sources","resources","network_requests","network_initiators","console_events","console_text","websocket_connections","websocket_frames","websocket_shapes","json_body_shapes","workers","storage","storage_keys","metadata","webmcp_tools","screenshot","source_maps","timeline"],"type":"string"},"type":"array"}},"required":["status","conditions","policy_filtered_sections","attach_limited_sections","truncated_sections","unavailable_sections","excluded","dropped_events"],"type":"object"},"dom":{"additionalProperties":false,"properties":{"nodes":{"items":{"additionalProperties":false,"properties":{"attribute_names":{"items":{"type":"string"},"type":"array"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_name":{"type":"string"},"node_type":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_value_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parent_index":{"maximum":9007199254740991,"minimum":-1,"type":"integer"}},"required":["index","parent_index","node_type","node_name","node_value_length","attribute_names"],"type":"object"},"type":"array"},"total_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_nodes","nodes"],"type":"object"},"frames":{"items":{"additionalProperties":false,"properties":{"file_path":{"type":"string"},"frame_id":{"type":"string"},"parent_frame_id":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["frame_id","parent_frame_id","file_path"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"resources":{"items":{"additionalProperties":false,"properties":{"content_size":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}]},"file_path":{"type":"string"},"mime_type":{"type":"string"},"resource_key":{"pattern":"^electron_resource_[a-f0-9]{64}$","type":"string"},"type":{"type":"string"}},"required":["resource_key","file_path","type","mime_type","content_size"],"type":"object"},"type":"array"},"schema_version":{"const":1,"type":"number"},"scripts":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"cdp_hash":{"type":"string"},"file_path":{"type":"string"},"frame_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"is_module":{"type":"boolean"},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"script_key":{"pattern":"^electron_script_[a-f0-9]{64}$","type":"string"},"source":{"oneOf":[{"additionalProperties":false,"properties":{"included":{"const":false,"type":"boolean"},"reason":{"type":"string"}},"required":["included","reason"],"type":"object"},{"additionalProperties":false,"properties":{"artifact":{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"charset":{"const":"utf-8","type":"string"},"media_type":{"maxLength":256,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"text":{"type":"string"},"uri":{"pattern":"^rea:\\\\/\\\\/web-content\\\\/sha256\\\\/[a-f0-9]{64}$","type":"string"}},"required":["uri","sha256","bytes","media_type","charset","text"],"type":"object"},"included":{"const":true,"type":"boolean"}},"required":["included","artifact"],"type":"object"}]}},"required":["script_key","frame_id","file_path","cdp_hash","length","is_module","language","source"],"type":"object"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","items"],"type":"object"},"target":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"file_path":{"type":"string"},"target_id":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"}},"required":["target_id","type","title","file_path","attached"],"type":"object"},"workers":{"default":[],"items":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"file_path":{"type":"string"},"opener_target_id":{"anyOf":[{"maxLength":256,"minLength":1,"type":"string"},{"type":"null"}]},"parent_frame_id":{"anyOf":[{"maxLength":256,"minLength":1,"type":"string"},{"type":"null"}]},"target_id":{"maxLength":256,"minLength":1,"type":"string"},"type":{"maxLength":100,"minLength":1,"type":"string"}},"required":["target_id","type","file_path","attached","opener_target_id","parent_frame_id"],"type":"object"},"type":"array"}},"required":["schema_version","browser","target","capture_window","completeness","frames","dom","scripts","resources","workers","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Inspect Electron Page"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Statically reconstruct one approved local ASAR or extracted JavaScript application without executing it. The default summary returns architecture/security counts, top evidence-backed findings, unknowns, and paged graph resource URIs; request detail=full only when the complete graph must be returned immediately. Identical inputs are deterministic, so do not repeat the call or reread full Evidence without a specific missing detail.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"approved":true,"detail":"summary","format":"auto","input_path":"/Applications/Example.app/Contents/Resources/app.asar","source_map_read_approved":false}],"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"detail":{"default":"summary","description":"summary returns bounded findings and paged graph resource URIs; full returns the complete graph only when explicitly required","enum":["summary","full"],"type":"string"},"format":{"default":"auto","description":"Declared input artifact format.","enum":["auto","asar","directory"],"type":"string"},"input_path":{"description":"Local filesystem path for input.","maxLength":16384,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_artifact_entry_bytes":134217728,"max_ast_nodes":2000000,"max_compression_ratio":1000,"max_depth":64,"max_entries":8000,"max_findings":8000,"max_modules":20000,"max_parse_milliseconds":30000,"max_path_bytes":4096,"max_source_map_sources":5000,"max_text_file_bytes":8388608,"max_text_files":5000,"max_total_artifact_bytes":536870912,"max_total_text_bytes":134217728},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_artifact_entry_bytes":{"default":134217728,"description":"Maximum permitted artifact entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_ast_nodes":{"default":2000000,"description":"Maximum permitted ast nodes for this operation.","maximum":20000000,"minimum":1,"type":"integer"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":64,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_entries":{"default":8000,"description":"Maximum permitted entries for this operation.","maximum":1000000,"minimum":1,"type":"integer"},"max_findings":{"default":8000,"description":"Maximum permitted findings for this operation.","maximum":200000,"minimum":1,"type":"integer"},"max_modules":{"default":20000,"description":"Maximum permitted modules for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_parse_milliseconds":{"default":30000,"description":"Maximum permitted parse milliseconds for this operation.","maximum":300000,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_source_map_sources":{"default":5000,"description":"Maximum permitted source map sources for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_text_file_bytes":{"default":8388608,"description":"Maximum permitted text file bytes for this operation.","maximum":67108864,"minimum":1,"type":"integer"},"max_text_files":{"default":5000,"description":"Maximum permitted text files for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_total_artifact_bytes":{"default":536870912,"description":"Maximum permitted total artifact bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_total_text_bytes":{"default":134217728,"description":"Maximum permitted total text bytes for this operation.","maximum":536870912,"minimum":1,"type":"integer"}},"type":"object"},"source_map_read_approved":{"default":false,"description":"Explicit operator approval for source map read.","type":"boolean"}},"required":["input_path","approved"],"type":"object"},"kind":"electron-provider","name":"analyze_javascript_application","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"format":{"enum":["asar","directory"],"type":"string"},"graph":{"additionalProperties":false,"properties":{"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"edge_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"node_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_kinds":{"items":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"}},"required":["kind","count"],"type":"object"},"type":"array"},"pages":{"additionalProperties":false,"properties":{"edges":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/.*","type":"string"},"nodes":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/.*","type":"string"},"page_limit":{"maximum":500,"minimum":1,"type":"integer"}},"required":["nodes","edges","page_limit"],"type":"object"},"roots":{"additionalProperties":false,"properties":{"items":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"}},"required":["items","total","truncated"],"type":"object"},"top_findings":{"items":{"additionalProperties":false,"properties":{"authority":{"type":"string"},"confidence":{"type":"string"},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"$ref":"#/$defs/__schema0"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"state":{"type":"string"}},"required":["node_id","kind","label","authority","state","confidence","location"],"type":"object"},"type":"array"}},"required":["graph_id","node_count","edge_count","roots","node_kinds","top_findings","coverage","limitations","pages"],"type":"object"},"input_path":{"maxLength":16384,"minLength":1,"type":"string"},"inventory_graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"inventory_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"},"statistics":{"additionalProperties":false,"properties":{"findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"invalid_utf8_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limit_omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nested_asar_containers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parse_failures":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parsed_javascript_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"policy_filtered_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relevant_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_bytes_read":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_files_selected":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated_scopes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"visited_ast_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["relevant_files","nested_asar_containers","text_files_selected","text_bytes_read","omitted_text_files","limit_omitted_text_files","policy_filtered_text_files","invalid_utf8_files","parsed_javascript_files","visited_ast_nodes","findings","modules","parse_failures","truncated_scopes"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"browser_windows":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"context_bridge_apis":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"explicit_web_preferences":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exposed_api_members":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ipc":{"additionalProperties":false,"properties":{"ambiguous_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"dynamic_channel_operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"literal_channels":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"main_handlers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paired_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_listeners":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unpaired_literal_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["operations","literal_channels","dynamic_channel_operations","renderer_transmissions","renderer_listeners","main_handlers","paired_renderer_transmissions","ambiguous_renderer_transmissions","unpaired_literal_renderer_transmissions"],"type":"object"},"native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"preload_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_utility_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sender_validation_observations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"utility_processes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["browser_windows","explicit_web_preferences","preload_entrypoints","context_bridge_apis","exposed_api_members","ipc","sender_validation_observations","utility_processes","resolved_utility_entrypoints","native_addon_bindings","resolved_native_addon_bindings"],"type":"object"},"unknowns":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"}},"required":["schema_version","input_path","format","root_artifact_sha256","inventory_manifest_id","inventory_graph_sha256","summary","statistics","limitations","unknowns","graph"],"type":"object"},{"additionalProperties":false,"properties":{"format":{"enum":["asar","directory"],"type":"string"},"graph":{"additionalProperties":false,"properties":{"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"edge_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"node_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"node_kinds":{"items":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"}},"required":["kind","count"],"type":"object"},"type":"array"},"pages":{"additionalProperties":false,"properties":{"edges":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/.*","type":"string"},"nodes":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/.*","type":"string"},"page_limit":{"maximum":500,"minimum":1,"type":"integer"}},"required":["nodes","edges","page_limit"],"type":"object"},"roots":{"additionalProperties":false,"properties":{"items":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"type":"array"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"}},"required":["items","total","truncated"],"type":"object"},"top_findings":{"items":{"additionalProperties":false,"properties":{"authority":{"type":"string"},"confidence":{"type":"string"},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"$ref":"#/$defs/__schema0"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"state":{"type":"string"}},"required":["node_id","kind","label","authority","state","confidence","location"],"type":"object"},"type":"array"}},"required":["graph_id","node_count","edge_count","roots","node_kinds","top_findings","coverage","limitations","pages"],"type":"object"},"input_path":{"maxLength":16384,"minLength":1,"type":"string"},"inventory_graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"inventory_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":2,"type":"number"},"semantic_graph":{"additionalProperties":false,"properties":{"coverage":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"fingerprints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"graph_id":{"pattern":"^jsrg_[a-f0-9]{64}$","type":"string"},"nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"query_tool":{"const":"trace_javascript_semantics","type":"string"},"relations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_frontiers":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["graph_id","nodes","relations","unknown_frontiers","fingerprints","coverage","query_tool"],"type":"object"},"statistics":{"additionalProperties":false,"properties":{"findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"invalid_utf8_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limit_omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nested_asar_containers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parse_failures":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parsed_javascript_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"policy_filtered_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relevant_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_bytes_read":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_files_selected":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated_scopes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"visited_ast_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["relevant_files","nested_asar_containers","text_files_selected","text_bytes_read","omitted_text_files","limit_omitted_text_files","policy_filtered_text_files","invalid_utf8_files","parsed_javascript_files","visited_ast_nodes","findings","modules","parse_failures","truncated_scopes"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"browser_windows":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"context_bridge_apis":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"explicit_web_preferences":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exposed_api_members":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ipc":{"additionalProperties":false,"properties":{"ambiguous_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"dynamic_channel_operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"literal_channels":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"main_handlers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paired_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_listeners":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unpaired_literal_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["operations","literal_channels","dynamic_channel_operations","renderer_transmissions","renderer_listeners","main_handlers","paired_renderer_transmissions","ambiguous_renderer_transmissions","unpaired_literal_renderer_transmissions"],"type":"object"},"native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"preload_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_utility_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sender_validation_observations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"utility_processes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["browser_windows","explicit_web_preferences","preload_entrypoints","context_bridge_apis","exposed_api_members","ipc","sender_validation_observations","utility_processes","resolved_utility_entrypoints","native_addon_bindings","resolved_native_addon_bindings"],"type":"object"},"unknowns":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"}},"required":["schema_version","input_path","format","root_artifact_sha256","inventory_manifest_id","inventory_graph_sha256","summary","statistics","limitations","unknowns","graph","semantic_graph"],"type":"object"}]},{"oneOf":[{"additionalProperties":false,"properties":{"format":{"enum":["asar","directory"],"type":"string"},"graph":{"additionalProperties":false,"properties":{"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},"input_path":{"maxLength":16384,"minLength":1,"type":"string"},"inventory_graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"inventory_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"},"statistics":{"additionalProperties":false,"properties":{"findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"invalid_utf8_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limit_omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nested_asar_containers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parse_failures":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parsed_javascript_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"policy_filtered_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relevant_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_bytes_read":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_files_selected":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated_scopes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"visited_ast_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["relevant_files","nested_asar_containers","text_files_selected","text_bytes_read","omitted_text_files","limit_omitted_text_files","policy_filtered_text_files","invalid_utf8_files","parsed_javascript_files","visited_ast_nodes","findings","modules","parse_failures","truncated_scopes"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"browser_windows":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"context_bridge_apis":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"explicit_web_preferences":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exposed_api_members":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ipc":{"additionalProperties":false,"properties":{"ambiguous_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"dynamic_channel_operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"literal_channels":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"main_handlers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paired_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_listeners":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unpaired_literal_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["operations","literal_channels","dynamic_channel_operations","renderer_transmissions","renderer_listeners","main_handlers","paired_renderer_transmissions","ambiguous_renderer_transmissions","unpaired_literal_renderer_transmissions"],"type":"object"},"native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"preload_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_utility_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sender_validation_observations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"utility_processes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["browser_windows","explicit_web_preferences","preload_entrypoints","context_bridge_apis","exposed_api_members","ipc","sender_validation_observations","utility_processes","resolved_utility_entrypoints","native_addon_bindings","resolved_native_addon_bindings"],"type":"object"}},"required":["schema_version","input_path","format","root_artifact_sha256","inventory_manifest_id","inventory_graph_sha256","graph","summary","statistics","limitations"],"type":"object"},{"additionalProperties":false,"properties":{"format":{"enum":["asar","directory"],"type":"string"},"graph":{"additionalProperties":false,"properties":{"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},"input_path":{"maxLength":16384,"minLength":1,"type":"string"},"inventory_graph_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"inventory_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":2,"type":"number"},"semantic_graph":{"additionalProperties":false,"properties":{"application_graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"families":{"items":{"additionalProperties":false,"properties":{"family":{"enum":["boundary","call-flow","child-process","closure","configuration","data-flow","event","object-flow","promise-ownership","request","resource-lifecycle","timer"],"type":"string"},"omitted_relations":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"retained_relations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete","partial","unknown","unsupported"],"type":"string"},"unknown_ids":{"items":{"pattern":"^jsrg_unknown_[a-f0-9]{64}$","type":"string"},"maxItems":100000,"type":"array"}},"required":["family","status","retained_relations","omitted_relations","unknown_ids"],"type":"object"},"maxItems":12,"minItems":12,"type":"array"},"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_nodes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"omitted_relations":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_nodes","omitted_relations","limits","families"],"type":"object"},"fingerprints":{"items":{"additionalProperties":false,"properties":{"algorithm":{"const":"rea.javascript-semantic-function/v1","type":"string"},"components":{"additionalProperties":false,"properties":{"control_flow_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"effects":{"items":{"enum":["async","child-process","event","network","promise","resource","timer"],"type":"string"},"maxItems":7,"type":"array"},"literal_set_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"normalized_ast_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameter_arity":{"maximum":10000,"minimum":0,"type":"integer"},"relation_shape_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["parameter_arity","normalized_ast_sha256","control_flow_sha256","relation_shape_sha256","literal_set_sha256","effects"],"type":"object"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"fingerprint_id":{"pattern":"^jsrg_fingerprint_[a-f0-9]{64}$","type":"string"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"function_node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"status":{"enum":["complete","partial","unavailable"],"type":"string"}},"required":["function_node_id","algorithm","status","components","limitations","evidence","fingerprint_id","fingerprint_sha256"],"type":"object"},"maxItems":20000,"type":"array"},"graph_id":{"pattern":"^jsrg_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"application_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"function_node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"identity":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"role_key":{"maxLength":1024,"minLength":1,"type":"string"},"source_range":{"anyOf":[{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["start","end"],"type":"object"},{"type":"null"}]}},"required":["artifact_sha256","module_path","source_range","role_key"],"type":"object"},"kind":{"enum":["module","function","parameter","binding","expression","literal","property-slot","call-site","return-site","closure-capture","promise","task","event","listener","timer","child-process","stdio","signal","config-source","request","response","boundary","resource","unknown-frontier"],"type":"string"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["kind","identity","function_node_id","application_node_ids","label","properties","evidence","node_id","identifier_strategy"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"relations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"relation_id":{"pattern":"^jsrg_relation_[a-f0-9]{64}$","type":"string"},"resolution":{"enum":["resolved","candidate"],"type":"string"},"source_node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","resolution","properties","evidence","relation_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"root_node_ids":{"items":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptSemanticRelationGraph","type":"string"},"schema_version":{"const":1,"type":"number"},"unknowns":{"items":{"additionalProperties":false,"properties":{"candidate_node_ids":{"items":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"family":{"enum":["boundary","call-flow","child-process","closure","configuration","data-flow","event","object-flow","promise-ownership","request","resource-lifecycle","timer"],"type":"string"},"node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"reason":{"enum":["ambiguous-target","bound-reached","dynamic-call","dynamic-property","eval-or-generated-code","incomplete-module","missing-source","unsupported-syntax"],"type":"string"},"relation_kinds":{"items":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"maxItems":45,"minItems":1,"type":"array"},"unknown_id":{"pattern":"^jsrg_unknown_[a-f0-9]{64}$","type":"string"}},"required":["node_id","family","relation_kinds","reason","detail","candidate_node_ids","evidence","unknown_id"],"type":"object"},"maxItems":100000,"type":"array"}},"required":["schema","schema_version","root_artifact_sha256","application_graph_id","root_node_ids","nodes","relations","fingerprints","unknowns","coverage","limitations","graph_id"],"type":"object"},"statistics":{"additionalProperties":false,"properties":{"findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"invalid_utf8_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"limit_omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nested_asar_containers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parse_failures":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"parsed_javascript_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"policy_filtered_text_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"relevant_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_bytes_read":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"text_files_selected":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated_scopes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"visited_ast_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["relevant_files","nested_asar_containers","text_files_selected","text_bytes_read","omitted_text_files","limit_omitted_text_files","policy_filtered_text_files","invalid_utf8_files","parsed_javascript_files","visited_ast_nodes","findings","modules","parse_failures","truncated_scopes"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"browser_windows":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"context_bridge_apis":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"explicit_web_preferences":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exposed_api_members":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"ipc":{"additionalProperties":false,"properties":{"ambiguous_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"dynamic_channel_operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"literal_channels":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"main_handlers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paired_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_listeners":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unpaired_literal_renderer_transmissions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["operations","literal_channels","dynamic_channel_operations","renderer_transmissions","renderer_listeners","main_handlers","paired_renderer_transmissions","ambiguous_renderer_transmissions","unpaired_literal_renderer_transmissions"],"type":"object"},"native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"preload_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_native_addon_bindings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"resolved_utility_entrypoints":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sender_validation_observations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"utility_processes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["browser_windows","explicit_web_preferences","preload_entrypoints","context_bridge_apis","exposed_api_members","ipc","sender_validation_observations","utility_processes","resolved_utility_entrypoints","native_addon_bindings","resolved_native_addon_bindings"],"type":"object"}},"required":["schema_version","input_path","format","root_artifact_sha256","inventory_manifest_id","inventory_graph_sha256","graph","summary","statistics","limitations","semantic_graph"],"type":"object"}]}]}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Analyze Javascript Application"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Reconcile verified static JavaScript application graphs with existing passive web/Electron CDP, passive V8 Inspector, or provider-owned active Electron Evidence. Active Electron captures contribute an explicitly partial target-only runtime record; they never invent renderer scripts, frames, workers, or execution claims. Exact captured-source digests take priority over caller-declared file/URL mappings; target, frame, script, and worker ambiguity remains explicit, and source-map authority stays separate.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"runtime_observations":[{"authority":"external-service","confidence":"observed","environment":null,"evidence_id":"ev_e9ffe953ecde3cee6f8b1e2e2fc8be64bf58d17b3c680d1230587294f6b02c3a","evidence_links":[],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"browser":{"js_version":"1","product":"Electron/example","protocol_version":"1.3","revision":"example","user_agent":"Electron example"},"capture_window":{"ended_at":"2026-07-15T00:00:00.100Z","observation_ms":100,"started_at":"2026-07-15T00:00:00.000Z"},"completeness":{"attach_limited_sections":[],"conditions":["complete_within_window"],"dropped_events":{"console_events":0,"network_requests":0,"scripts":0,"timeline_events":0,"total":0,"webmcp_tools":0,"websocket_connections":0,"websocket_frames":0},"excluded":[],"policy_filtered_sections":[],"status":"complete_within_window","truncated_sections":[],"unavailable_sections":[]},"dom":{"nodes":[],"total_nodes":0},"frames":[],"limitations":["Example passive capture."],"resources":[],"schema_version":1,"scripts":{"items":[{"cdp_hash":"example","file_path":"/Applications/Example.app/Contents/Resources/app/renderer.js","frame_id":null,"is_module":true,"language":"JavaScript","length":29,"script_key":"electron_script_4444444444444444444444444444444444444444444444444444444444444444","source":{"artifact":{"bytes":29,"charset":"utf-8","media_type":"text/javascript","sha256":"c4c0d760a4c84f0e182de99f6ef89ef10831f8170e486c4d4bd934924151ba64","text":"export const example = true;\\n","uri":"rea://web-content/sha256/c4c0d760a4c84f0e182de99f6ef89ef10831f8170e486c4d4bd934924151ba64"},"included":true}}],"total":1},"target":{"attached":false,"file_path":"/Applications/Example.app/Contents/Resources/app/index.html","target_id":"example-target","title":"Example","type":"page"},"workers":[]},"operation":"inspect_electron_page","parameters":{"allowed_file_roots":["/Applications/Example.app/Contents/Resources/app"],"cdp_endpoint":"http://127.0.0.1:9223","include_script_sources":true,"source_capture_approved":true,"target_id":"example-target"},"predicate_type":"rea.electron-page-inspection/v1","provider":{"id":"rea-cdp-electron","name":"REA Electron file-page CDP observation provider","version":"1"},"raw_result":null,"schema_version":2,"subject":null}],"static_layers":[{"analysis":{"authority":"shipped-artifact","confidence":"derived","environment":null,"evidence_id":"ev_9f1239eec535ee47ca0af92a544b16a3b4be7ce7478e0a7a6b6201b91cc39d5c","evidence_links":[],"limitations":[],"locations":[],"normalized_result":{"format":"directory","graph":{"coverage":{"limits":[],"omitted_count":0,"status":"complete","truncated":false},"edges":[],"graph_id":"jag_361585714eb0138287533474fede3727b19167348e3843c577f82b68337c7234","limitations":[],"nodes":[{"identity":{"sha256":"c4c0d760a4c84f0e182de99f6ef89ef10831f8170e486c4d4bd934924151ba64","stability":"global-exact","strategy":"content-digest"},"kind":"javascript-asset","node_id":"jag_node_3c82da5492d90eb5b0bee41c1a994d88b7ba98c0b4955270d70e57a76e224c2e","observations":[{"evidence":{"artifact":{"artifact_id":"art_c4c0d760a4c84f0e182de99f6ef89ef10831f8170e486c4d4bd934924151ba64","available":true,"sha256":"c4c0d760a4c84f0e182de99f6ef89ef10831f8170e486c4d4bd934924151ba64"},"authority":"artifact-bytes","confidence":"exact","coverage":{"limits":[],"omitted_count":0,"status":"complete","truncated":false},"evidence_ids":[],"extractor":{"executable_sha256":null,"name":"rea-javascript-application","operation":"inventory-relevant-file","version":"1"},"limitations":[],"location":{"available":true,"value":{"kind":"artifact-path","path":"renderer.js"}},"state":"observed"},"identifier_strategy":{"stability":"observation-exact","strategy":"semantic-content-sha256"},"label":"renderer.js","observation_id":"jag_observation_20b4d076ce370db14ae2b477915624c62e0c4a0c9e56803a2c5cb4fa60c16230","properties":{"bytes":29,"path":"renderer.js"}}]}],"root_node_ids":["jag_node_3c82da5492d90eb5b0bee41c1a994d88b7ba98c0b4955270d70e57a76e224c2e"],"schema":"JavaScriptApplicationGraph","schema_version":1},"input_path":"/Applications/Example.app/Contents/Resources/app","inventory_graph_sha256":"3333333333333333333333333333333333333333333333333333333333333333","inventory_manifest_id":"agm_2222222222222222222222222222222222222222222222222222222222222222","limitations":[],"root_artifact_sha256":"1111111111111111111111111111111111111111111111111111111111111111","schema_version":1,"statistics":{"findings":0,"invalid_utf8_files":0,"limit_omitted_text_files":0,"modules":0,"nested_asar_containers":0,"omitted_text_files":0,"parse_failures":0,"parsed_javascript_files":1,"policy_filtered_text_files":0,"relevant_files":1,"text_bytes_read":29,"text_files_selected":1,"truncated_scopes":0,"visited_ast_nodes":1},"summary":{"browser_windows":0,"context_bridge_apis":0,"explicit_web_preferences":0,"exposed_api_members":0,"ipc":{"ambiguous_renderer_transmissions":0,"dynamic_channel_operations":0,"literal_channels":0,"main_handlers":0,"operations":0,"paired_renderer_transmissions":0,"renderer_listeners":0,"renderer_transmissions":0,"unpaired_literal_renderer_transmissions":0},"native_addon_bindings":0,"preload_entrypoints":0,"resolved_native_addon_bindings":0,"resolved_utility_entrypoints":0,"sender_validation_observations":0,"utility_processes":0}},"operation":"analyze_javascript_application","parameters":{"approved":true,"source_map_read_approved":false},"predicate_type":"rea.javascript-application-analysis/v1","provider":{"id":"rea-javascript-application","name":"REA JavaScript application analyzer","version":"1"},"raw_result":null,"schema_version":2,"subject":{"architecture":null,"digest":{"sha256":"1111111111111111111111111111111111111111111111111111111111111111"},"format":"directory","local_path":"/Applications/Example.app/Contents/Resources/app","name":"app"}},"role":"application"}]}],"properties":{"limits":{"additionalProperties":false,"default":{"max_reconciliation_items":20000,"max_runtime_entities":10000,"max_static_load_states":20000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_reconciliation_items":{"default":20000,"description":"Maximum permitted reconciliation items for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_runtime_entities":{"default":10000,"description":"Maximum permitted runtime entities for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_static_load_states":{"default":20000,"description":"Maximum permitted static load states for this operation.","maximum":50000,"minimum":1,"type":"integer"}},"type":"object"},"runtime_observations":{"description":"Value for runtime observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"static_layers":{"description":"Value for static layers.","items":{"additionalProperties":false,"properties":{"analysis":{"additionalProperties":false,"description":"Value for analysis.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"role":{"description":"Value for role.","enum":["application","cache","assets"],"type":"string"},"runtime_mappings":{"default":[],"description":"Value for runtime mappings.","items":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_prefix":{"default":"","description":"Value for artifact prefix.","maxLength":4096,"type":"string"},"kind":{"const":"file-root","description":"Value for kind.","type":"string"},"root":{"description":"Value for root.","maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","root"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_prefix":{"default":"","description":"Value for artifact prefix.","maxLength":4096,"type":"string"},"kind":{"const":"url-prefix","description":"Value for kind.","type":"string"},"prefix":{"description":"Value for prefix.","maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","prefix"],"type":"object"}]},"maxItems":32,"type":"array"}},"required":["role","analysis"],"type":"object"},"maxItems":8,"minItems":1,"type":"array"}},"required":["static_layers","runtime_observations"],"type":"object"},"kind":"electron-provider","name":"reconcile_javascript_runtime","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"omitted_graph_items":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_reconciliation_items":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_runtime_entities":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_static_load_states":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_runtime_entities","omitted_reconciliation_items","omitted_static_load_states","omitted_graph_items"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":40,"minItems":2,"type":"array"},"graph":{"additionalProperties":false,"properties":{"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"reconciliation_id":{"pattern":"^jrr_[a-f0-9]{64}$","type":"string"},"reconciliations":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"basis":{"enum":["content-and-location","content-sha256","module-source-sha256","artifact-path","operator-file-mapping","operator-url-mapping","none"],"type":"string"},"candidate_static_count":{"maximum":800000,"minimum":0,"type":"integer"},"candidate_static_nodes":{"items":{"additionalProperties":false,"properties":{"static_layer_id":{"pattern":"^jrl_[a-f0-9]{64}$","type":"string"},"static_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["static_layer_id","static_node_id"],"type":"object"},"maxItems":1000,"type":"array"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"entity_kind":{"enum":["target","frame","script","worker"],"type":"string"},"reason":{"enum":["content-and-location-match","unique-content-match","unique-location-match","ambiguous-static-candidates","captured-content-disagrees-with-static-location","no-static-content-match","no-authorized-location-mapping","runtime-frame-unattributed","static-or-runtime-coverage-incomplete","reconciliation-limit-reached"],"type":"string"},"reconciliation_id":{"pattern":"^jrr_item_[a-f0-9]{64}$","type":"string"},"runtime_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"runtime_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"static_layer_id":{"pattern":"^jrl_[a-f0-9]{64}$","type":"string"},"static_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"status":{"const":"matched","type":"string"}},"required":["reconciliation_id","entity_kind","runtime_evidence_id","runtime_node_id","basis","confidence","reason","candidate_static_count","candidate_static_nodes","static_layer_id","static_node_id","status"],"type":"object"},{"additionalProperties":false,"properties":{"basis":{"enum":["content-and-location","content-sha256","module-source-sha256","artifact-path","operator-file-mapping","operator-url-mapping","none"],"type":"string"},"candidate_static_count":{"maximum":800000,"minimum":0,"type":"integer"},"candidate_static_nodes":{"items":{"additionalProperties":false,"properties":{"static_layer_id":{"pattern":"^jrl_[a-f0-9]{64}$","type":"string"},"static_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["static_layer_id","static_node_id"],"type":"object"},"maxItems":1000,"type":"array"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"entity_kind":{"enum":["target","frame","script","worker"],"type":"string"},"reason":{"enum":["content-and-location-match","unique-content-match","unique-location-match","ambiguous-static-candidates","captured-content-disagrees-with-static-location","no-static-content-match","no-authorized-location-mapping","runtime-frame-unattributed","static-or-runtime-coverage-incomplete","reconciliation-limit-reached"],"type":"string"},"reconciliation_id":{"pattern":"^jrr_item_[a-f0-9]{64}$","type":"string"},"runtime_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"runtime_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"static_layer_id":{"type":"null"},"static_node_id":{"type":"null"},"status":{"enum":["ambiguous","unmatched","unknown"],"type":"string"}},"required":["reconciliation_id","entity_kind","runtime_evidence_id","runtime_node_id","basis","confidence","reason","candidate_static_count","candidate_static_nodes","static_layer_id","static_node_id","status"],"type":"object"}]},"maxItems":50000,"type":"array"},"runtime_captures":{"items":{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"enum":["browser","electron","v8-inspector","electron-active"],"type":"string"},"scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scripts_complete_within_scope":{"type":"boolean"},"target_key":{"maxLength":4096,"minLength":1,"type":"string"},"target_location":{"maxLength":4096,"minLength":1,"type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"workers":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["evidence_id","capture_sha256","kind","target_node_id","target_key","target_location","frames","scripts","workers","scripts_complete_within_scope"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"schema_version":{"const":1,"type":"number"},"source_map_authority":{"additionalProperties":false,"properties":{"limitation":{"maxLength":4096,"minLength":1,"type":"string"},"runtime_script_declarations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_layers_with_read_approval":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"used_for_primary_matching":{"const":false,"type":"boolean"}},"required":["used_for_primary_matching","static_layers_with_read_approval","runtime_script_declarations","limitation"],"type":"object"},"static_layers":{"items":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"format":{"enum":["asar","directory"],"type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"input_path":{"maxLength":16384,"minLength":1,"type":"string"},"layer_id":{"pattern":"^jrl_[a-f0-9]{64}$","type":"string"},"role":{"enum":["application","cache","assets"],"type":"string"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_mappings":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_prefix":{"default":"","maxLength":4096,"type":"string"},"kind":{"const":"file-root","type":"string"},"root":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","root","artifact_prefix"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_prefix":{"default":"","maxLength":4096,"type":"string"},"kind":{"const":"url-prefix","type":"string"},"prefix":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","prefix","artifact_prefix"],"type":"object"}]},"maxItems":32,"type":"array"}},"required":["layer_id","role","evidence_id","graph_id","root_artifact_sha256","input_path","format","runtime_mappings"],"type":"object"},"maxItems":8,"minItems":1,"type":"array"},"static_load_states":{"items":{"additionalProperties":false,"properties":{"kind":{"enum":["javascript-asset","javascript-chunk","javascript-module"],"type":"string"},"reason":{"enum":["runtime-script-correspondence","containing-asset-was-loaded","not-observed-in-bounded-capture","layer-outside-runtime-scope","static-or-runtime-coverage-incomplete"],"type":"string"},"runtime_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":10000,"type":"array"},"static_layer_id":{"pattern":"^jrl_[a-f0-9]{64}$","type":"string"},"static_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"status":{"enum":["loaded","resident-in-loaded-asset","not-observed-in-capture","unknown"],"type":"string"}},"required":["static_layer_id","static_node_id","kind","status","runtime_node_ids","reason"],"type":"object"},"maxItems":50000,"type":"array"},"summary":{"additionalProperties":false,"properties":{"ambiguous":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"matched":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"runtime_frames":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"runtime_scripts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"runtime_targets":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"runtime_workers":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_loaded":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_not_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_resident":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unmatched":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["runtime_targets","runtime_frames","runtime_scripts","runtime_workers","matched","ambiguous","unmatched","unknown","static_loaded","static_resident","static_not_observed","static_unknown"],"type":"object"}},"required":["schema_version","reconciliation_id","static_layers","runtime_captures","graph","summary","reconciliations","static_load_states","source_map_authority","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Reconcile Javascript Runtime"},{"analysisOperation":null,"annotations":{"destructiveHint":true,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Use this for an explicitly approved, provider-owned Electron run when passive CDP or Inspector observation cannot exercise application behavior. REA owns startup and teardown, accepts bounded click/wait actions plus window-targeted renderer reload/crash and synthetic open-url/second-instance delivery, and returns correlated window/WebContents/process/preload/session/navigation/shell/IPC evidence without retaining payload values. Results identify observed and unavailable event families, coverage status, action targets, and truncation. External shell, navigation, permission, download, popup, updater, and OS-integration effects are blocked and recorded. Use passive Electron tools for observation-only work.","effects":{"accessesNetwork":true,"changesUiState":true,"idempotent":false,"launchesProcess":true,"mayDiscardData":true,"mutatesSession":true,"mutatesTarget":true,"writesFilesystem":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"actions":[{"kind":"click","selector":"#run","step_id":"exercise-ipc"}],"application_path":"/Applications/Example.app/Contents/Resources/main.js","application_root":"/Applications/Example.app/Contents/Resources","approved":true,"args":[],"executable_path":"/Applications/Electron.app/Contents/MacOS/Electron","limits":{"action_timeout_ms":5000,"max_actions":20,"max_duration_ms":60000,"max_ipc_events":2000,"max_processes":32,"max_windows":32},"schema_version":1}],"properties":{"actions":{"default":[],"description":"Value for actions.","items":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"click","description":"Value for kind.","type":"string"},"selector":{"description":"Value for selector.","maxLength":512,"minLength":1,"type":"string"},"step_id":{"description":"Value for step id.","maxLength":128,"minLength":1,"type":"string"},"window_index":{"default":0,"description":"Value for window index.","maximum":99,"minimum":0,"type":"integer"}},"required":["step_id","kind","selector"],"type":"object"},{"additionalProperties":false,"properties":{"duration_ms":{"description":"Value for duration ms.","maximum":10000,"minimum":0,"type":"integer"},"kind":{"const":"wait","description":"Value for kind.","type":"string"},"step_id":{"description":"Value for step id.","maxLength":128,"minLength":1,"type":"string"},"window_index":{"description":"Value for window index.","maximum":99,"minimum":0,"type":"integer"}},"required":["step_id","kind","duration_ms"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"renderer-reload","description":"Value for kind.","type":"string"},"step_id":{"description":"Value for step id.","maxLength":128,"minLength":1,"type":"string"},"window_index":{"default":0,"description":"Value for window index.","maximum":99,"minimum":0,"type":"integer"}},"required":["step_id","kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"renderer-crash","description":"Value for kind.","type":"string"},"step_id":{"description":"Value for step id.","maxLength":128,"minLength":1,"type":"string"},"window_index":{"default":0,"description":"Value for window index.","maximum":99,"minimum":0,"type":"integer"}},"required":["step_id","kind"],"type":"object"},{"additionalProperties":false,"properties":{"delivery":{"description":"Value for delivery.","enum":["open-url","second-instance"],"type":"string"},"kind":{"const":"deep-link","description":"Value for kind.","type":"string"},"step_id":{"description":"Value for step id.","maxLength":128,"minLength":1,"type":"string"},"url":{"description":"Value for url.","maxLength":4096,"minLength":1,"type":"string"}},"required":["step_id","kind","delivery","url"],"type":"object"}]},"maxItems":100,"type":"array"},"application_path":{"description":"Local filesystem path for application.","maxLength":16384,"minLength":1,"type":"string"},"application_root":{"description":"Approved canonical filesystem application root.","maxLength":16384,"minLength":1,"type":"string"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"args":{"default":[],"description":"Value for args.","items":{"maxLength":4096,"type":"string"},"maxItems":32,"type":"array"},"executable_path":{"description":"Local filesystem path for executable.","maxLength":16384,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"action_timeout_ms":5000,"max_actions":20,"max_duration_ms":60000,"max_ipc_events":2000,"max_processes":32,"max_runtime_events":5000,"max_windows":32},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"action_timeout_ms":{"default":5000,"description":"Value for action timeout ms.","maximum":30000,"minimum":1,"type":"integer"},"max_actions":{"default":20,"description":"Maximum permitted actions for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_duration_ms":{"default":60000,"description":"Maximum permitted duration ms for this operation.","maximum":120000,"minimum":1,"type":"integer"},"max_ipc_events":{"default":2000,"description":"Maximum permitted ipc events for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_processes":{"default":32,"description":"Maximum permitted processes for this operation.","maximum":100,"minimum":1,"type":"integer"},"max_runtime_events":{"default":5000,"description":"Maximum permitted runtime events for this operation.","maximum":20000,"minimum":1,"type":"integer"},"max_windows":{"default":32,"description":"Maximum permitted windows for this operation.","maximum":100,"minimum":1,"type":"integer"}},"type":"object"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","executable_path","application_path","application_root","approved"],"type":"object"},"kind":"electron-provider","name":"capture_electron_scenario","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"actions":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"type":"null"},"kind":{"enum":["click","wait","renderer-reload","renderer-crash","deep-link"],"type":"string"},"status":{"const":"completed","type":"string"},"step_id":{"maxLength":128,"minLength":1,"type":"string"},"target":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"window_index":{"anyOf":[{"maximum":99,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["step_id","kind","window_index","target","elapsed_ms","status","error"],"type":"object"},{"additionalProperties":false,"properties":{"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"error":{"type":"string"},"kind":{"enum":["click","wait","renderer-reload","renderer-crash","deep-link"],"type":"string"},"status":{"enum":["failed","cancelled"],"type":"string"},"step_id":{"maxLength":128,"minLength":1,"type":"string"},"target":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"window_index":{"anyOf":[{"maximum":99,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["step_id","kind","window_index","target","elapsed_ms","status","error"],"type":"object"}]},"maxItems":100,"type":"array"},"application":{"additionalProperties":false,"properties":{"application_path":{"maxLength":16384,"minLength":1,"type":"string"},"cleanup":{"const":"terminated-owned-process","type":"string"},"electron_version":{"maxLength":256,"minLength":1,"type":"string"},"executable_path":{"maxLength":16384,"minLength":1,"type":"string"},"process_ownership":{"const":"provider-owned","type":"string"}},"required":["executable_path","application_path","electron_version","process_ownership","cleanup"],"type":"object"},"coverage":{"additionalProperties":false,"default":{"observed_event_families":[],"observed_roles":[],"pre_capture_activity":"unavailable","status":"partial_attach","unavailable_event_families":[]},"properties":{"observed_event_families":{"items":{"maxLength":128,"type":"string"},"maxItems":32,"type":"array"},"observed_roles":{"items":{"maxLength":128,"type":"string"},"maxItems":16,"type":"array"},"pre_capture_activity":{"const":"unavailable","type":"string"},"status":{"enum":["complete","partial_attach","capture_truncated","hook_conflict","target_exited","cleanup_failed"],"type":"string"},"unavailable_event_families":{"items":{"maxLength":128,"type":"string"},"maxItems":32,"type":"array"}},"required":["status","observed_event_families","unavailable_event_families","observed_roles","pre_capture_activity"],"type":"object"},"ipc":{"additionalProperties":false,"properties":{"events":{"items":{"additionalProperties":false,"properties":{"argument_shapes":{"items":{"maxLength":64,"type":"string"},"maxItems":32,"type":"array"},"argument_shapes_truncated":{"default":false,"type":"boolean"},"artifact_path":{"anyOf":[{"maxLength":16384,"type":"string"},{"type":"null"}],"default":null},"artifact_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"default":null},"capture_method":{"default":"api-wrapper","enum":["api-wrapper","event-emitter","process-hook"],"type":"string"},"channel":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]},"channel_truncated":{"default":false,"type":"boolean"},"correlation_id":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}],"default":null},"direction":{"anyOf":[{"enum":["renderer-to-main","main-to-renderer","main-to-utility","utility-to-main"],"type":"string"},{"type":"null"}]},"error":{"type":"boolean"},"event":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}]},"frame":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}],"default":null},"kind":{"enum":["main-handler-invocation","main-event-invocation","utility-process-fork","utility-process-message","ipc-main-to-renderer","ipc-utility-to-main","ipc-renderer-send","ipc-renderer-invoke","ipc-renderer-post-message"],"type":"string"},"phase":{"anyOf":[{"enum":["attempted","completed","blocked","failed","observed"],"type":"string"},{"type":"null"}]},"process_type":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}]},"receiver":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"result_shape":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}]},"sender":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"source":{"default":"electron-active-hook","maxLength":64,"type":"string"},"target":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]}},"required":["sequence","correlation_id","kind","channel","channel_truncated","frame","argument_shapes","argument_shapes_truncated","result_shape","process_type","source","capture_method","artifact_path","artifact_sha256","error"],"type":"object"},"maxItems":10000,"type":"array"},"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"}},"required":["events","observed","retained","truncated"],"type":"object"},"limitations":{"items":{"maxLength":4096,"type":"string"},"maxItems":100,"type":"array"},"processes":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"name":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"service_name":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"type":{"maxLength":128,"minLength":1,"type":"string"}},"required":["pid","type","name","service_name"],"type":"object"},"maxItems":100,"type":"array"},"truncated":{"type":"boolean"}},"required":["items","truncated"],"type":"object"},"schema_version":{"const":1,"type":"number"},"timeline":{"additionalProperties":false,"default":{"events":[],"observed":0,"retained":0,"truncated":false},"properties":{"events":{"items":{"additionalProperties":false,"properties":{"argument_shapes":{"items":{"maxLength":64,"type":"string"},"maxItems":32,"type":"array"},"argument_shapes_truncated":{"type":"boolean"},"artifact_path":{"anyOf":[{"maxLength":16384,"type":"string"},{"type":"null"}]},"artifact_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"capture_method":{"enum":["api-wrapper","event-emitter","process-hook"],"type":"string"},"channel":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]},"channel_truncated":{"type":"boolean"},"correlation_id":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}],"default":null},"direction":{"anyOf":[{"enum":["renderer-to-main","main-to-renderer","main-to-utility","utility-to-main"],"type":"string"},{"type":"null"}]},"error":{"type":"boolean"},"event":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}]},"frame":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"kind":{"enum":["main-handler-invocation","main-event-invocation","utility-process-fork","utility-process-message","ipc-main-to-renderer","ipc-utility-to-main","ipc-renderer-send","ipc-renderer-invoke","ipc-renderer-post-message","app-lifecycle","window-lifecycle","web-contents-lifecycle","navigation","shell-attempt","process-lifecycle","permission","popup-attempt","download","protocol","preload","native-addon","updater","error"],"type":"string"},"phase":{"enum":["attempted","completed","blocked","failed","observed"],"type":"string"},"process_type":{"anyOf":[{"maxLength":128,"type":"string"},{"type":"null"}]},"receiver":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"result_shape":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}]},"sender":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]},"sequence":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"source":{"maxLength":64,"type":"string"},"target":{"anyOf":[{"maxLength":256,"type":"string"},{"type":"null"}]}},"required":["sequence","correlation_id","kind","event","phase","channel","channel_truncated","direction","sender","receiver","frame","target","argument_shapes","argument_shapes_truncated","result_shape","process_type","source","capture_method","artifact_path","artifact_sha256","error"],"type":"object"},"maxItems":20000,"type":"array"},"observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"}},"required":["events","observed","retained","truncated"],"type":"object"},"windows":{"items":{"additionalProperties":false,"properties":{"destroyed":{"type":"boolean"},"title":{"maxLength":16384,"type":"string"},"url":{"maxLength":65536,"type":"string"},"visible":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"web_contents_id":{"maxLength":256,"type":"string"},"window_id":{"maxLength":256,"type":"string"}},"required":["window_id","web_contents_id","url","title","visible","destroyed"],"type":"object"},"maxItems":100,"type":"array"},"windows_truncated":{"type":"boolean"}},"required":["schema_version","application","actions","windows","windows_truncated","processes","ipc","timeline","coverage","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Capture Electron Scenario"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"List attachable Node/Electron V8 Inspector targets from one approved literal-loopback endpoint. Only targets inside exact canonical file roots or exact HTTP(S) origins are retained; excluded target locations never enter Evidence.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"allowed_file_roots":["/opt/example-app"],"allowed_origins":[],"approved":true,"inspector_endpoint":"http://127.0.0.1:9229","limit":100,"offset":0}],"properties":{"allowed_file_roots":{"default":[],"description":"Approved canonical filesystem allowed file roots.","items":{"maxLength":16384,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"inspector_endpoint":{"description":"Value for inspector endpoint.","maxLength":2048,"minLength":1,"type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":200,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["inspector_endpoint","approved"],"type":"object"},"kind":"runtime-provider","name":"list_javascript_runtime_targets","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"excluded":{"additionalProperties":false,"properties":{"outside_file_roots":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outside_origins":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unconnectable":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unsupported_location":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["outside_file_roots","outside_origins","unsupported_location","unconnectable"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"runtime":{"additionalProperties":false,"properties":{"product":{"maxLength":1024,"minLength":1,"type":"string"},"protocol_version":{"maxLength":100,"minLength":1,"type":"string"},"v8_version":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]}},"required":["product","protocol_version","v8_version"],"type":"object"},"schema_version":{"const":1,"type":"number"},"targets":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"authority":{"const":"scope-fallback","type":"string"},"file_path":{"maxLength":16384,"minLength":1,"type":"string"},"kind":{"const":"file","type":"string"}},"required":["kind","file_path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"origin":{"maxLength":2048,"minLength":1,"type":"string"},"sanitized_url":{"maxLength":65536,"minLength":1,"type":"string"}},"required":["kind","origin","sanitized_url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"builtin","type":"string"},"specifier":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","specifier"],"type":"object"}]},"protocol_type":{"maxLength":100,"minLength":1,"type":"string"},"target_id":{"maxLength":256,"minLength":1,"type":"string"}},"required":["target_id","protocol_type","attached","location"],"type":"object"},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["schema_version","runtime","targets","excluded","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"List Javascript Runtime Targets"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Attach passively to one exact approved Node/Electron V8 Inspector target and capture bounded Debugger.scriptParsed plus Runtime execution-context events. REA sends only Runtime.enable and Debugger.enable: it never evaluates, pauses, resumes, reads source, or instruments the target. require/import edges, EventEmitter activity, and Electron IPC remain explicit unknowns; reconcile the returned Evidence with static Application Graph Evidence using reconcile_javascript_runtime.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"allowed_file_roots":["/opt/example-app"],"allowed_origins":[],"approved":true,"inspector_endpoint":"http://127.0.0.1:9229","limits":{"max_events":10000,"max_execution_contexts":1000,"max_location_bytes":16384,"max_scripts":2000,"max_total_metadata_bytes":4194304},"observation_ms":100,"runtime_kind":"node","target_id":"TARGET_ID_FROM_LIST_JAVASCRIPT_RUNTIME_TARGETS"}],"properties":{"allowed_file_roots":{"default":[],"description":"Approved canonical filesystem allowed file roots.","items":{"maxLength":16384,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"allowed_origins":{"description":"Value for allowed origins.","items":{"maxLength":2048,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"inspector_endpoint":{"description":"Value for inspector endpoint.","maxLength":2048,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_events":10000,"max_execution_contexts":1000,"max_location_bytes":16384,"max_scripts":2000,"max_total_metadata_bytes":4194304},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_events":{"default":10000,"description":"Maximum permitted events for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_execution_contexts":{"default":1000,"description":"Maximum permitted execution contexts for this operation.","maximum":5000,"minimum":1,"type":"integer"},"max_location_bytes":{"default":16384,"description":"Maximum permitted location bytes for this operation.","maximum":65536,"minimum":64,"type":"integer"},"max_scripts":{"default":2000,"description":"Maximum permitted scripts for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_total_metadata_bytes":{"default":4194304,"description":"Maximum permitted total metadata bytes for this operation.","maximum":33554432,"minimum":1024,"type":"integer"}},"type":"object"},"observation_ms":{"default":100,"description":"Value for observation ms.","maximum":10000,"minimum":0,"type":"integer"},"runtime_kind":{"description":"Value for runtime kind.","enum":["node","electron-main","electron-preload","electron-renderer"],"type":"string"},"target_id":{"description":"Exact authorized CDP target identifier.","maxLength":256,"minLength":1,"type":"string"}},"required":["inspector_endpoint","approved","target_id","runtime_kind"],"type":"object"},"kind":"runtime-provider","name":"observe_javascript_runtime","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"capture":{"additionalProperties":false,"properties":{"events_dropped":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"events_observed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"events_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"metadata_bytes_retained":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observation_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"type":"boolean"},"truncation_reasons":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":20,"type":"array"}},"required":["observation_ms","events_observed","events_retained","events_dropped","metadata_bytes_retained","truncated","truncation_reasons"],"type":"object"},"directly_observed":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"execution_contexts":{"items":{"additionalProperties":false,"properties":{"context_key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]},"origin":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"null"}]},"state":{"enum":["created","destroyed","cleared"],"type":"string"}},"required":["context_key","state","name","origin"],"type":"object"},"type":"array"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"runtime":{"additionalProperties":false,"properties":{"product":{"maxLength":1024,"minLength":1,"type":"string"},"protocol_version":{"maxLength":100,"minLength":1,"type":"string"},"v8_version":{"anyOf":[{"maxLength":1024,"type":"string"},{"type":"null"}]}},"required":["product","protocol_version","v8_version"],"type":"object"},"schema_version":{"const":1,"type":"number"},"scripts":{"additionalProperties":false,"properties":{"excluded":{"additionalProperties":false,"properties":{"invalid_protocol_value":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outside_file_roots":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outside_origins":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unsupported_location":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["outside_file_roots","outside_origins","unsupported_location","invalid_protocol_value"],"type":"object"},"items":{"items":{"additionalProperties":false,"properties":{"cdp_hash":{"anyOf":[{"maxLength":512,"type":"string"},{"type":"null"}]},"execution_context_key":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}]},"is_module":{"type":"boolean"},"length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"authority":{"const":"scope-fallback","type":"string"},"file_path":{"maxLength":16384,"minLength":1,"type":"string"},"kind":{"const":"file","type":"string"}},"required":["kind","file_path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"origin":{"maxLength":2048,"minLength":1,"type":"string"},"sanitized_url":{"maxLength":65536,"minLength":1,"type":"string"}},"required":["kind","origin","sanitized_url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"builtin","type":"string"},"specifier":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","specifier"],"type":"object"}]},"script_key":{"pattern":"^v8_script_[a-f0-9]{64}$","type":"string"},"status":{"const":"observed-loaded","type":"string"}},"required":["script_key","location","execution_context_key","cdp_hash","length","is_module","status"],"type":"object"},"type":"array"},"observed_total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","observed_total","excluded"],"type":"object"},"target":{"additionalProperties":false,"properties":{"attached":{"type":"boolean"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"authority":{"const":"scope-fallback","type":"string"},"file_path":{"maxLength":16384,"minLength":1,"type":"string"},"kind":{"const":"file","type":"string"}},"required":["kind","file_path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"origin":{"maxLength":2048,"minLength":1,"type":"string"},"sanitized_url":{"maxLength":65536,"minLength":1,"type":"string"}},"required":["kind","origin","sanitized_url"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"builtin","type":"string"},"specifier":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","specifier"],"type":"object"}]},"protocol_type":{"maxLength":100,"minLength":1,"type":"string"},"runtime_kind":{"enum":["node","electron-main","electron-preload","electron-renderer"],"type":"string"},"runtime_kind_authority":{"const":"caller-declared-unverified","type":"string"},"target_id":{"maxLength":256,"minLength":1,"type":"string"}},"required":["target_id","protocol_type","attached","location","runtime_kind","runtime_kind_authority"],"type":"object"},"unavailable_without_instrumentation":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"unknowns":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"}},"required":["schema_version","runtime","target","capture","scripts","execution_contexts","directly_observed","unavailable_without_instrumentation","unknowns","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Observe Javascript Runtime"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Trace a typed literal seed through an authenticated JavaScript Application Graph supplied as full Evidence or an Evidence ID returned earlier in this session. Explicit direction, depth, node, edge, and path bounds apply. Original static, native, passive-runtime, inferred, and unknown authorities remain distinct; native addon handoffs never open a provider or execute the application.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"application":{"additionalProperties":false,"description":"Value for application.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"direction":{"default":"both","description":"Direction in which to traverse or compare relationships.","enum":["outgoing","incoming","both"],"type":"string"},"limits":{"additionalProperties":false,"default":{"max_depth":12,"max_edges":4000,"max_nodes":2000,"max_paths":100,"max_seed_matches":25},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_depth":{"default":12,"description":"Maximum permitted depth for this operation.","maximum":64,"minimum":0,"type":"integer"},"max_edges":{"default":4000,"description":"Maximum permitted edges for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_nodes":{"default":2000,"description":"Maximum permitted nodes for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_paths":{"default":100,"description":"Maximum permitted paths for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_seed_matches":{"default":25,"description":"Maximum permitted seed matches for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"native_observations":{"default":[],"description":"Value for native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"seed":{"additionalProperties":false,"description":"Value for seed.","properties":{"case_sensitive":{"default":false,"description":"Whether text matching distinguishes uppercase and lowercase.","type":"boolean"},"kind":{"description":"Value for kind.","enum":["node-id","route","string","api","channel","module","native-export"],"type":"string"},"match":{"anyOf":[{"enum":["exact","contains"],"type":"string"},{"type":"null"}],"default":null,"description":"Value for match."},"value":{"description":"Value for value.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"}},"required":["seed","application"],"type":"object"},{"additionalProperties":false,"properties":{"application_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"direction":{"default":"both","description":"Direction in which to traverse or compare relationships.","enum":["outgoing","incoming","both"],"type":"string"},"limits":{"additionalProperties":false,"default":{"max_depth":12,"max_edges":4000,"max_nodes":2000,"max_paths":100,"max_seed_matches":25},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_depth":{"default":12,"description":"Maximum permitted depth for this operation.","maximum":64,"minimum":0,"type":"integer"},"max_edges":{"default":4000,"description":"Maximum permitted edges for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_nodes":{"default":2000,"description":"Maximum permitted nodes for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_paths":{"default":100,"description":"Maximum permitted paths for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_seed_matches":{"default":25,"description":"Maximum permitted seed matches for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"native_observations":{"default":[],"description":"Value for native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"seed":{"additionalProperties":false,"description":"Value for seed.","properties":{"case_sensitive":{"default":false,"description":"Whether text matching distinguishes uppercase and lowercase.","type":"boolean"},"kind":{"description":"Value for kind.","enum":["node-id","route","string","api","channel","module","native-export"],"type":"string"},"match":{"anyOf":[{"enum":["exact","contains"],"type":"string"},{"type":"null"}],"default":null,"description":"Value for match."},"value":{"description":"Value for value.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"}},"required":["seed","application_evidence_id"],"type":"object"}],"examples":[{"application_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","direction":"both","seed":{"case_sensitive":false,"kind":"module","match":"exact","value":"renderer.js"}}],"type":"object"},"kind":"application","name":"trace_application_feature","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"coverage":{"additionalProperties":false,"properties":{"frontier_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":50000,"type":"array"},"omitted_edges":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_paths":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_seed_matches":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scanned_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"status":{"enum":["complete-within-source","partial","truncated","no-match"],"type":"string"},"total_seed_matches":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","source_graph_status","scanned_nodes","total_seed_matches","omitted_seed_matches","omitted_nodes","omitted_edges","omitted_paths","frontier_node_ids"],"type":"object"},"direction":{"enum":["outgoing","incoming","both"],"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":65,"minItems":1,"type":"array"},"graph":{"anyOf":[{"additionalProperties":false,"properties":{"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},{"type":"null"}]},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"native_handoffs":{"items":{"additionalProperties":false,"properties":{"artifact_path":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]},"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"export_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"native_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"providers":{"items":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"maxItems":64,"type":"array"},"recommended_tools":{"items":{"enum":["open_binary","binary_overview","search_procedures","analyze_function","xrefs"],"type":"string"},"maxItems":5,"type":"array"},"requested_exports":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"status":{"enum":["evidence-linked","requires-provider-analysis"],"type":"string"}},"required":["native_node_id","artifact_sha256","artifact_path","export_node_ids","requested_exports","status","providers","evidence_ids","recommended_tools"],"type":"object"},"maxItems":10000,"type":"array"},"paths":{"items":{"additionalProperties":false,"properties":{"authorities":{"items":{"maxLength":128,"minLength":1,"type":"string"},"maxItems":16,"type":"array"},"contains_inference":{"type":"boolean"},"edge_ids":{"items":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"end_kind":{"maxLength":128,"minLength":1,"type":"string"},"end_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":65,"minItems":1,"type":"array"},"path_id":{"pattern":"^jatp_[a-f0-9]{64}$","type":"string"},"start_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["path_id","start_node_id","end_node_id","end_kind","node_ids","edge_ids","authorities","contains_inference"],"type":"object"},"maxItems":1000,"type":"array"},"schema_version":{"const":1,"type":"number"},"seed":{"additionalProperties":false,"properties":{"case_sensitive":{"default":false,"type":"boolean"},"kind":{"enum":["node-id","route","string","api","channel","module","native-export"],"type":"string"},"match":{"anyOf":[{"enum":["exact","contains"],"type":"string"},{"type":"null"}],"default":null},"value":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","value","match","case_sensitive"],"type":"object"},"seed_matches":{"items":{"additionalProperties":false,"properties":{"basis":{"enum":["node-id","label","identity","property"],"type":"string"},"field":{"maxLength":256,"minLength":1,"type":"string"},"kind":{"maxLength":128,"minLength":1,"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["node_id","kind","basis","field"],"type":"object"},"maxItems":1000,"type":"array"},"source_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"source_graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"summary":{"additionalProperties":false,"properties":{"inferred_facts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"matched_seeds":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"native_handoffs":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observed_facts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"terminal_paths":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traced_edges":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traced_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unavailable_facts":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_facts":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["matched_seeds","traced_nodes","traced_edges","terminal_paths","native_handoffs","observed_facts","inferred_facts","unknown_facts","unavailable_facts"],"type":"object"},"trace_id":{"pattern":"^jatr_[a-f0-9]{64}$","type":"string"}},"required":["schema_version","trace_id","source_evidence_id","source_graph_id","seed","direction","seed_matches","graph","paths","native_handoffs","summary","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Trace Application Feature"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Trace bounded static JavaScript data-flow, direct call/return, and closure relations from authenticated analyze_javascript_application v2 Evidence. Queries declare direction and exact node, relation, depth, function, module, and page limits. Dynamic or unsupported semantics remain explicit unknowns; static reachability never claims runtime execution.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"application":{"additionalProperties":false,"description":"Value for application.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"query":{"additionalProperties":false,"description":"Non-empty feature or text query to investigate.","properties":{"allowed_relations":{"description":"Value for allowed relations.","items":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"maxItems":44,"minItems":1,"type":"array"},"cursor":{"anyOf":[{"pattern":"^jsrqc_[0-9]+_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"default":null,"description":"Value for cursor."},"direction":{"description":"Direction in which to traverse or compare relationships.","enum":["backward-provenance","forward-influence","callers","ownership"],"type":"string"},"expected":{"anyOf":[{"additionalProperties":false,"properties":{"classes":{"description":"Value for classes.","items":{"enum":["module","function","parameter","binding","expression","literal","property-slot","call-site","return-site","closure-capture","promise","task","event","listener","timer","child-process","stdio","signal","config-source","request","response","boundary","resource","unknown-frontier"],"type":"string"},"maxItems":24,"minItems":1,"type":"array"},"role":{"description":"Value for role.","enum":["source","sink"],"type":"string"}},"required":["role","classes"],"type":"object"},{"type":"null"}],"default":null,"description":"Value for expected."},"include_ambiguous_dynamic_edges":{"default":false,"description":"Whether to include ambiguous dynamic edges in the result.","type":"boolean"},"limits":{"additionalProperties":false,"default":{"max_depth":12,"max_edges":4000,"max_functions":500,"max_modules":500,"max_nodes":2000,"max_seed_matches":25,"max_unknowns":1000,"page_size":200},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_depth":{"default":12,"description":"Maximum permitted depth for this operation.","maximum":64,"minimum":0,"type":"integer"},"max_edges":{"default":4000,"description":"Maximum permitted edges for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_functions":{"default":500,"description":"Maximum permitted functions for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_modules":{"default":500,"description":"Maximum permitted modules for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_nodes":{"default":2000,"description":"Maximum permitted nodes for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_seed_matches":{"default":25,"description":"Maximum permitted seed matches for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_unknowns":{"default":1000,"description":"Maximum permitted unknowns for this operation.","maximum":10000,"minimum":0,"type":"integer"},"page_size":{"default":200,"description":"Value for page size.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"seed":{"description":"Value for seed.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"semantic-node","description":"Value for kind.","type":"string"},"node_id":{"description":"Value for node id.","pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"application-node","description":"Value for kind.","type":"string"},"node_id":{"description":"Value for node id.","pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"literal","description":"Value for kind.","type":"string"},"value":{"$ref":"#/$defs/__schema0","description":"Value for value."}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"fingerprint_sha256":{"description":"Exact SHA-256 digest of fingerprint.","pattern":"^[a-f0-9]{64}$","type":"string"},"kind":{"const":"function","description":"Value for kind.","type":"string"}},"required":["kind","fingerprint_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"property","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"endpoint","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"event","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"field":{"description":"Value for field.","maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"boundary-field","description":"Value for kind.","type":"string"}},"required":["kind","field"],"type":"object"}]},"source_map_authority":{"additionalProperties":false,"default":{"authority":"none"},"description":"Value for source map authority.","properties":{"authority":{"const":"none","description":"Value for authority.","type":"string"}},"required":["authority"],"type":"object"}},"required":["seed","direction"],"type":"object"}},"required":["application","query"],"type":"object"},{"additionalProperties":false,"properties":{"application_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"query":{"additionalProperties":false,"description":"Non-empty feature or text query to investigate.","properties":{"allowed_relations":{"description":"Value for allowed relations.","items":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"maxItems":44,"minItems":1,"type":"array"},"cursor":{"anyOf":[{"pattern":"^jsrqc_[0-9]+_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"default":null,"description":"Value for cursor."},"direction":{"description":"Direction in which to traverse or compare relationships.","enum":["backward-provenance","forward-influence","callers","ownership"],"type":"string"},"expected":{"anyOf":[{"additionalProperties":false,"properties":{"classes":{"description":"Value for classes.","items":{"enum":["module","function","parameter","binding","expression","literal","property-slot","call-site","return-site","closure-capture","promise","task","event","listener","timer","child-process","stdio","signal","config-source","request","response","boundary","resource","unknown-frontier"],"type":"string"},"maxItems":24,"minItems":1,"type":"array"},"role":{"description":"Value for role.","enum":["source","sink"],"type":"string"}},"required":["role","classes"],"type":"object"},{"type":"null"}],"default":null,"description":"Value for expected."},"include_ambiguous_dynamic_edges":{"default":false,"description":"Whether to include ambiguous dynamic edges in the result.","type":"boolean"},"limits":{"additionalProperties":false,"default":{"max_depth":12,"max_edges":4000,"max_functions":500,"max_modules":500,"max_nodes":2000,"max_seed_matches":25,"max_unknowns":1000,"page_size":200},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_depth":{"default":12,"description":"Maximum permitted depth for this operation.","maximum":64,"minimum":0,"type":"integer"},"max_edges":{"default":4000,"description":"Maximum permitted edges for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_functions":{"default":500,"description":"Maximum permitted functions for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_modules":{"default":500,"description":"Maximum permitted modules for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_nodes":{"default":2000,"description":"Maximum permitted nodes for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_seed_matches":{"default":25,"description":"Maximum permitted seed matches for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_unknowns":{"default":1000,"description":"Maximum permitted unknowns for this operation.","maximum":10000,"minimum":0,"type":"integer"},"page_size":{"default":200,"description":"Value for page size.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"seed":{"description":"Value for seed.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"semantic-node","description":"Value for kind.","type":"string"},"node_id":{"description":"Value for node id.","pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"application-node","description":"Value for kind.","type":"string"},"node_id":{"description":"Value for node id.","pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"literal","description":"Value for kind.","type":"string"},"value":{"$ref":"#/$defs/__schema0","description":"Value for value."}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"fingerprint_sha256":{"description":"Exact SHA-256 digest of fingerprint.","pattern":"^[a-f0-9]{64}$","type":"string"},"kind":{"const":"function","description":"Value for kind.","type":"string"}},"required":["kind","fingerprint_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"property","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"endpoint","description":"Value for kind.","type":"string"},"value":{"description":"Value for value.","maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"event","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"field":{"description":"Value for field.","maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"boundary-field","description":"Value for kind.","type":"string"}},"required":["kind","field"],"type":"object"}]},"source_map_authority":{"additionalProperties":false,"default":{"authority":"none"},"description":"Value for source map authority.","properties":{"authority":{"const":"none","description":"Value for authority.","type":"string"}},"required":["authority"],"type":"object"}},"required":["seed","direction"],"type":"object"}},"required":["application_evidence_id","query"],"type":"object"}],"examples":[{"application_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","query":{"direction":"backward-provenance","seed":{"kind":"semantic-node","node_id":"jsrg_node_0000000000000000000000000000000000000000000000000000000000000000"},"source_map_authority":{"authority":"none"}}}],"type":"object"},"kind":"application","name":"trace_javascript_semantics","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"accepted_limit_ranges":{"additionalProperties":false,"properties":{"max_depth":{"additionalProperties":false,"properties":{"maximum":{"const":64,"type":"number"},"minimum":{"const":0,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_edges":{"additionalProperties":false,"properties":{"maximum":{"const":100000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_functions":{"additionalProperties":false,"properties":{"maximum":{"const":10000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_modules":{"additionalProperties":false,"properties":{"maximum":{"const":10000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_nodes":{"additionalProperties":false,"properties":{"maximum":{"const":50000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_seed_matches":{"additionalProperties":false,"properties":{"maximum":{"const":1000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"max_unknowns":{"additionalProperties":false,"properties":{"maximum":{"const":10000,"type":"number"},"minimum":{"const":0,"type":"number"}},"required":["minimum","maximum"],"type":"object"},"page_size":{"additionalProperties":false,"properties":{"maximum":{"const":1000,"type":"number"},"minimum":{"const":1,"type":"number"}},"required":["minimum","maximum"],"type":"object"}},"required":["max_seed_matches","max_nodes","max_edges","max_depth","max_functions","max_modules","max_unknowns","page_size"],"type":"object"},"applied_limits":{"additionalProperties":false,"properties":{"max_depth":{"default":12,"maximum":64,"minimum":0,"type":"integer"},"max_edges":{"default":4000,"maximum":100000,"minimum":1,"type":"integer"},"max_functions":{"default":500,"maximum":10000,"minimum":1,"type":"integer"},"max_modules":{"default":500,"maximum":10000,"minimum":1,"type":"integer"},"max_nodes":{"default":2000,"maximum":50000,"minimum":1,"type":"integer"},"max_seed_matches":{"default":25,"maximum":1000,"minimum":1,"type":"integer"},"max_unknowns":{"default":1000,"maximum":10000,"minimum":0,"type":"integer"},"page_size":{"default":200,"maximum":1000,"minimum":1,"type":"integer"}},"required":["max_seed_matches","max_nodes","max_edges","max_depth","max_functions","max_modules","max_unknowns","page_size"],"type":"object"},"coverage":{"additionalProperties":false,"properties":{"frontier":{"items":{"additionalProperties":false,"properties":{"depth":{"maximum":65,"minimum":0,"type":"integer"},"node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"reason":{"enum":["max-depth","max-edges","max-functions","max-modules","max-nodes","max-seed-matches"],"type":"string"}},"required":["node_id","depth","reason"],"type":"object"},"maxItems":100000,"type":"array"},"status":{"enum":["complete","partial","truncated","unavailable"],"type":"string"}},"required":["status","frontier"],"type":"object"},"direction":{"enum":["backward-provenance","forward-influence","callers","ownership"],"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1,"minItems":1,"type":"array"},"expected_match_node_ids":{"items":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"maxItems":50000,"type":"array"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"application_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"function_node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"identity":{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"role_key":{"maxLength":1024,"minLength":1,"type":"string"},"source_range":{"anyOf":[{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["start","end"],"type":"object"},{"type":"null"}]}},"required":["artifact_sha256","module_path","source_range","role_key"],"type":"object"},"kind":{"enum":["module","function","parameter","binding","expression","literal","property-slot","call-site","return-site","closure-capture","promise","task","event","listener","timer","child-process","stdio","signal","config-source","request","response","boundary","resource","unknown-frontier"],"type":"string"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["kind","identity","function_node_id","application_node_ids","label","properties","evidence","node_id","identifier_strategy"],"type":"object"},"maxItems":3000,"type":"array"},"page":{"additionalProperties":false,"properties":{"next_cursor":{"anyOf":[{"pattern":"^jsrqc_[0-9]+_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"size":{"maximum":1000,"minimum":0,"type":"integer"}},"required":["offset","size","next_cursor"],"type":"object"},"query_id":{"pattern":"^jsrq_[a-f0-9]{64}$","type":"string"},"relations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"relation_id":{"pattern":"^jsrg_relation_[a-f0-9]{64}$","type":"string"},"resolution":{"enum":["resolved","candidate"],"type":"string"},"source_node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","resolution","properties","evidence","relation_id","identifier_strategy"],"type":"object"},"maxItems":1000,"type":"array"},"schema_version":{"const":1,"type":"number"},"seed":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"semantic-node","type":"string"},"node_id":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"application-node","type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["kind","node_id"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"literal","type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"kind":{"const":"function","type":"string"}},"required":["kind","fingerprint_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"property","type":"string"},"name":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"endpoint","type":"string"},"value":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","value"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"event","type":"string"},"name":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"field":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"boundary-field","type":"string"}},"required":["kind","field"],"type":"object"}]},"seed_node_ids":{"items":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"source_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"source_graph_id":{"pattern":"^jsrg_[a-f0-9]{64}$","type":"string"},"status":{"enum":["found","no-match","ambiguous","partial","truncated","unsupported"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"relevant_unknowns":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_seed_matches":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_unknowns":{"maximum":10000,"minimum":0,"type":"integer"},"total_seed_matches":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traversed_functions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traversed_modules":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traversed_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"traversed_relations":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total_seed_matches","retained_seed_matches","traversed_nodes","traversed_relations","traversed_functions","traversed_modules","relevant_unknowns","retained_unknowns"],"type":"object"},"unknowns":{"items":{"additionalProperties":false,"properties":{"candidate_node_ids":{"items":{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"family":{"enum":["boundary","call-flow","child-process","closure","configuration","data-flow","event","object-flow","promise-ownership","request","resource-lifecycle","timer"],"type":"string"},"node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"reason":{"enum":["ambiguous-target","bound-reached","dynamic-call","dynamic-property","eval-or-generated-code","incomplete-module","missing-source","unsupported-syntax"],"type":"string"},"relation_kinds":{"items":{"enum":["acquires","aggregates","aliases","argument-to-parameter","awaits","calls","cancels-timer","captures","chains","coerces","connects-stdio","consumed-by","constructs-request","creates-promise","defaults","defines","destructures","detaches-task","dispatches-candidate","forwards-signal","listens-error","listens-exit","owns","overrides","parses","reads","reads-argv","reads-config","reads-environment","reads-property","registers-listener","releases","removes-listener","returns-task","returns-to-call","schedules-timer","spawns","spreads","supplies-argv","supplies-env","supplies-request-field","validates","writes","writes-property"],"type":"string"},"maxItems":45,"minItems":1,"type":"array"},"unknown_id":{"pattern":"^jsrg_unknown_[a-f0-9]{64}$","type":"string"}},"required":["node_id","family","relation_kinds","reason","detail","candidate_node_ids","evidence","unknown_id"],"type":"object"},"maxItems":100000,"type":"array"}},"required":["schema_version","query_id","source_graph_id","seed","direction","status","seed_node_ids","nodes","relations","unknowns","expected_match_node_ids","summary","coverage","page","applied_limits","accepted_limit_ranges","limitations","source_evidence_id","evidence_links"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Trace Javascript Semantics"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two authenticated JavaScript Application Graph versions supplied as full Evidence or Evidence IDs returned earlier in this session. Uses unique-only exact digest, module source digest, source-map identity, structural fingerprint, and non-module semantic-key tiers. Reports added, removed, changed, ambiguous, and unknown entities plus a bounded changed_from graph without fuzzy or module-ordinal pairing.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"left_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the left native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"left_native_observations":{"default":[],"description":"Value for left native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"limits":{"additionalProperties":false,"default":{"max_candidate_nodes":100,"max_comparison_items":20000,"max_graph_edges":40000,"max_graph_nodes":20000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_comparison_items":{"default":20000,"description":"Maximum permitted comparison items for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_graph_edges":{"default":40000,"description":"Maximum permitted graph edges for this operation.","maximum":200000,"minimum":1,"type":"integer"},"max_graph_nodes":{"default":20000,"description":"Maximum permitted graph nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"right_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the right native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"right_native_observations":{"default":[],"description":"Value for right native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left","right"],"type":"object"},{"additionalProperties":false,"properties":{"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"left_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the left native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"left_native_observations":{"default":[],"description":"Value for left native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"limits":{"additionalProperties":false,"default":{"max_candidate_nodes":100,"max_comparison_items":20000,"max_graph_edges":40000,"max_graph_nodes":20000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_comparison_items":{"default":20000,"description":"Maximum permitted comparison items for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_graph_edges":{"default":40000,"description":"Maximum permitted graph edges for this operation.","maximum":200000,"minimum":1,"type":"integer"},"max_graph_nodes":{"default":20000,"description":"Maximum permitted graph nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"right_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"right_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the right native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"right_native_observations":{"default":[],"description":"Value for right native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left","right_evidence_id"],"type":"object"},{"additionalProperties":false,"properties":{"left_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"left_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the left native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"left_native_observations":{"default":[],"description":"Value for left native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"limits":{"additionalProperties":false,"default":{"max_candidate_nodes":100,"max_comparison_items":20000,"max_graph_edges":40000,"max_graph_nodes":20000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_comparison_items":{"default":20000,"description":"Maximum permitted comparison items for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_graph_edges":{"default":40000,"description":"Maximum permitted graph edges for this operation.","maximum":200000,"minimum":1,"type":"integer"},"max_graph_nodes":{"default":20000,"description":"Maximum permitted graph nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"right_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the right native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"right_native_observations":{"default":[],"description":"Value for right native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_evidence_id","right"],"type":"object"},{"additionalProperties":false,"properties":{"left_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"left_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the left native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"left_native_observations":{"default":[],"description":"Value for left native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"limits":{"additionalProperties":false,"default":{"max_candidate_nodes":100,"max_comparison_items":20000,"max_graph_edges":40000,"max_graph_nodes":20000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_comparison_items":{"default":20000,"description":"Maximum permitted comparison items for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_graph_edges":{"default":40000,"description":"Maximum permitted graph edges for this operation.","maximum":200000,"minimum":1,"type":"integer"},"max_graph_nodes":{"default":20000,"description":"Maximum permitted graph nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"right_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"right_native_observation_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the right native observation observations.","items":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":64,"type":"array"},"right_native_observations":{"default":[],"description":"Value for right native observations.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":64,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_evidence_id","right_evidence_id"],"type":"object"}],"examples":[{"left_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","right_evidence_id":"ev_1111111111111111111111111111111111111111111111111111111111111111"}],"type":"object"},"kind":"application","name":"compare_application_versions","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"comparison_id":{"pattern":"^javc_[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"left_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"omitted_candidate_references":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_comparison_items":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_graph_edges":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_graph_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_graph_observations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"right_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"}},"required":["status","left_graph_status","right_graph_status","omitted_comparison_items","omitted_candidate_references","omitted_graph_nodes","omitted_graph_edges","omitted_graph_observations"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":130,"minItems":2,"type":"array"},"graph":{"additionalProperties":false,"properties":{"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"edges":{"items":{"additionalProperties":false,"properties":{"edge_id":{"pattern":"^jag_edge_[a-f0-9]{64}$","type":"string"},"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"relationship-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"},"relation":{"enum":["contains","loads","imports","maps_to","exposes","sends","invokes","handles","calls","persists_to","observed_as","changed_from"],"type":"string"},"source_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"target_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["source_node_id","target_node_id","relation","properties","evidence","edge_id","identifier_strategy"],"type":"object"},"maxItems":200000,"type":"array"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"nodes":{"items":{"additionalProperties":false,"properties":{"identity":{"oneOf":[{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"global-exact","type":"string"},"strategy":{"const":"content-digest","type":"string"}},"required":["strategy","stability","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"original_source":{"maxLength":4096,"minLength":1,"type":"string"},"source_map_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"stability":{"const":"source-map-exact","type":"string"},"strategy":{"const":"source-map-original","type":"string"}},"required":["strategy","stability","source_map_sha256","original_source","source_sha256"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"canonical-path","type":"string"}},"required":["strategy","stability","artifact_sha256","path"],"type":"object"},{"additionalProperties":false,"properties":{"algorithm":{"maxLength":128,"minLength":1,"type":"string"},"basis":{"items":{"enum":["syntax-tree","control-flow","imports","exports","literals","api-usage"],"type":"string"},"maxItems":6,"minItems":1,"type":"array"},"fingerprint_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"stability":{"const":"cross-version-inference","type":"string"},"strategy":{"const":"structural-fingerprint","type":"string"}},"required":["strategy","stability","algorithm","fingerprint_sha256","basis"],"type":"object"},{"additionalProperties":false,"properties":{"artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"key":{"maxLength":4096,"minLength":1,"type":"string"},"namespace":{"maxLength":512,"minLength":1,"type":"string"},"stability":{"const":"artifact-version","type":"string"},"strategy":{"const":"artifact-local-key","type":"string"}},"required":["strategy","stability","artifact_sha256","namespace","key"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime_key":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"capture-only","type":"string"},"strategy":{"const":"runtime-instance","type":"string"}},"required":["strategy","stability","capture_sha256","runtime_key"],"type":"object"},{"additionalProperties":false,"properties":{"observation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope":{"maxLength":4096,"minLength":1,"type":"string"},"stability":{"const":"observation-only","type":"string"},"strategy":{"const":"observation-fingerprint","type":"string"}},"required":["strategy","stability","observation_sha256","scope"],"type":"object"}]},"kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"observations":{"items":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"artifact":{"oneOf":[{"additionalProperties":false,"properties":{"artifact_id":{"pattern":"^art_[a-f0-9]{64}$","type":"string"},"available":{"const":true,"type":"boolean"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["available","artifact_id","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"authority":{"enum":["artifact-bytes","ast-static-analysis","static-relationship-inference","passive-cdp-runtime","cross-layer-reconciliation","cross-version-comparison","controlled-replay","native-analysis-provider","managed-static-analysis","historical-reference","user-assertion","unknown"],"type":"string"},"confidence":{"enum":["exact","high","medium","low","unknown"],"type":"string"},"coverage":{"anyOf":[{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"const":0,"type":"number"},"status":{"const":"complete","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"omitted_count":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"status":{"const":"partial","type":"string"},"truncated":{"const":true,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"},{"additionalProperties":false,"properties":{"limits":{"items":{"additionalProperties":false,"properties":{"name":{"maxLength":128,"minLength":1,"type":"string"},"unit":{"enum":["items","bytes","milliseconds","depth","characters","instructions","other"],"type":"string"},"value":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["name","value","unit"],"type":"object"},"maxItems":32,"type":"array"},"omitted_count":{"type":"null"},"status":{"enum":["unknown","unavailable"],"type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["status","truncated","omitted_count","limits"],"type":"object"}]},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"extractor":{"additionalProperties":false,"properties":{"executable_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"name":{"maxLength":128,"minLength":1,"type":"string"},"operation":{"maxLength":256,"minLength":1,"type":"string"},"version":{"maxLength":128,"minLength":1,"type":"string"}},"required":["name","version","operation","executable_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"location":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"value":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"kind":{"const":"source-range","type":"string"},"source":{"maxLength":4096,"minLength":1,"type":"string"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["kind","source","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"url","type":"string"},"url":{"maxLength":16384,"minLength":1,"type":"string"}},"required":["kind","url"],"type":"object"},{"additionalProperties":false,"properties":{"capture_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"frame_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"kind":{"const":"runtime","type":"string"},"script_key":{"anyOf":[{"maxLength":512,"minLength":1,"type":"string"},{"type":"null"}]},"target_key":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","capture_sha256","target_key","frame_key","script_key"],"type":"object"},{"additionalProperties":false,"properties":{"address":{"maxLength":512,"minLength":1,"type":"string"},"kind":{"const":"native-address","type":"string"},"symbol":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","address","symbol"],"type":"object"},{"additionalProperties":false,"properties":{"export_path":{"maxLength":4096,"minLength":1,"type":"string"},"kind":{"const":"package-export","type":"string"},"package_name":{"maxLength":512,"minLength":1,"type":"string"}},"required":["kind","package_name","export_path"],"type":"object"}]}},"required":["available","value"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"reason":{"enum":["not-applicable","not-observed","not-approved","truncated","provider-unavailable","unresolved","unknown"],"type":"string"}},"required":["available","reason","detail"],"type":"object"}]},"state":{"enum":["observed","inferred","unknown","unavailable"],"type":"string"}},"required":["authority","state","confidence","artifact","location","extractor","coverage","limitations","evidence_ids"],"type":"object"},"identifier_strategy":{"additionalProperties":false,"properties":{"stability":{"const":"observation-exact","type":"string"},"strategy":{"const":"semantic-content-sha256","type":"string"}},"required":["strategy","stability"],"type":"object"},"label":{"anyOf":[{"maxLength":1024,"minLength":1,"type":"string"},{"type":"null"}]},"observation_id":{"pattern":"^jag_observation_[a-f0-9]{64}$","type":"string"},"properties":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"maxLength":128,"minLength":1,"type":"string"},"type":"object"}},"required":["label","properties","evidence","observation_id","identifier_strategy"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["node_id","kind","identity","observations"],"type":"object"},"maxItems":100000,"minItems":1,"type":"array"},"root_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schema":{"const":"JavaScriptApplicationGraph","type":"string"},"schema_version":{"const":1,"type":"number"}},"required":["schema","schema_version","root_node_ids","nodes","edges","coverage","limitations","graph_id"],"type":"object"},"items":{"items":{"additionalProperties":false,"properties":{"dimensions":{"items":{"enum":["content","location","properties","relationships","availability","coverage"],"type":"string"},"maxItems":6,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":130,"minItems":2,"type":"array"},"item_id":{"pattern":"^javc_item_[a-f0-9]{64}$","type":"string"},"left_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"match":{"additionalProperties":false,"properties":{"basis":{"enum":["exact-node-identity","exact-content-digest","exact-module-source-digest","source-map-identity","structural-fingerprint","semantic-key","none"],"type":"string"},"candidate_left_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"candidate_right_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"confidence":{"enum":["exact","high","medium","unknown"],"type":"string"},"status":{"enum":["matched","unmatched","ambiguous"],"type":"string"}},"required":["status","basis","confidence","candidate_left_node_ids","candidate_right_node_ids"],"type":"object"},"node_kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"right_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"enum":["unchanged","added","removed","changed","unknown"],"type":"string"}},"required":["item_id","status","node_kind","left_node_id","right_node_id","match","dimensions","evidence_links","limitations"],"type":"object"},"maxItems":50000,"type":"array"},"left":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["evidence_id","graph_id","root_artifact_sha256"],"type":"object"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"matching":{"additionalProperties":false,"properties":{"ambiguous":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exact_content_digest":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exact_module_source_digest":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"exact_node_identity":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"semantic_key":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source_map_identity":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"structural_fingerprint":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unmatched":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["exact_node_identity","exact_content_digest","exact_module_source_digest","source_map_identity","structural_fingerprint","semantic_key","ambiguous","unmatched"],"type":"object"},"right":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["evidence_id","graph_id","root_artifact_sha256"],"type":"object"},"schema_version":{"const":1,"type":"number"},"summary":{"additionalProperties":false,"properties":{"added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unchanged","added","removed","changed","unknown"],"type":"object"}},"required":["schema_version","comparison_id","left","right","summary","matching","items","graph","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Compare Application Versions"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare a cryptographically committed HistoricalSourceGraph/v1 with authenticated JavaScript Application Graph Evidence supplied directly or by session Evidence ID. Uses explicit exact-digest, source-map path, current-path, suffix, and basename signals with stable weights. Classifies unchanged, modified, removed, split, merged, duplicated, and unknown; incomplete coverage and ambiguous weak signals never become absence or forced matches.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"application":{"additionalProperties":false,"description":"Value for application.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"limits":{"additionalProperties":false,"default":{"max_application_nodes":20000,"max_candidate_evaluations":1000000,"max_candidate_nodes":100,"max_source_files":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_application_nodes":{"default":20000,"description":"Maximum permitted application nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_candidate_evaluations":{"default":1000000,"description":"Maximum permitted candidate evaluations for this operation.","maximum":10000000,"minimum":1,"type":"integer"},"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_source_files":{"default":10000,"description":"Maximum permitted source files for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"reference":{"additionalProperties":false,"description":"Value for reference.","properties":{"authority":{"const":"historical-reference","description":"Value for authority.","type":"string"},"entries":{"description":"Value for entries.","items":{"oneOf":[{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"content_state":{"description":"Value for content state.","enum":["hashed","redacted-secret","excluded","unreadable","too-large","unknown"],"type":"string"},"kind":{"const":"file","description":"Value for kind.","type":"string"},"language":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for language."},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for sha256."},"size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for size."}},"required":["path","classifications","limitations","kind","sha256","size","language","content_state"],"type":"object"},{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"kind":{"const":"directory","description":"Value for kind.","type":"string"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"tree_state":{"description":"Value for tree state.","enum":["enumerated","partial","excluded","unreadable","unknown"],"type":"string"}},"required":["path","classifications","limitations","kind","tree_state"],"type":"object"},{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"kind":{"const":"symlink","description":"Value for kind.","type":"string"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"target":{"description":"Value for target.","maxLength":4096,"minLength":1,"type":"string"},"target_state":{"description":"Value for target state.","enum":["internal","external","missing","unreadable","unknown"],"type":"string"}},"required":["path","classifications","limitations","kind","target","target_state"],"type":"object"}]},"maxItems":100000,"type":"array"},"exclusions":{"description":"Value for exclusions.","items":{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"reason":{"description":"Value for reason.","enum":["configured-secret","symlink-escape","size-limit","inventory-limit","unreadable","caller-excluded"],"type":"string"}},"required":["path","reason"],"type":"object"},"maxItems":100000,"type":"array"},"inventory_state":{"description":"Value for inventory state.","enum":["complete","partial","unknown"],"type":"string"},"languages":{"description":"Value for languages.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"manifests":{"description":"Value for manifests.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":10000,"type":"array"},"parse_failures":{"description":"Value for parse failures.","items":{"additionalProperties":false,"properties":{"parser":{"description":"Value for parser.","maxLength":100,"minLength":1,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"}},"required":["path","parser","reason"],"type":"object"},"maxItems":10000,"type":"array"},"provenance":{"additionalProperties":false,"description":"Value for provenance.","properties":{"caller":{"description":"Value for caller.","maxLength":200,"minLength":1,"pattern":"^[\\\\w .:@/+-]+$","type":"string"},"importer":{"description":"Value for importer.","maxLength":100,"minLength":1,"type":"string"},"importer_version":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for importer version."}},"required":["importer","importer_version","caller"],"type":"object"},"relationships":{"description":"Value for relationships.","items":{"additionalProperties":false,"properties":{"from_path":{"description":"Local filesystem path for from.","maxLength":4096,"minLength":1,"type":"string"},"kind":{"description":"Value for kind.","enum":["imports","requires","references","declares-module"],"type":"string"},"parse_state":{"description":"Value for parse state.","enum":["parsed","partial","unknown"],"type":"string"},"resolution":{"description":"Value for resolution.","enum":["internal","external","unresolved","unknown"],"type":"string"},"to":{"description":"Value for to.","maxLength":4096,"minLength":1,"type":"string"}},"required":["from_path","to","kind","resolution","parse_state"],"type":"object"},"maxItems":200000,"type":"array"},"root_alias":{"const":"$REFERENCE_ROOT","description":"Value for root alias.","type":"string"},"root_sha256":{"description":"Exact SHA-256 digest of root.","pattern":"^[a-f0-9]{64}$","type":"string"},"schema":{"const":"HistoricalSourceGraph/v1","description":"Value for schema.","type":"string"},"vcs":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"dirty":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for dirty."},"head":{"description":"Value for head.","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$","type":"string"},"kind":{"const":"git","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"},{"additionalProperties":false,"properties":{"dirty":{"description":"Value for dirty.","type":"null"},"head":{"description":"Value for head.","type":"null"},"kind":{"const":"none","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"},{"additionalProperties":false,"properties":{"dirty":{"description":"Value for dirty.","type":"null"},"head":{"description":"Value for head.","type":"null"},"kind":{"const":"unknown","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"}]},{"type":"null"}],"description":"Value for vcs."}},"required":["schema","authority","root_alias","root_sha256","inventory_state","entries","relationships","parse_failures","exclusions","languages","manifests","vcs","provenance","limitations"],"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["reference","application"],"type":"object"},{"additionalProperties":false,"properties":{"application_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"limits":{"additionalProperties":false,"default":{"max_application_nodes":20000,"max_candidate_evaluations":1000000,"max_candidate_nodes":100,"max_source_files":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_application_nodes":{"default":20000,"description":"Maximum permitted application nodes for this operation.","maximum":100000,"minimum":1,"type":"integer"},"max_candidate_evaluations":{"default":1000000,"description":"Maximum permitted candidate evaluations for this operation.","maximum":10000000,"minimum":1,"type":"integer"},"max_candidate_nodes":{"default":100,"description":"Maximum permitted candidate nodes for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_source_files":{"default":10000,"description":"Maximum permitted source files for this operation.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"reference":{"additionalProperties":false,"description":"Value for reference.","properties":{"authority":{"const":"historical-reference","description":"Value for authority.","type":"string"},"entries":{"description":"Value for entries.","items":{"oneOf":[{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"content_state":{"description":"Value for content state.","enum":["hashed","redacted-secret","excluded","unreadable","too-large","unknown"],"type":"string"},"kind":{"const":"file","description":"Value for kind.","type":"string"},"language":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for language."},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for sha256."},"size":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for size."}},"required":["path","classifications","limitations","kind","sha256","size","language","content_state"],"type":"object"},{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"kind":{"const":"directory","description":"Value for kind.","type":"string"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"tree_state":{"description":"Value for tree state.","enum":["enumerated","partial","excluded","unreadable","unknown"],"type":"string"}},"required":["path","classifications","limitations","kind","tree_state"],"type":"object"},{"additionalProperties":false,"properties":{"classifications":{"description":"Value for classifications.","items":{"enum":["source","test","config","manifest","generated","vendor","documentation","unknown"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"kind":{"const":"symlink","description":"Value for kind.","type":"string"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"target":{"description":"Value for target.","maxLength":4096,"minLength":1,"type":"string"},"target_state":{"description":"Value for target state.","enum":["internal","external","missing","unreadable","unknown"],"type":"string"}},"required":["path","classifications","limitations","kind","target","target_state"],"type":"object"}]},"maxItems":100000,"type":"array"},"exclusions":{"description":"Value for exclusions.","items":{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"reason":{"description":"Value for reason.","enum":["configured-secret","symlink-escape","size-limit","inventory-limit","unreadable","caller-excluded"],"type":"string"}},"required":["path","reason"],"type":"object"},"maxItems":100000,"type":"array"},"inventory_state":{"description":"Value for inventory state.","enum":["complete","partial","unknown"],"type":"string"},"languages":{"description":"Value for languages.","items":{"maxLength":100,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"limitations":{"description":"Value for limitations.","items":{"maxLength":1024,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"manifests":{"description":"Value for manifests.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":10000,"type":"array"},"parse_failures":{"description":"Value for parse failures.","items":{"additionalProperties":false,"properties":{"parser":{"description":"Value for parser.","maxLength":100,"minLength":1,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"reason":{"description":"Value for reason.","maxLength":1024,"minLength":1,"type":"string"}},"required":["path","parser","reason"],"type":"object"},"maxItems":10000,"type":"array"},"provenance":{"additionalProperties":false,"description":"Value for provenance.","properties":{"caller":{"description":"Value for caller.","maxLength":200,"minLength":1,"pattern":"^[\\\\w .:@/+-]+$","type":"string"},"importer":{"description":"Value for importer.","maxLength":100,"minLength":1,"type":"string"},"importer_version":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for importer version."}},"required":["importer","importer_version","caller"],"type":"object"},"relationships":{"description":"Value for relationships.","items":{"additionalProperties":false,"properties":{"from_path":{"description":"Local filesystem path for from.","maxLength":4096,"minLength":1,"type":"string"},"kind":{"description":"Value for kind.","enum":["imports","requires","references","declares-module"],"type":"string"},"parse_state":{"description":"Value for parse state.","enum":["parsed","partial","unknown"],"type":"string"},"resolution":{"description":"Value for resolution.","enum":["internal","external","unresolved","unknown"],"type":"string"},"to":{"description":"Value for to.","maxLength":4096,"minLength":1,"type":"string"}},"required":["from_path","to","kind","resolution","parse_state"],"type":"object"},"maxItems":200000,"type":"array"},"root_alias":{"const":"$REFERENCE_ROOT","description":"Value for root alias.","type":"string"},"root_sha256":{"description":"Exact SHA-256 digest of root.","pattern":"^[a-f0-9]{64}$","type":"string"},"schema":{"const":"HistoricalSourceGraph/v1","description":"Value for schema.","type":"string"},"vcs":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"dirty":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Value for dirty."},"head":{"description":"Value for head.","pattern":"^(?:[a-f0-9]{40}|[a-f0-9]{64})$","type":"string"},"kind":{"const":"git","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"},{"additionalProperties":false,"properties":{"dirty":{"description":"Value for dirty.","type":"null"},"head":{"description":"Value for head.","type":"null"},"kind":{"const":"none","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"},{"additionalProperties":false,"properties":{"dirty":{"description":"Value for dirty.","type":"null"},"head":{"description":"Value for head.","type":"null"},"kind":{"const":"unknown","description":"Value for kind.","type":"string"}},"required":["kind","head","dirty"],"type":"object"}]},{"type":"null"}],"description":"Value for vcs."}},"required":["schema","authority","root_alias","root_sha256","inventory_state","entries","relationships","parse_failures","exclusions","languages","manifests","vcs","provenance","limitations"],"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["reference","application_evidence_id"],"type":"object"}],"examples":[{"application_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","reference":{"authority":"historical-reference","entries":[{"classifications":["source"],"kind":"directory","limitations":[],"path":"src","tree_state":"enumerated"},{"classifications":["source"],"content_state":"hashed","kind":"file","language":"TypeScript","limitations":[],"path":"src/main.ts","sha256":"2222222222222222222222222222222222222222222222222222222222222222","size":128}],"exclusions":[],"inventory_state":"complete","languages":["TypeScript"],"limitations":[],"manifests":[],"parse_failures":[],"provenance":{"caller":"contract-example","importer":"rea","importer_version":"1"},"relationships":[],"root_alias":"$REFERENCE_ROOT","root_sha256":"683969414c3e674a368392213c78021322fb39609b0c57f346b22da6464b2110","schema":"HistoricalSourceGraph/v1","vcs":{"dirty":null,"head":null,"kind":"none"}}}],"type":"object"},"kind":"application","name":"compare_source_to_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"application":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"root_artifact_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["evidence_id","graph_id","root_artifact_sha256"],"type":"object"},"comparison_id":{"pattern":"^stbc_[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"application_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"candidate_evaluations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_application_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_candidate_evaluations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_candidate_references":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_source_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_unmapped_current_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"reference_inventory_state":{"enum":["complete","partial","unknown"],"type":"string"},"retained_application_nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"retained_source_files":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"}},"required":["status","reference_inventory_state","application_graph_status","retained_source_files","omitted_source_files","retained_application_nodes","omitted_application_nodes","candidate_evaluations","omitted_candidate_evaluations","omitted_candidate_references","omitted_unmapped_current_nodes"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1,"minItems":1,"type":"array"},"items":{"items":{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"confidence":{"enum":["exact","high","medium","low"],"type":"string"},"current_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"current_node_kind":{"enum":["package","installer","artifact","asar-entry","electron-main","electron-preload","electron-renderer","electron-utility","javascript-asset","javascript-chunk","javascript-module","source-map","source-module","browser-window","frame","target","context-bridge-api","ipc-channel","ipc-handler","worker","service-worker","endpoint","storage","native-addon","native-export","managed-assembly","managed-module","managed-type","managed-method","managed-field","managed-pinvoke-import","managed-native-implementation","runtime-script-instance","unknown"],"type":"string"},"score":{"maximum":300,"minimum":1,"type":"integer"},"signals":{"items":{"additionalProperties":false,"properties":{"current_values":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":64,"minItems":1,"type":"array"},"kind":{"enum":["exact-source-digest","source-map-original-path","current-path-exact","current-path-suffix","basename-match","language-extension"],"type":"string"},"source_value":{"maxLength":4096,"minLength":1,"type":"string"},"weight":{"maximum":100,"minimum":1,"type":"integer"}},"required":["kind","weight","source_value","current_values"],"type":"object"},"maxItems":6,"minItems":1,"type":"array"}},"required":["current_node_id","current_node_kind","score","confidence","signals"],"type":"object"},"maxItems":1000,"type":"array"},"confidence":{"enum":["exact","high","medium","unknown"],"type":"string"},"current_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"mapping_id":{"pattern":"^stbc_item_[a-f0-9]{64}$","type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"source_language":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]},"source_path":{"maxLength":4096,"minLength":1,"type":"string"},"source_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"enum":["unchanged","modified","removed","split","merged","duplicated","unknown"],"type":"string"}},"required":["mapping_id","source_path","source_sha256","source_language","status","confidence","current_node_ids","candidates","omitted_candidates","limitations"],"type":"object"},"maxItems":100000,"type":"array"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"reference":{"additionalProperties":false,"properties":{"inventory_state":{"enum":["complete","partial","unknown"],"type":"string"},"root_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["root_sha256","inventory_state"],"type":"object"},"schema_version":{"const":1,"type":"number"},"scoring":{"additionalProperties":false,"properties":{"algorithm":{"const":"rea-source-to-bundle-signals/v1","type":"string"},"minimum_candidate_score":{"const":20,"type":"number"},"weights":{"items":{"additionalProperties":false,"properties":{"signal":{"enum":["exact-source-digest","source-map-original-path","current-path-exact","current-path-suffix","basename-match","language-extension"],"type":"string"},"weight":{"maximum":100,"minimum":1,"type":"integer"}},"required":["signal","weight"],"type":"object"},"type":"array"}},"required":["algorithm","minimum_candidate_score","weights"],"type":"object"},"summary":{"additionalProperties":false,"properties":{"duplicated":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"merged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"modified":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"split":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unchanged","modified","removed","split","merged","duplicated","unknown"],"type":"object"},"unmapped_current_node_ids":{"items":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"maxItems":100000,"type":"array"}},"required":["schema_version","comparison_id","reference","application","scoring","summary","items","unmapped_current_node_ids","coverage","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Compare Source To Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare bounded static return shapes for one exact module/export selector on each authenticated JavaScript Application Graph, supplied as full Evidence or session Evidence IDs. Variants pair only by reciprocal unique literal discriminants; dynamic values, incomplete properties, and ambiguous variants remain unknown. Reports JSON Pointer changes and recommends controlled replay separately without executing JavaScript.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"additionalProperties":false,"properties":{"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"left_export_name":{"description":"Value for left export name.","maxLength":4096,"minLength":1,"type":"string"},"left_module_path":{"description":"Local filesystem path for left module.","maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_candidate_exports":100,"max_changes":1000,"max_return_variants":128},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_exports":{"default":100,"description":"Maximum permitted candidate exports for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_changes":{"default":1000,"description":"Maximum permitted changes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_return_variants":{"default":128,"description":"Maximum permitted return variants for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"right_export_name":{"description":"Value for right export name.","maxLength":4096,"minLength":1,"type":"string"},"right_module_path":{"description":"Local filesystem path for right module.","maxLength":4096,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_module_path","left_export_name","right_module_path","right_export_name","left","right"],"type":"object"},{"additionalProperties":false,"properties":{"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"left_export_name":{"description":"Value for left export name.","maxLength":4096,"minLength":1,"type":"string"},"left_module_path":{"description":"Local filesystem path for left module.","maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_candidate_exports":100,"max_changes":1000,"max_return_variants":128},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_exports":{"default":100,"description":"Maximum permitted candidate exports for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_changes":{"default":1000,"description":"Maximum permitted changes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_return_variants":{"default":128,"description":"Maximum permitted return variants for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"right_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"right_export_name":{"description":"Value for right export name.","maxLength":4096,"minLength":1,"type":"string"},"right_module_path":{"description":"Local filesystem path for right module.","maxLength":4096,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_module_path","left_export_name","right_module_path","right_export_name","left","right_evidence_id"],"type":"object"},{"additionalProperties":false,"properties":{"left_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"left_export_name":{"description":"Value for left export name.","maxLength":4096,"minLength":1,"type":"string"},"left_module_path":{"description":"Local filesystem path for left module.","maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_candidate_exports":100,"max_changes":1000,"max_return_variants":128},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_exports":{"default":100,"description":"Maximum permitted candidate exports for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_changes":{"default":1000,"description":"Maximum permitted changes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_return_variants":{"default":128,"description":"Maximum permitted return variants for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"right_export_name":{"description":"Value for right export name.","maxLength":4096,"minLength":1,"type":"string"},"right_module_path":{"description":"Local filesystem path for right module.","maxLength":4096,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_module_path","left_export_name","right_module_path","right_export_name","left_evidence_id","right"],"type":"object"},{"additionalProperties":false,"properties":{"left_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"left_export_name":{"description":"Value for left export name.","maxLength":4096,"minLength":1,"type":"string"},"left_module_path":{"description":"Local filesystem path for left module.","maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"default":{"max_candidate_exports":100,"max_changes":1000,"max_return_variants":128},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_candidate_exports":{"default":100,"description":"Maximum permitted candidate exports for this operation.","maximum":1000,"minimum":1,"type":"integer"},"max_changes":{"default":1000,"description":"Maximum permitted changes for this operation.","maximum":10000,"minimum":1,"type":"integer"},"max_return_variants":{"default":128,"description":"Maximum permitted return variants for this operation.","maximum":1000,"minimum":1,"type":"integer"}},"type":"object"},"right_evidence_id":{"description":"Evidence ID returned earlier in this session","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"right_export_name":{"description":"Value for right export name.","maxLength":4096,"minLength":1,"type":"string"},"right_module_path":{"description":"Local filesystem path for right module.","maxLength":4096,"minLength":1,"type":"string"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_module_path","left_export_name","right_module_path","right_export_name","left_evidence_id","right_evidence_id"],"type":"object"}],"examples":[{"left_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","left_export_name":"default","left_module_path":"parser.mjs","right_evidence_id":"ev_1111111111111111111111111111111111111111111111111111111111111111","right_export_name":"default","right_module_path":"parser.mjs"}],"type":"object"},"kind":"application","name":"compare_javascript_export_shapes","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"changes":{"items":{"additionalProperties":false,"properties":{"change_id":{"pattern":"^jesc_change_[a-f0-9]{64}$","type":"string"},"discriminant":{"anyOf":[{"additionalProperties":false,"properties":{"path":{"maxLength":4096,"type":"string"},"value":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"required":["path","value"],"type":"object"},{"type":"null"}]},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"left":{"oneOf":[{"additionalProperties":false,"properties":{"availability":{"const":"absent","type":"string"}},"required":["availability"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"literal","type":"string"},"value":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"required":["availability","value"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"union","type":"string"},"values":{"items":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"maxItems":32,"minItems":1,"type":"array"}},"required":["availability","values"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"unknown","type":"string"},"reason":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["availability","reason"],"type":"object"}]},"left_source_range":{"anyOf":[{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["start","end"],"type":"object"},{"type":"null"}]},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"path":{"maxLength":4096,"type":"string"},"right":{"oneOf":[{"additionalProperties":false,"properties":{"availability":{"const":"absent","type":"string"}},"required":["availability"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"literal","type":"string"},"value":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"required":["availability","value"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"union","type":"string"},"values":{"items":{"anyOf":[{"maxLength":4096,"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"maxItems":32,"minItems":1,"type":"array"}},"required":["availability","values"],"type":"object"},{"additionalProperties":false,"properties":{"availability":{"const":"unknown","type":"string"},"reason":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["availability","reason"],"type":"object"}]},"right_source_range":{"anyOf":[{"additionalProperties":false,"properties":{"end":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"},"start":{"additionalProperties":false,"properties":{"column":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"line":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["line","column"],"type":"object"}},"required":["start","end"],"type":"object"},{"type":"null"}]},"status":{"enum":["added","removed","changed","unknown"],"type":"string"}},"required":["change_id","status","path","discriminant","left","right","left_source_range","right_source_range","evidence_links","limitations"],"type":"object"},"maxItems":10000,"type":"array"},"comparison_id":{"pattern":"^jesc_[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"left_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"left_omitted_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"left_omitted_property_coverage":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"left_source_omitted_variants":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_left_variants":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"omitted_right_variants":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"paired_variants":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"right_graph_status":{"enum":["complete","partial","unknown","unavailable"],"type":"string"},"right_omitted_fields":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"right_omitted_property_coverage":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"right_source_omitted_variants":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"enum":["complete-within-inputs","partial","truncated"],"type":"string"},"unpaired_left_variants":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unpaired_right_variants":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["status","left_graph_status","right_graph_status","paired_variants","unpaired_left_variants","unpaired_right_variants","omitted_left_variants","omitted_right_variants","left_source_omitted_variants","right_source_omitted_variants","left_omitted_fields","right_omitted_fields","left_omitted_property_coverage","right_omitted_property_coverage","omitted_candidates","omitted_changes"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":2,"minItems":2,"type":"array"},"left":{"anyOf":[{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"export_name":{"maxLength":4096,"minLength":1,"type":"string"},"matches_requested_export":{"type":"boolean"},"matches_requested_module":{"type":"boolean"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["node_id","module_path","export_name","matches_requested_module","matches_requested_export"],"type":"object"},"maxItems":1000,"type":"array"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"requested_export_name":{"maxLength":4096,"minLength":1,"type":"string"},"requested_module_path":{"maxLength":4096,"minLength":1,"type":"string"},"selected_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"status":{"const":"selected","type":"string"}},"required":["evidence_id","graph_id","requested_module_path","requested_export_name","candidates","omitted_candidates","status","selected_node_id"],"type":"object"},{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"export_name":{"maxLength":4096,"minLength":1,"type":"string"},"matches_requested_export":{"type":"boolean"},"matches_requested_module":{"type":"boolean"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["node_id","module_path","export_name","matches_requested_module","matches_requested_export"],"type":"object"},"maxItems":1000,"type":"array"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"requested_export_name":{"maxLength":4096,"minLength":1,"type":"string"},"requested_module_path":{"maxLength":4096,"minLength":1,"type":"string"},"selected_node_id":{"type":"null"},"status":{"enum":["missing","ambiguous"],"type":"string"}},"required":["evidence_id","graph_id","requested_module_path","requested_export_name","candidates","omitted_candidates","status","selected_node_id"],"type":"object"},{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"export_name":{"maxLength":4096,"minLength":1,"type":"string"},"matches_requested_export":{"type":"boolean"},"matches_requested_module":{"type":"boolean"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["node_id","module_path","export_name","matches_requested_module","matches_requested_export"],"type":"object"},"maxItems":1000,"type":"array"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"requested_export_name":{"maxLength":4096,"minLength":1,"type":"string"},"requested_module_path":{"maxLength":4096,"minLength":1,"type":"string"},"selected_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"const":"unavailable","type":"string"}},"required":["evidence_id","graph_id","requested_module_path","requested_export_name","candidates","omitted_candidates","status","selected_node_id"],"type":"object"}]},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"right":{"anyOf":[{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"export_name":{"maxLength":4096,"minLength":1,"type":"string"},"matches_requested_export":{"type":"boolean"},"matches_requested_module":{"type":"boolean"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["node_id","module_path","export_name","matches_requested_module","matches_requested_export"],"type":"object"},"maxItems":1000,"type":"array"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"requested_export_name":{"maxLength":4096,"minLength":1,"type":"string"},"requested_module_path":{"maxLength":4096,"minLength":1,"type":"string"},"selected_node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},"status":{"const":"selected","type":"string"}},"required":["evidence_id","graph_id","requested_module_path","requested_export_name","candidates","omitted_candidates","status","selected_node_id"],"type":"object"},{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"export_name":{"maxLength":4096,"minLength":1,"type":"string"},"matches_requested_export":{"type":"boolean"},"matches_requested_module":{"type":"boolean"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["node_id","module_path","export_name","matches_requested_module","matches_requested_export"],"type":"object"},"maxItems":1000,"type":"array"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"requested_export_name":{"maxLength":4096,"minLength":1,"type":"string"},"requested_module_path":{"maxLength":4096,"minLength":1,"type":"string"},"selected_node_id":{"type":"null"},"status":{"enum":["missing","ambiguous"],"type":"string"}},"required":["evidence_id","graph_id","requested_module_path","requested_export_name","candidates","omitted_candidates","status","selected_node_id"],"type":"object"},{"additionalProperties":false,"properties":{"candidates":{"items":{"additionalProperties":false,"properties":{"export_name":{"maxLength":4096,"minLength":1,"type":"string"},"matches_requested_export":{"type":"boolean"},"matches_requested_module":{"type":"boolean"},"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"node_id":{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"}},"required":["node_id","module_path","export_name","matches_requested_module","matches_requested_export"],"type":"object"},"maxItems":1000,"type":"array"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"graph_id":{"pattern":"^jag_[a-f0-9]{64}$","type":"string"},"omitted_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"requested_export_name":{"maxLength":4096,"minLength":1,"type":"string"},"requested_module_path":{"maxLength":4096,"minLength":1,"type":"string"},"selected_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"const":"unavailable","type":"string"}},"required":["evidence_id","graph_id","requested_module_path","requested_export_name","candidates","omitted_candidates","status","selected_node_id"],"type":"object"}]},"runtime_validation":{"additionalProperties":false,"properties":{"automatically_started":{"const":false,"type":"boolean"},"recommended_tool":{"const":"run_controlled_replay","type":"string"},"required_for":{"const":"runtime-semantics","type":"string"}},"required":["recommended_tool","automatically_started","required_for"],"type":"object"},"schema_version":{"const":1,"type":"number"},"summary":{"additionalProperties":false,"properties":{"added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["added","removed","changed","unknown"],"type":"object"}},"required":["schema_version","comparison_id","left","right","summary","changes","coverage","evidence_links","limitations","runtime_validation"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Compare Javascript Export Shapes"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Plan or execute a content-bound extracted-module JavaScript replay inside the Linux Bubblewrap, seccomp, and cgroup boundary. Execution requires approved: true and the exact plan digest. Supports deterministic boundary cases and optional left/right differential comparison; observations have controlled-replay authority and do not claim real application runtime behavior.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"cases":[{"arguments":[""],"case_id":"empty"}],"determinism":{"clock_iso":"2000-01-01T00:00:00.000Z","locale":"en-US","platform":"linux","random_seed":0,"timezone":"UTC"},"left":{"entry_alias":"parser","entry_export":"default","modules":[{"alias":"parser","dependencies":{},"format":"esm","path":"/approved/parser.mjs","role":"module"}]},"limits":{"cpu_quota_percent":50,"input_bytes":262144,"memory_bytes":134217728,"module_bytes":4194304,"output_bytes":524288,"protocol_bytes":16777216,"result_depth":16,"result_nodes":10000,"stderr_bytes":32768,"tasks":8,"tmpfs_bytes":16777216,"wall_time_ms":3000},"mode":"plan"}],"oneOf":[{"additionalProperties":false,"properties":{"cases":{"default":[],"description":"Value for cases.","items":{"additionalProperties":false,"properties":{"arguments":{"description":"Value for arguments.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"type":"array"},"case_id":{"description":"Value for case id.","maxLength":128,"minLength":1,"type":"string"}},"required":["case_id","arguments"],"type":"object"},"maxItems":128,"type":"array"},"determinism":{"additionalProperties":false,"default":{"clock_iso":"2000-01-01T00:00:00.000Z","locale":"en-US","platform":"linux","random_seed":0,"timezone":"UTC"},"description":"Value for determinism.","properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","description":"Value for clock iso.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","description":"Value for locale.","type":"string"},"platform":{"const":"linux","default":"linux","description":"Value for platform.","type":"string"},"random_seed":{"default":0,"description":"Value for random seed.","maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","description":"Value for timezone.","type":"string"}},"type":"object"},"generator":{"additionalProperties":false,"description":"Value for generator.","properties":{"count":{"description":"Value for count.","maximum":64,"minimum":1,"type":"integer"},"preset":{"description":"Value for preset.","enum":["parser-boundaries","sanitizer-boundaries","clipboard-boundaries"],"type":"string"},"seed":{"description":"Value for seed.","maximum":4294967295,"minimum":0,"type":"integer"}},"required":["preset","seed","count"],"type":"object"},"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"},"limits":{"additionalProperties":false,"default":{"cpu_quota_percent":50,"input_bytes":262144,"memory_bytes":134217728,"module_bytes":4194304,"output_bytes":524288,"protocol_bytes":16777216,"result_depth":16,"result_nodes":10000,"stderr_bytes":32768,"tasks":8,"tmpfs_bytes":16777216,"wall_time_ms":3000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"cpu_quota_percent":{"default":50,"description":"Value for cpu quota percent.","maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"description":"Bounded byte count for input.","maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"description":"Bounded byte count for memory.","maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"description":"Bounded byte count for module.","maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"description":"Bounded byte count for output.","maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"description":"Bounded byte count for protocol.","maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"description":"Value for result depth.","maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"description":"Value for result nodes.","maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"description":"Bounded byte count for stderr.","maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"description":"Value for tasks.","maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"description":"Bounded byte count for tmpfs.","maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"description":"Value for wall time ms.","maximum":10000,"minimum":100,"type":"integer"}},"type":"object"},"mode":{"const":"plan","description":"Operation mode that selects the requested behavior.","type":"string"},"reproducer_export":{"additionalProperties":false,"description":"Value for reproducer export.","properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"include_sources":{"default":false,"description":"Whether to include sources in the result.","type":"boolean"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"}},"required":["path","approved"],"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"}},"required":["left","mode"],"type":"object"},{"additionalProperties":false,"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"cases":{"default":[],"description":"Value for cases.","items":{"additionalProperties":false,"properties":{"arguments":{"description":"Value for arguments.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"type":"array"},"case_id":{"description":"Value for case id.","maxLength":128,"minLength":1,"type":"string"}},"required":["case_id","arguments"],"type":"object"},"maxItems":128,"type":"array"},"determinism":{"additionalProperties":false,"default":{"clock_iso":"2000-01-01T00:00:00.000Z","locale":"en-US","platform":"linux","random_seed":0,"timezone":"UTC"},"description":"Value for determinism.","properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","description":"Value for clock iso.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","description":"Value for locale.","type":"string"},"platform":{"const":"linux","default":"linux","description":"Value for platform.","type":"string"},"random_seed":{"default":0,"description":"Value for random seed.","maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","description":"Value for timezone.","type":"string"}},"type":"object"},"generator":{"additionalProperties":false,"description":"Value for generator.","properties":{"count":{"description":"Value for count.","maximum":64,"minimum":1,"type":"integer"},"preset":{"description":"Value for preset.","enum":["parser-boundaries","sanitizer-boundaries","clipboard-boundaries"],"type":"string"},"seed":{"description":"Value for seed.","maximum":4294967295,"minimum":0,"type":"integer"}},"required":["preset","seed","count"],"type":"object"},"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"},"limits":{"additionalProperties":false,"default":{"cpu_quota_percent":50,"input_bytes":262144,"memory_bytes":134217728,"module_bytes":4194304,"output_bytes":524288,"protocol_bytes":16777216,"result_depth":16,"result_nodes":10000,"stderr_bytes":32768,"tasks":8,"tmpfs_bytes":16777216,"wall_time_ms":3000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"cpu_quota_percent":{"default":50,"description":"Value for cpu quota percent.","maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"description":"Bounded byte count for input.","maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"description":"Bounded byte count for memory.","maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"description":"Bounded byte count for module.","maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"description":"Bounded byte count for output.","maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"description":"Bounded byte count for protocol.","maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"description":"Value for result depth.","maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"description":"Value for result nodes.","maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"description":"Bounded byte count for stderr.","maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"description":"Value for tasks.","maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"description":"Bounded byte count for tmpfs.","maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"description":"Value for wall time ms.","maximum":10000,"minimum":100,"type":"integer"}},"type":"object"},"mode":{"const":"execute","description":"Operation mode that selects the requested behavior.","type":"string"},"plan_digest":{"description":"Value for plan digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer_export":{"additionalProperties":false,"description":"Value for reproducer export.","properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"include_sources":{"default":false,"description":"Whether to include sources in the result.","type":"boolean"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"}},"required":["path","approved"],"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"}},"required":["left","mode","approved","plan_digest"],"type":"object"}],"type":"object"},"kind":"application","name":"run_controlled_replay","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema2":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema2"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema2"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"additionalProperties":false,"properties":{"evidence":{"type":"null"},"phase":{"const":"plan","type":"string"},"plan":{"additionalProperties":false,"properties":{"cases":{"items":{"additionalProperties":false,"properties":{"arguments":{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},"case_id":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["case_id","arguments","sha256"],"type":"object"},"type":"array"},"determinism":{"additionalProperties":false,"properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","type":"string"},"platform":{"const":"linux","default":"linux","type":"string"},"random_seed":{"default":0,"maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","type":"string"}},"required":["clock_iso","random_seed","locale","timezone","platform"],"type":"object"},"effects":{"items":{"type":"string"},"type":"array"},"filesystem":{"additionalProperties":false,"properties":{"host_writes":{"const":false,"type":"boolean"},"private_tmpfs_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["host_writes","private_tmpfs_bytes"],"type":"object"},"left":{"additionalProperties":false,"properties":{"entry_alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"type":"string"},"modules":{"items":{"additionalProperties":false,"properties":{"alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"byte_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"canonical_path":{"minLength":1,"type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"propertyNames":{"type":"string"},"type":"object"},"format":{"enum":["esm","commonjs-factory"],"type":"string"},"role":{"enum":["module","stub"],"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["alias","canonical_path","format","role","byte_count","sha256","dependencies"],"type":"object"},"type":"array"}},"required":["modules","entry_alias","entry_export"],"type":"object"},"limits":{"additionalProperties":false,"properties":{"cpu_quota_percent":{"default":50,"maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"maximum":10000,"minimum":100,"type":"integer"}},"required":["wall_time_ms","memory_bytes","tasks","cpu_quota_percent","tmpfs_bytes","module_bytes","input_bytes","protocol_bytes","output_bytes","stderr_bytes","result_depth","result_nodes"],"type":"object"},"network":{"const":"none","type":"string"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"policy_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"policy_version":{"const":"linux-bwrap-systemd-v1","type":"string"},"reproducer_export":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"const":"evidence_write","type":"string"},"include_sources":{"type":"boolean"},"path":{"minLength":1,"type":"string"}},"required":["path","include_sources","authority"],"type":"object"},{"type":"null"}]},"right":{"additionalProperties":false,"properties":{"entry_alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"type":"string"},"modules":{"items":{"additionalProperties":false,"properties":{"alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"byte_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"canonical_path":{"minLength":1,"type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"propertyNames":{"type":"string"},"type":"object"},"format":{"enum":["esm","commonjs-factory"],"type":"string"},"role":{"enum":["module","stub"],"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["alias","canonical_path","format","role","byte_count","sha256","dependencies"],"type":"object"},"type":"array"}},"required":["modules","entry_alias","entry_export"],"type":"object"},"runtime":{"additionalProperties":false,"properties":{"executable":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"read_only_files":{"items":{"additionalProperties":false,"properties":{"destination_path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_path":{"minLength":1,"type":"string"}},"required":["source_path","destination_path","sha256"],"type":"object"},"minItems":1,"type":"array"},"worker":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"}},"required":["executable","worker","read_only_files"],"type":"object"},"sandbox":{"additionalProperties":false,"properties":{"bubblewrap":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"seccomp_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"shell":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"systemctl":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"systemd_run":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"}},"required":["bubblewrap","systemd_run","systemctl","shell","seccomp_sha256"],"type":"object"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","plan_digest","policy_version","policy_sha256","network","filesystem","runtime","sandbox","left","cases","determinism","limits","effects","reproducer_export"],"type":"object"},"source_evidence":{"items":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema2"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema1"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"maxItems":0,"minItems":0,"type":"array"}},"required":["phase","plan","source_evidence","evidence"],"type":"object"},{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema2"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema1"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"phase":{"const":"execute","type":"string"},"plan":{"type":"null"},"source_evidence":{"items":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema2"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema1"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"minItems":1,"type":"array"}},"required":["phase","plan","source_evidence","evidence"],"type":"object"}],"type":"object"},"requiresSession":false,"title":"Run Controlled Replay"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Prepare a hash-bound Node/JavaScript characterization plan and deterministic reversible export transformation without executing target code. The exact source, selected byte range, runtime closure, sandbox profile, cases, and limits are committed for separate execution approval.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"expected_effect":"pure","instrumentation":{"artifact_path":"/approved/bundle.js","artifact_sha256":"0000000000000000000000000000000000000000000000000000000000000000","selection":{"byte_end":120,"byte_start":100,"export_name":"selected","selected_sha256":"0000000000000000000000000000000000000000000000000000000000000000"}},"preparation_approved":true,"replay":{"cases":[{"arguments":[""],"case_id":"empty"}],"left":{"entry_alias":"bundle","entry_export":"selected","modules":[{"alias":"bundle","dependencies":{},"format":"commonjs-factory","path":"/approved/bundle.js","role":"module"}]},"mode":"plan"},"selected_alias":"bundle"}],"properties":{"expected_effect":{"description":"Expected effect used to reject stale or mismatched input.","enum":["pure","observation-only"],"type":"string"},"instrumentation":{"additionalProperties":false,"description":"Value for instrumentation.","properties":{"artifact_path":{"description":"Local filesystem path for artifact.","maxLength":4096,"minLength":1,"type":"string"},"artifact_sha256":{"description":"Exact SHA-256 digest of artifact.","pattern":"^[a-f0-9]{64}$","type":"string"},"selection":{"additionalProperties":false,"description":"Value for selection.","properties":{"byte_end":{"description":"Value for byte end.","maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"description":"Value for byte start.","maximum":9007199254740991,"minimum":0,"type":"integer"},"export_name":{"description":"Value for export name.","pattern":"^[A-Za-z_$][A-Za-z0-9_$]{0,199}$","type":"string"},"selected_sha256":{"description":"Exact SHA-256 digest of selected.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["byte_start","byte_end","selected_sha256","export_name"],"type":"object"}},"required":["artifact_path","artifact_sha256","selection"],"type":"object"},"preparation_approved":{"const":true,"description":"Explicit operator approval for preparation.","type":"boolean"},"replay":{"additionalProperties":false,"description":"Value for replay.","properties":{"cases":{"default":[],"description":"Value for cases.","items":{"additionalProperties":false,"properties":{"arguments":{"description":"Value for arguments.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"type":"array"},"case_id":{"description":"Value for case id.","maxLength":128,"minLength":1,"type":"string"}},"required":["case_id","arguments"],"type":"object"},"maxItems":128,"type":"array"},"determinism":{"additionalProperties":false,"default":{"clock_iso":"2000-01-01T00:00:00.000Z","locale":"en-US","platform":"linux","random_seed":0,"timezone":"UTC"},"description":"Value for determinism.","properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","description":"Value for clock iso.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","description":"Value for locale.","type":"string"},"platform":{"const":"linux","default":"linux","description":"Value for platform.","type":"string"},"random_seed":{"default":0,"description":"Value for random seed.","maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","description":"Value for timezone.","type":"string"}},"type":"object"},"generator":{"additionalProperties":false,"description":"Value for generator.","properties":{"count":{"description":"Value for count.","maximum":64,"minimum":1,"type":"integer"},"preset":{"description":"Value for preset.","enum":["parser-boundaries","sanitizer-boundaries","clipboard-boundaries"],"type":"string"},"seed":{"description":"Value for seed.","maximum":4294967295,"minimum":0,"type":"integer"}},"required":["preset","seed","count"],"type":"object"},"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"},"limits":{"additionalProperties":false,"default":{"cpu_quota_percent":50,"input_bytes":262144,"memory_bytes":134217728,"module_bytes":4194304,"output_bytes":524288,"protocol_bytes":16777216,"result_depth":16,"result_nodes":10000,"stderr_bytes":32768,"tasks":8,"tmpfs_bytes":16777216,"wall_time_ms":3000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"cpu_quota_percent":{"default":50,"description":"Value for cpu quota percent.","maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"description":"Bounded byte count for input.","maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"description":"Bounded byte count for memory.","maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"description":"Bounded byte count for module.","maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"description":"Bounded byte count for output.","maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"description":"Bounded byte count for protocol.","maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"description":"Value for result depth.","maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"description":"Value for result nodes.","maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"description":"Bounded byte count for stderr.","maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"description":"Value for tasks.","maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"description":"Bounded byte count for tmpfs.","maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"description":"Value for wall time ms.","maximum":10000,"minimum":100,"type":"integer"}},"type":"object"},"mode":{"const":"plan","description":"Operation mode that selects the requested behavior.","type":"string"},"reproducer_export":{"additionalProperties":false,"description":"Value for reproducer export.","properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"include_sources":{"default":false,"description":"Whether to include sources in the result.","type":"boolean"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"}},"required":["path","approved"],"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"}},"required":["left","mode"],"type":"object"},"selected_alias":{"description":"Value for selected alias.","maxLength":200,"minLength":1,"type":"string"}},"required":["preparation_approved","selected_alias","expected_effect","instrumentation","replay"],"type":"object"},"kind":"application","name":"prepare_node_characterization","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema2":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema2"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema2"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"phase":{"const":"preparation","type":"string"},"plan":{"additionalProperties":false,"properties":{"allowed_boundaries":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"artifact":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","sha256","byte_length"],"type":"object"},"authority":{"additionalProperties":false,"properties":{"execution_approved":{"const":false,"type":"boolean"},"network":{"enum":["none","loopback"],"type":"string"},"preparation_approved":{"const":true,"type":"boolean"},"provider_owned_process_only":{"const":true,"type":"boolean"}},"required":["preparation_approved","execution_approved","network","provider_owned_process_only"],"type":"object"},"callable":{"additionalProperties":false,"properties":{"callable_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"export_name":{"maxLength":1000,"minLength":1,"type":"string"},"module_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"selector_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"semantic_evidence_id":{"anyOf":[{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["callable_id","module_id","export_name","semantic_evidence_id","selector_sha256"],"type":"object"},"determinism":{"additionalProperties":false,"properties":{"clock":{"enum":["fixed","real"],"type":"string"},"identifiers":{"enum":["deterministic","runtime"],"type":"string"},"randomness":{"enum":["seeded","system"],"type":"string"},"seed":{"maximum":4294967295,"minimum":0,"type":"integer"}},"required":["clock","randomness","identifiers","seed"],"type":"object"},"expected_effect":{"enum":["pure","observation-only"],"type":"string"},"isolated_home":{"maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"properties":{"idle_timeout_ms":{"maximum":300000,"minimum":1,"type":"integer"},"max_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_calls":{"maximum":10000,"minimum":1,"type":"integer"},"max_files":{"maximum":100000,"minimum":0,"type":"integer"},"max_handles":{"maximum":100000,"minimum":0,"type":"integer"},"max_processes":{"maximum":1000,"minimum":0,"type":"integer"},"timeout_ms":{"maximum":300000,"minimum":1,"type":"integer"}},"required":["max_calls","max_processes","max_files","max_bytes","max_handles","timeout_ms","idle_timeout_ms"],"type":"object"},"plan_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"preparation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime":{"additionalProperties":false,"properties":{"executable_path":{"maxLength":4096,"minLength":1,"type":"string"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"family":{"maxLength":100,"minLength":1,"type":"string"},"profile_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"provider_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"version":{"maxLength":500,"minLength":1,"type":"string"}},"required":["family","provider_id","executable_path","executable_sha256","version","profile_sha256"],"type":"object"},"schema_version":{"const":1,"type":"number"},"working_directory":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["schema_version","plan_sha256","preparation_sha256","artifact","runtime","callable","working_directory","isolated_home","expected_effect","allowed_boundaries","limits","determinism","authority"],"type":"object"},"replay":{"additionalProperties":false,"properties":{"evidence":{"type":"null"},"phase":{"const":"plan","type":"string"},"plan":{"additionalProperties":false,"properties":{"cases":{"items":{"additionalProperties":false,"properties":{"arguments":{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},"case_id":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["case_id","arguments","sha256"],"type":"object"},"type":"array"},"determinism":{"additionalProperties":false,"properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","type":"string"},"platform":{"const":"linux","default":"linux","type":"string"},"random_seed":{"default":0,"maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","type":"string"}},"required":["clock_iso","random_seed","locale","timezone","platform"],"type":"object"},"effects":{"items":{"type":"string"},"type":"array"},"filesystem":{"additionalProperties":false,"properties":{"host_writes":{"const":false,"type":"boolean"},"private_tmpfs_bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["host_writes","private_tmpfs_bytes"],"type":"object"},"left":{"additionalProperties":false,"properties":{"entry_alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"type":"string"},"modules":{"items":{"additionalProperties":false,"properties":{"alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"byte_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"canonical_path":{"minLength":1,"type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"propertyNames":{"type":"string"},"type":"object"},"format":{"enum":["esm","commonjs-factory"],"type":"string"},"role":{"enum":["module","stub"],"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["alias","canonical_path","format","role","byte_count","sha256","dependencies"],"type":"object"},"type":"array"}},"required":["modules","entry_alias","entry_export"],"type":"object"},"limits":{"additionalProperties":false,"properties":{"cpu_quota_percent":{"default":50,"maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"maximum":10000,"minimum":100,"type":"integer"}},"required":["wall_time_ms","memory_bytes","tasks","cpu_quota_percent","tmpfs_bytes","module_bytes","input_bytes","protocol_bytes","output_bytes","stderr_bytes","result_depth","result_nodes"],"type":"object"},"network":{"const":"none","type":"string"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"policy_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"policy_version":{"const":"linux-bwrap-systemd-v1","type":"string"},"reproducer_export":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"const":"evidence_write","type":"string"},"include_sources":{"type":"boolean"},"path":{"minLength":1,"type":"string"}},"required":["path","include_sources","authority"],"type":"object"},{"type":"null"}]},"right":{"additionalProperties":false,"properties":{"entry_alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"type":"string"},"modules":{"items":{"additionalProperties":false,"properties":{"alias":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"byte_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"canonical_path":{"minLength":1,"type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"propertyNames":{"type":"string"},"type":"object"},"format":{"enum":["esm","commonjs-factory"],"type":"string"},"role":{"enum":["module","stub"],"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["alias","canonical_path","format","role","byte_count","sha256","dependencies"],"type":"object"},"type":"array"}},"required":["modules","entry_alias","entry_export"],"type":"object"},"runtime":{"additionalProperties":false,"properties":{"executable":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"read_only_files":{"items":{"additionalProperties":false,"properties":{"destination_path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"source_path":{"minLength":1,"type":"string"}},"required":["source_path","destination_path","sha256"],"type":"object"},"minItems":1,"type":"array"},"worker":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"}},"required":["executable","worker","read_only_files"],"type":"object"},"sandbox":{"additionalProperties":false,"properties":{"bubblewrap":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"seccomp_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"shell":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"systemctl":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"},"systemd_run":{"additionalProperties":false,"properties":{"path":{"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["path","version","sha256"],"type":"object"}},"required":["bubblewrap","systemd_run","systemctl","shell","seccomp_sha256"],"type":"object"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","plan_digest","policy_version","policy_sha256","network","filesystem","runtime","sandbox","left","cases","determinism","limits","effects","reproducer_export"],"type":"object"},"source_evidence":{"items":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema2"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"maxItems":0,"minItems":0,"type":"array"}},"required":["phase","plan","source_evidence","evidence"],"type":"object"},"schema_version":{"const":1,"type":"number"},"transformation":{"additionalProperties":false,"properties":{"artifact_path":{"maxLength":4096,"minLength":1,"type":"string"},"inserted_ranges":{"items":{"additionalProperties":false,"properties":{"byte_end":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"inserted_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"purpose":{"enum":["factory-prefix","export-binding","factory-suffix"],"type":"string"}},"required":["byte_start","byte_end","inserted_sha256","purpose"],"type":"object"},"maxItems":3,"minItems":3,"type":"array"},"instrumented_byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"instrumented_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"kind":{"const":"commonjs-factory-export-v1","type":"string"},"original_byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"original_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"output_format":{"const":"commonjs-factory","type":"string"},"schema_version":{"const":1,"type":"number"},"selected_range":{"additionalProperties":false,"properties":{"byte_end":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"selected_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["byte_start","byte_end","selected_sha256"],"type":"object"},"source_map":{"const":null,"type":"null"}},"required":["schema_version","kind","artifact_path","original_sha256","original_byte_length","instrumented_sha256","instrumented_byte_length","selected_range","inserted_ranges","output_format","source_map"],"type":"object"},"transformation_evidence":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]}},"required":["schema_version","phase","plan","transformation","transformation_evidence","replay"],"type":"object"},"requiresSession":false,"title":"Prepare Node Characterization"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Recompute and execute one separately approved exact Node characterization plan in the owned controlled-replay boundary. Returns transformation, replay, cleanup, and provider-neutral characterization Evidence v2; stale plans fail before execution.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"approved_plan_sha256":"0000000000000000000000000000000000000000000000000000000000000000","execution_approved":true,"preparation":{"expected_effect":"pure","instrumentation":{"artifact_path":"/approved/bundle.js","artifact_sha256":"0000000000000000000000000000000000000000000000000000000000000000","selection":{"byte_end":120,"byte_start":100,"export_name":"selected","selected_sha256":"0000000000000000000000000000000000000000000000000000000000000000"}},"preparation_approved":true,"replay":{"cases":[{"arguments":[""],"case_id":"empty"}],"left":{"entry_alias":"bundle","entry_export":"selected","modules":[{"alias":"bundle","dependencies":{},"format":"commonjs-factory","path":"/approved/bundle.js","role":"module"}]},"mode":"plan"},"selected_alias":"bundle"}}],"properties":{"approved_plan_sha256":{"description":"Exact SHA-256 digest of approved plan.","pattern":"^[a-f0-9]{64}$","type":"string"},"execution_approved":{"const":true,"description":"Explicit operator approval for execution.","type":"boolean"},"preparation":{"additionalProperties":false,"description":"Value for preparation.","properties":{"expected_effect":{"description":"Expected effect used to reject stale or mismatched input.","enum":["pure","observation-only"],"type":"string"},"instrumentation":{"additionalProperties":false,"description":"Value for instrumentation.","properties":{"artifact_path":{"description":"Local filesystem path for artifact.","maxLength":4096,"minLength":1,"type":"string"},"artifact_sha256":{"description":"Exact SHA-256 digest of artifact.","pattern":"^[a-f0-9]{64}$","type":"string"},"selection":{"additionalProperties":false,"description":"Value for selection.","properties":{"byte_end":{"description":"Value for byte end.","maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"description":"Value for byte start.","maximum":9007199254740991,"minimum":0,"type":"integer"},"export_name":{"description":"Value for export name.","pattern":"^[A-Za-z_$][A-Za-z0-9_$]{0,199}$","type":"string"},"selected_sha256":{"description":"Exact SHA-256 digest of selected.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["byte_start","byte_end","selected_sha256","export_name"],"type":"object"}},"required":["artifact_path","artifact_sha256","selection"],"type":"object"},"preparation_approved":{"const":true,"description":"Explicit operator approval for preparation.","type":"boolean"},"replay":{"additionalProperties":false,"description":"Value for replay.","properties":{"cases":{"default":[],"description":"Value for cases.","items":{"additionalProperties":false,"properties":{"arguments":{"description":"Value for arguments.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"type":"array"},"case_id":{"description":"Value for case id.","maxLength":128,"minLength":1,"type":"string"}},"required":["case_id","arguments"],"type":"object"},"maxItems":128,"type":"array"},"determinism":{"additionalProperties":false,"default":{"clock_iso":"2000-01-01T00:00:00.000Z","locale":"en-US","platform":"linux","random_seed":0,"timezone":"UTC"},"description":"Value for determinism.","properties":{"clock_iso":{"default":"2000-01-01T00:00:00.000Z","description":"Value for clock iso.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"locale":{"const":"en-US","default":"en-US","description":"Value for locale.","type":"string"},"platform":{"const":"linux","default":"linux","description":"Value for platform.","type":"string"},"random_seed":{"default":0,"description":"Value for random seed.","maximum":4294967295,"minimum":0,"type":"integer"},"timezone":{"const":"UTC","default":"UTC","description":"Value for timezone.","type":"string"}},"type":"object"},"generator":{"additionalProperties":false,"description":"Value for generator.","properties":{"count":{"description":"Value for count.","maximum":64,"minimum":1,"type":"integer"},"preset":{"description":"Value for preset.","enum":["parser-boundaries","sanitizer-boundaries","clipboard-boundaries"],"type":"string"},"seed":{"description":"Value for seed.","maximum":4294967295,"minimum":0,"type":"integer"}},"required":["preset","seed","count"],"type":"object"},"left":{"additionalProperties":false,"description":"Left-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"},"limits":{"additionalProperties":false,"default":{"cpu_quota_percent":50,"input_bytes":262144,"memory_bytes":134217728,"module_bytes":4194304,"output_bytes":524288,"protocol_bytes":16777216,"result_depth":16,"result_nodes":10000,"stderr_bytes":32768,"tasks":8,"tmpfs_bytes":16777216,"wall_time_ms":3000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"cpu_quota_percent":{"default":50,"description":"Value for cpu quota percent.","maximum":100,"minimum":1,"type":"integer"},"input_bytes":{"default":262144,"description":"Bounded byte count for input.","maximum":1048576,"minimum":1,"type":"integer"},"memory_bytes":{"default":134217728,"description":"Bounded byte count for memory.","maximum":536870912,"minimum":16777216,"type":"integer"},"module_bytes":{"default":4194304,"description":"Bounded byte count for module.","maximum":16777216,"minimum":1,"type":"integer"},"output_bytes":{"default":524288,"description":"Bounded byte count for output.","maximum":4194304,"minimum":1,"type":"integer"},"protocol_bytes":{"default":16777216,"description":"Bounded byte count for protocol.","maximum":67108864,"minimum":1048576,"type":"integer"},"result_depth":{"default":16,"description":"Value for result depth.","maximum":64,"minimum":1,"type":"integer"},"result_nodes":{"default":10000,"description":"Value for result nodes.","maximum":100000,"minimum":1,"type":"integer"},"stderr_bytes":{"default":32768,"description":"Bounded byte count for stderr.","maximum":262144,"minimum":0,"type":"integer"},"tasks":{"default":8,"description":"Value for tasks.","maximum":32,"minimum":1,"type":"integer"},"tmpfs_bytes":{"default":16777216,"description":"Bounded byte count for tmpfs.","maximum":67108864,"minimum":1048576,"type":"integer"},"wall_time_ms":{"default":3000,"description":"Value for wall time ms.","maximum":10000,"minimum":100,"type":"integer"}},"type":"object"},"mode":{"const":"plan","description":"Operation mode that selects the requested behavior.","type":"string"},"reproducer_export":{"additionalProperties":false,"description":"Value for reproducer export.","properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"include_sources":{"default":false,"description":"Whether to include sources in the result.","type":"boolean"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"}},"required":["path","approved"],"type":"object"},"right":{"additionalProperties":false,"description":"Right-hand input used for comparison or differential execution.","properties":{"entry_alias":{"description":"Value for entry alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"entry_export":{"default":"default","description":"Value for entry export.","maxLength":256,"minLength":1,"type":"string"},"modules":{"description":"Value for modules.","items":{"additionalProperties":false,"properties":{"alias":{"description":"Value for alias.","maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"dependencies":{"additionalProperties":{"maxLength":256,"minLength":1,"pattern":"^[A-Za-z0-9_./:@-]+$","type":"string"},"default":{},"description":"Value for dependencies.","propertyNames":{"maxLength":256,"minLength":1,"type":"string"},"type":"object"},"format":{"description":"Declared input artifact format.","enum":["esm","commonjs-factory"],"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":4096,"pattern":"^\\\\/.*","type":"string"},"role":{"default":"module","description":"Value for role.","enum":["module","stub"],"type":"string"}},"required":["alias","path","format"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["modules","entry_alias"],"type":"object"}},"required":["left","mode"],"type":"object"},"selected_alias":{"description":"Value for selected alias.","maxLength":200,"minLength":1,"type":"string"}},"required":["preparation_approved","selected_alias","expected_effect","instrumentation","replay"],"type":"object"}},"required":["execution_approved","approved_plan_sha256","preparation"],"type":"object"},"kind":"application","name":"execute_node_characterization","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]},"phase":{"const":"execution","type":"string"},"plan":{"additionalProperties":false,"properties":{"allowed_boundaries":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"artifact":{"additionalProperties":false,"properties":{"byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"maxLength":4096,"minLength":1,"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","sha256","byte_length"],"type":"object"},"authority":{"additionalProperties":false,"properties":{"execution_approved":{"const":false,"type":"boolean"},"network":{"enum":["none","loopback"],"type":"string"},"preparation_approved":{"const":true,"type":"boolean"},"provider_owned_process_only":{"const":true,"type":"boolean"}},"required":["preparation_approved","execution_approved","network","provider_owned_process_only"],"type":"object"},"callable":{"additionalProperties":false,"properties":{"callable_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"export_name":{"maxLength":1000,"minLength":1,"type":"string"},"module_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"selector_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"semantic_evidence_id":{"anyOf":[{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["callable_id","module_id","export_name","semantic_evidence_id","selector_sha256"],"type":"object"},"determinism":{"additionalProperties":false,"properties":{"clock":{"enum":["fixed","real"],"type":"string"},"identifiers":{"enum":["deterministic","runtime"],"type":"string"},"randomness":{"enum":["seeded","system"],"type":"string"},"seed":{"maximum":4294967295,"minimum":0,"type":"integer"}},"required":["clock","randomness","identifiers","seed"],"type":"object"},"expected_effect":{"enum":["pure","observation-only"],"type":"string"},"isolated_home":{"maxLength":4096,"minLength":1,"type":"string"},"limits":{"additionalProperties":false,"properties":{"idle_timeout_ms":{"maximum":300000,"minimum":1,"type":"integer"},"max_bytes":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"max_calls":{"maximum":10000,"minimum":1,"type":"integer"},"max_files":{"maximum":100000,"minimum":0,"type":"integer"},"max_handles":{"maximum":100000,"minimum":0,"type":"integer"},"max_processes":{"maximum":1000,"minimum":0,"type":"integer"},"timeout_ms":{"maximum":300000,"minimum":1,"type":"integer"}},"required":["max_calls","max_processes","max_files","max_bytes","max_handles","timeout_ms","idle_timeout_ms"],"type":"object"},"plan_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"preparation_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"runtime":{"additionalProperties":false,"properties":{"executable_path":{"maxLength":4096,"minLength":1,"type":"string"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"family":{"maxLength":100,"minLength":1,"type":"string"},"profile_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"provider_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"version":{"maxLength":500,"minLength":1,"type":"string"}},"required":["family","provider_id","executable_path","executable_sha256","version","profile_sha256"],"type":"object"},"schema_version":{"const":1,"type":"number"},"working_directory":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["schema_version","plan_sha256","preparation_sha256","artifact","runtime","callable","working_directory","isolated_home","expected_effect","allowed_boundaries","limits","determinism","authority"],"type":"object"},"replay":{"additionalProperties":false,"properties":{"evidence":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema1"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"phase":{"const":"execute","type":"string"},"plan":{"type":"null"},"source_evidence":{"items":{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"residual_resources":{"items":{"type":"string"},"type":"array"},"state":{"enum":["complete","incomplete"],"type":"string"}},"required":["state","residual_resources"],"type":"object"},"comparison":{"items":{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"left_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"right_index":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"status":{"enum":["equal","changed","unknown"],"type":"string"}},"required":["case_id","status","left_index","right_index"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"outcomes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"return","type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"},"value":{"$ref":"#/$defs/__schema1"}},"required":["case_id","input_sha256","outcome","value","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"exception":{"additionalProperties":false,"properties":{"message":{"type":"string"},"name":{"type":"string"},"stack":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","message","stack"],"type":"object"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["exception","serialization_error","denied"],"type":"string"},"output_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","exception","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"enum":["timeout","oom","crash","cancelled"],"type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":false,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"},{"additionalProperties":false,"properties":{"case_id":{"type":"string"},"input_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"outcome":{"const":"protocol_error","type":"string"},"output_sha256":{"type":"null"},"truncated":{"const":true,"type":"boolean"}},"required":["case_id","input_sha256","outcome","output_sha256","truncated"],"type":"object"}]},"type":"array"},"plan_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"reproducer":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"state":{"const":"written","type":"string"}},"required":["state","path","sha256"],"type":"object"},{"additionalProperties":false,"properties":{"error":{"type":"string"},"path":{"type":"string"},"state":{"const":"failed","type":"string"}},"required":["state","path","error"],"type":"object"}]},{"type":"null"}]},"schema_version":{"const":1,"type":"number"},"stderr":{"type":"string"},"termination":{"enum":["completed","timeout","oom","crash","cancelled","protocol_error"],"type":"string"}},"required":["schema_version","plan_digest","outcomes","stderr","termination","cleanup","limitations","reproducer"],"type":"object"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","confidence","authority","environment","limitations","locations","evidence_links","normalized_result"],"type":"object"},"minItems":1,"type":"array"}},"required":["phase","plan","source_evidence","evidence"],"type":"object"},"schema_version":{"const":1,"type":"number"},"transformation":{"additionalProperties":false,"properties":{"artifact_path":{"maxLength":4096,"minLength":1,"type":"string"},"inserted_ranges":{"items":{"additionalProperties":false,"properties":{"byte_end":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"inserted_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"purpose":{"enum":["factory-prefix","export-binding","factory-suffix"],"type":"string"}},"required":["byte_start","byte_end","inserted_sha256","purpose"],"type":"object"},"maxItems":3,"minItems":3,"type":"array"},"instrumented_byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"instrumented_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"kind":{"const":"commonjs-factory-export-v1","type":"string"},"original_byte_length":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"original_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"output_format":{"const":"commonjs-factory","type":"string"},"schema_version":{"const":1,"type":"number"},"selected_range":{"additionalProperties":false,"properties":{"byte_end":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"byte_start":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"selected_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["byte_start","byte_end","selected_sha256"],"type":"object"},"source_map":{"const":null,"type":"null"}},"required":["schema_version","kind","artifact_path","original_sha256","original_byte_length","instrumented_sha256","instrumented_byte_length","selected_range","inserted_ranges","output_format","source_map"],"type":"object"},"transformation_evidence":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"id":{"minLength":1,"type":"string"},"isolation":{"enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"locations":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"address":{"minLength":1,"type":"string"},"kind":{"const":"address","type":"string"}},"required":["kind","address"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"minLength":1,"type":"string"},"kind":{"const":"address-range","type":"string"},"start":{"minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"artifact-path","type":"string"},"path":{"minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"file-offset","type":"string"},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"additionalProperties":false,"properties":{"end":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","type":"string"},"start":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0"},"operation":{"minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"minLength":1,"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"schema_version":{"const":2,"type":"number"},"subject":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"digest":{"additionalProperties":false,"properties":{"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}]}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]}},"required":["schema_version","phase","plan","transformation","transformation_evidence","evidence","replay"],"type":"object"},"requiresSession":false,"title":"Execute Node Characterization"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Generate one deterministic page of a ReconstructionObligationLedger/v1 from an authenticated Evidence v2 bundle, reviewed obligations, and an explicit reconstruction manifest. Static candidates remain candidates; duplicate ownership, missing original or reconstruction cases, missing parser/type, weak verifier authority, unenumerated claims, contradictions, dependencies, and residual unknowns fail closed. Every page carries the same full-ledger closure digest and typed per-obligation diagnostics.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"evidence_bundle":{"artifacts":[],"bundle_version":2,"captures":[],"environments":[],"providers":[],"records":[],"scenarios":[],"unknowns":[]},"limits":{"max_obligations":1000},"manifest":{"bindings":[],"contradictions":[],"schema_version":1},"page":{"limit":50,"offset":0},"reviewed_obligations":[]}],"properties":{"evidence_bundle":{"description":"Value for evidence bundle.","properties":{"artifacts":{"description":"Value for artifacts.","items":{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"}},"required":["digest","format","architecture"],"type":"object"},"type":"array"},"bundle_version":{"const":2,"description":"Value for bundle version.","type":"number"},"captures":{"description":"Value for captures.","items":{"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"}},"required":["evidence_id","predicate_type"],"type":"object"},"type":"array"},"environments":{"description":"Value for environments.","items":{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},"type":"array"},"providers":{"description":"Value for providers.","items":{"properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"type":"array"},"records":{"description":"Value for records.","items":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]},"type":"array"},"scenarios":{"description":"Value for scenarios.","items":{"properties":{"authority":{"const":"controlled-replay","description":"Value for authority.","type":"string"},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"operation":{"description":"Value for operation.","minLength":1,"type":"string"}},"required":["evidence_id","operation","authority"],"type":"object"},"type":"array"},"unknowns":{"description":"Value for unknowns.","items":{"properties":{"contradicting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the contradicting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"description":"Value for domain.","maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the mutation observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for previous revision digest."},"question":{"description":"Concrete unresolved question to retain for later investigation.","maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"description":"Value for recommended probes.","items":{"properties":{"operation":{"description":"Value for operation.","maxLength":200,"minLength":1,"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"description":"Value for registry version.","type":"number"},"relationships":{"description":"Value for relationships.","items":{"properties":{"type":{"description":"Value for type.","enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}],"description":"Value for required authority."},"required_confidence":{"description":"Value for required confidence.","enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for architecture."},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for id."},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}],"description":"Value for isolation."},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for platform."}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for required environment."},"resolution":{"anyOf":[{"oneOf":[{"properties":{"disposition":{"const":"verified","description":"Value for disposition.","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"properties":{"disposition":{"description":"Value for disposition.","enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}],"description":"Value for resolution."},"revision":{"description":"Value for revision.","maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"description":"Value for revision digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for scope digest."},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the supporting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"},"type":"array"}},"required":["bundle_version","artifacts","providers","environments","scenarios","captures","unknowns","records"],"type":"object"},"limits":{"additionalProperties":false,"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"max_obligations":{"description":"Maximum permitted obligations for this operation.","maximum":10000,"minimum":1,"type":"integer"}},"required":["max_obligations"],"type":"object"},"manifest":{"additionalProperties":false,"description":"Value for manifest.","properties":{"bindings":{"description":"Value for bindings.","items":{"additionalProperties":false,"properties":{"fixtures":{"description":"Value for fixtures.","items":{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"case_kind":{"description":"Value for case kind.","enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"fixture_id":{"description":"Value for fixture id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["fixture_id","case_kind","authority","evidence_ids"],"type":"object"},"maxItems":100,"type":"array"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"original_cases":{"description":"Value for original cases.","items":{"additionalProperties":false,"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"description":"Value for kind.","enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","evidence_id","location"],"type":"object"},"maxItems":100,"type":"array"},"owner":{"additionalProperties":false,"description":"Value for owner.","properties":{"module_path":{"description":"Local filesystem path for module.","maxLength":4096,"minLength":1,"type":"string"},"owner_sha256":{"description":"Exact SHA-256 digest of owner.","pattern":"^[a-f0-9]{64}$","type":"string"},"symbol":{"description":"Value for symbol.","maxLength":1024,"minLength":1,"type":"string"}},"required":["module_path","symbol","owner_sha256"],"type":"object"},"parser_type":{"anyOf":[{"additionalProperties":false,"properties":{"domain_type":{"description":"Value for domain type.","maxLength":4096,"minLength":1,"type":"string"},"parser":{"description":"Value for parser.","maxLength":4096,"minLength":1,"type":"string"},"schema":{"description":"Value for schema.","maxLength":4096,"minLength":1,"type":"string"}},"required":["parser","schema","domain_type"],"type":"object"},{"type":"null"}],"description":"Value for parser type."},"verifier":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"command":{"description":"Value for command.","maxLength":4096,"minLength":1,"type":"string"},"enumerated_obligation_ids":{"description":"Value for enumerated obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"nondeterminism":{"additionalProperties":false,"description":"Value for nondeterminism.","properties":{"mode":{"description":"Operation mode that selects the requested behavior.","enum":["total-order","partial-order","finite-traces"],"type":"string"},"specification":{"description":"Value for specification.","maxLength":4096,"minLength":1,"type":"string"}},"required":["mode","specification"],"type":"object"},"result_evidence_id":{"description":"Exact Evidence v2 identifier for the result observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","skipped"],"type":"string"},"verifier_id":{"description":"Value for verifier id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["verifier_id","claim_id","command","authority","status","result_evidence_id","enumerated_obligation_ids","nondeterminism"],"type":"object"},{"type":"null"}],"description":"Value for verifier."}},"required":["obligation_id","owner","parser_type","original_cases","fixtures","verifier"],"type":"object"},"maxItems":10000,"type":"array"},"contradictions":{"description":"Value for contradictions.","items":{"additionalProperties":false,"properties":{"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":2,"type":"array"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["obligation_id","evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","bindings","contradictions"],"type":"object"},"page":{"additionalProperties":false,"description":"Value for page.","properties":{"limit":{"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"offset":{"description":"Zero-based index of the first result to return.","maximum":10000,"minimum":0,"type":"integer"}},"required":["offset","limit"],"type":"object"},"reviewed_obligations":{"description":"Value for reviewed obligations.","items":{"additionalProperties":false,"properties":{"application_layer":{"description":"Value for application layer.","enum":["cli","protocol","electron","persistence","process","runtime","packaging","native-abi","application","other"],"type":"string"},"dependency_obligation_ids":{"description":"Value for dependency obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"disposition":{"description":"Value for disposition.","enum":["active","blocked","out-of-scope"],"type":"string"},"family":{"description":"Value for family.","maxLength":100,"minLength":1,"type":"string"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"obligation_version":{"description":"Value for obligation version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"required":{"description":"Value for required.","type":"boolean"},"required_case_kinds":{"description":"Value for required case kinds.","items":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"maxItems":5,"minItems":1,"type":"array"},"required_fixture_authority":{"description":"Value for required fixture authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"required_next_evidence":{"description":"Value for required next evidence.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"required_original_authority":{"description":"Value for required original authority.","enum":["static","runtime","process","external"],"type":"string"},"required_verifier_authority":{"description":"Value for required verifier authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"requires_parser_type":{"description":"Value for requires parser type.","type":"boolean"},"residual_unknown_ids":{"description":"Value for residual unknown ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"review_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the review observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"target":{"additionalProperties":false,"description":"Value for target.","properties":{"application_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for application node id."},"artifact_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of artifact."},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"},"semantic_node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for semantic node id."}},"required":["artifact_sha256","application_node_id","semantic_node_id","location"],"type":"object"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"},"unavailable_authority":{"description":"Value for unavailable authority.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"}},"required":["obligation_id","obligation_version","title","application_layer","family","target","required","required_case_kinds","required_original_authority","required_fixture_authority","required_verifier_authority","requires_parser_type","dependency_obligation_ids","residual_unknown_ids","unavailable_authority","required_next_evidence","disposition","review_evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"}},"required":["evidence_bundle","reviewed_obligations","manifest","limits","page"],"type":"object"},"kind":"application","name":"build_reconstruction_obligation_ledger","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"closure_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"properties":{"max_obligations":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"omitted_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"enum":["complete","partial"],"type":"string"},"truncated":{"type":"boolean"}},"required":["status","truncated","omitted_count","max_obligations"],"type":"object"},"dependency_graph":{"items":{"additionalProperties":false,"properties":{"depends_on_obligation_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"obligation_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["obligation_id","depends_on_obligation_id"],"type":"object"},"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100000,"type":"array"},"ledger_id":{"pattern":"^rol_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"obligations":{"items":{"additionalProperties":false,"properties":{"application_layer":{"enum":["cli","protocol","electron","persistence","process","runtime","packaging","native-abi","application","other"],"type":"string"},"authority_references":{"items":{"additionalProperties":false,"properties":{"authority":{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"location":{"maxLength":4096,"minLength":1,"type":"string"},"state":{"enum":["candidate","observed","reviewed","unknown"],"type":"string"}},"required":["evidence_id","authority","state","location"],"type":"object"},"maxItems":1000,"minItems":1,"type":"array"},"binding":{"anyOf":[{"additionalProperties":false,"properties":{"fixtures":{"items":{"additionalProperties":false,"properties":{"authority":{"enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"case_kind":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"fixture_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["fixture_id","case_kind","authority","evidence_ids"],"type":"object"},"maxItems":100,"type":"array"},"obligation_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"original_cases":{"items":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"location":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","evidence_id","location"],"type":"object"},"maxItems":100,"type":"array"},"owner":{"additionalProperties":false,"properties":{"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"owner_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"symbol":{"maxLength":1024,"minLength":1,"type":"string"}},"required":["module_path","symbol","owner_sha256"],"type":"object"},"parser_type":{"anyOf":[{"additionalProperties":false,"properties":{"domain_type":{"maxLength":4096,"minLength":1,"type":"string"},"parser":{"maxLength":4096,"minLength":1,"type":"string"},"schema":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["parser","schema","domain_type"],"type":"object"},{"type":"null"}]},"verifier":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"claim_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"command":{"maxLength":4096,"minLength":1,"type":"string"},"enumerated_obligation_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"nondeterminism":{"additionalProperties":false,"properties":{"mode":{"enum":["total-order","partial-order","finite-traces"],"type":"string"},"specification":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["mode","specification"],"type":"object"},"result_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"status":{"enum":["pass","fail","unknown","unsupported","skipped"],"type":"string"},"verifier_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["verifier_id","claim_id","command","authority","status","result_evidence_id","enumerated_obligation_ids","nondeterminism"],"type":"object"},{"type":"null"}]}},"required":["obligation_id","owner","parser_type","original_cases","fixtures","verifier"],"type":"object"},{"type":"null"}]},"dependency_obligation_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"diagnostics":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["duplicate-definition","missing-owner","ambiguous-owner","missing-parser-type","missing-original-case","weak-original-case-authority","missing-case","weak-fixture-authority","missing-verifier","verifier-does-not-enumerate","missing-verifier-result","weak-verifier-authority","verifier-failed","static-only","contradiction","contradiction-evidence-missing","residual-unknown","dependency-missing","dependency-open","unavailable-authority","blocked","out-of-scope"],"type":"string"},"detail":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["code","detail"],"type":"object"},"maxItems":1000,"type":"array"},"family":{"maxLength":100,"minLength":1,"type":"string"},"obligation_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"obligation_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_cases":{"items":{"additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"location":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","evidence_id","location"],"type":"object"},"maxItems":100,"type":"array"},"origin":{"enum":["generated","reviewed"],"type":"string"},"required":{"type":"boolean"},"required_case_kinds":{"items":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"maxItems":5,"minItems":1,"type":"array"},"required_fixture_authority":{"enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"required_next_evidence":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"required_original_authority":{"enum":["static","runtime","process","external"],"type":"string"},"required_verifier_authority":{"enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"requires_parser_type":{"type":"boolean"},"residual_unknown_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"source_state":{"enum":["candidate","observed","reviewed","unknown"],"type":"string"},"status":{"enum":["unowned","characterized","implemented","verified","contradicted","blocked","out-of-scope","unknown"],"type":"string"},"target":{"additionalProperties":false,"properties":{"application_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"artifact_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"location":{"maxLength":4096,"minLength":1,"type":"string"},"semantic_node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["artifact_sha256","application_node_id","semantic_node_id","location"],"type":"object"},"title":{"maxLength":500,"minLength":1,"type":"string"},"unavailable_authority":{"items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"}},"required":["obligation_id","obligation_version","title","origin","application_layer","family","target","authority_references","source_state","observed_cases","required","required_case_kinds","required_original_authority","required_fixture_authority","required_verifier_authority","requires_parser_type","dependency_obligation_ids","residual_unknown_ids","unavailable_authority","required_next_evidence","binding","status","diagnostics"],"type":"object"},"maxItems":100,"type":"array"},"ownership_graph":{"items":{"additionalProperties":false,"properties":{"module_path":{"maxLength":4096,"minLength":1,"type":"string"},"obligation_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"symbol":{"maxLength":1024,"minLength":1,"type":"string"}},"required":["obligation_id","module_path","symbol"],"type":"object"},"type":"array"},"page":{"additionalProperties":false,"properties":{"limit":{"maximum":100,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["offset","limit","total","returned","next_offset"],"type":"object"},"reports":{"additionalProperties":false,"properties":{"contradicted_obligation_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"missing_owner_obligation_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"missing_verifier_obligation_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"residual_unknown_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"}},"required":["missing_owner_obligation_ids","missing_verifier_obligation_ids","contradicted_obligation_ids","residual_unknown_ids"],"type":"object"},"schema":{"const":"ReconstructionObligationLedger","type":"string"},"schema_version":{"const":1,"type":"number"},"status":{"enum":["ready","open","failed","unknown"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"by_application_layer":{"items":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"enum":["cli","protocol","electron","persistence","process","runtime","packaging","native-abi","application","other"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"by_evidence_authority":{"items":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"enum":["candidate","observed","reviewed","unknown"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"by_status":{"items":{"additionalProperties":false,"properties":{"count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"enum":["unowned","characterized","implemented","verified","contradicted","blocked","out-of-scope","unknown"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"required":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"required_open":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"verified":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","required","verified","required_open","by_status","by_application_layer","by_evidence_authority"],"type":"object"}},"required":["schema","schema_version","ledger_id","closure_digest","status","coverage","summary","reports","ownership_graph","dependency_graph","evidence_links","limitations","page","obligations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Build Reconstruction Obligation Ledger"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Evaluate the fixed nine-stage public reconstruction journey into a deterministic ReconstructionReadinessReport/v1. Exact capability limits, provider routing, CLI/MCP status parity, bounded authority, partial-order comparison, contradictions, obligation closure, cleanup, and replay digests fail closed. Aggregate pass is emitted only when every required stage and check passes with attributable Evidence.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"capabilities":[{"authority_scopes":["investigation-input"],"available":true,"bounded":true,"capability_id":"analyze-javascript-application","limits":[{"name":"max-ast-nodes","unit":"count","value":2000000}],"side_effect":"reads-target","unavailable_reason":null}],"cleanup":[{"cancelled":true,"diagnostic_evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"owned_resources_remaining":0,"run_id":"run.cancelled"}],"client":{"name":"synthetic-mcp-client","negotiated_capabilities":["elicitation","progress","resources"],"version":"1"},"closure_history":[{"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"ledger_digest":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","newly_verified_obligation_ids":[],"required_open":1,"sequence":0,"status":"open"},{"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"ledger_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","newly_verified_obligation_ids":["obl.readiness"],"required_open":0,"sequence":1,"status":"ready"}],"comparisons":[{"comparison_id":"comparison.concurrent","concurrent":true,"contradiction_ids":[],"deliberate_divergence_ref":null,"divergence_refs":[],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"schedule_semantics":"partial-order","truncated":false,"unavailable_authority":false,"unstable":false,"verdict":"equivalent"},{"comparison_id":"comparison.divergence","concurrent":true,"contradiction_ids":[],"deliberate_divergence_ref":"/events/primary","divergence_refs":["/events/primary"],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"schedule_semantics":"finite-traces","truncated":false,"unavailable_authority":false,"unstable":false,"verdict":"different"},{"comparison_id":"comparison.contradicted","concurrent":false,"contradiction_ids":["contradiction.artifact"],"deliberate_divergence_ref":null,"divergence_refs":[],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"schedule_semantics":"finite-traces","truncated":false,"unavailable_authority":false,"unstable":false,"verdict":"unknown"}],"contradictions":[{"affected_comparison_ids":["comparison.contradicted"],"contradiction_id":"contradiction.artifact","declared_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","ev_b05c548cf5d0ba30bb6043ec26e583b551e793c636b747e1ed8630c511439f91"],"observed_sha256":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","policy":"record-and-continue"}],"delegation_checks":[{"candidate_id":"candidate.reconstructed","delegates_to_authority":false,"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"]}],"evidence_bundle":{"artifacts":[],"bundle_version":2,"captures":[],"environments":[],"providers":[{"id":"rea-readiness-fixture","name":"REA readiness fixture","version":"1"}],"records":[{"authority":"controlled-replay","confidence":"observed","environment":null,"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","evidence_links":[],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"passed":true,"variant":"authority"},"operation":"run_reconstruction_readiness_fixture","parameters":{"variant":"authority"},"predicate_type":"rea.reconstruction-readiness-fixture/v1","provider":{"id":"rea-readiness-fixture","name":"REA readiness fixture","version":"1"},"raw_result":null,"schema_version":2,"subject":null},{"authority":"controlled-replay","confidence":"observed","environment":null,"evidence_id":"ev_b05c548cf5d0ba30bb6043ec26e583b551e793c636b747e1ed8630c511439f91","evidence_links":[],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"passed":true,"variant":"contradiction"},"operation":"run_reconstruction_readiness_fixture","parameters":{"variant":"contradiction"},"predicate_type":"rea.reconstruction-readiness-fixture/v1","provider":{"id":"rea-readiness-fixture","name":"REA readiness fixture","version":"1"},"raw_result":null,"schema_version":2,"subject":null}],"scenarios":[{"authority":"controlled-replay","evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","operation":"run_reconstruction_readiness_fixture"},{"authority":"controlled-replay","evidence_id":"ev_b05c548cf5d0ba30bb6043ec26e583b551e793c636b747e1ed8630c511439f91","operation":"run_reconstruction_readiness_fixture"}],"unknowns":[]},"fixtures":[{"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","deliberate_faults":["fault.native"],"environment_id":"environment.synthetic","fixture_id":"fixture.native","kind":"native"},{"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","deliberate_faults":["fault.javascript-cli"],"environment_id":"environment.synthetic","fixture_id":"fixture.javascript-cli","kind":"javascript-cli"},{"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","deliberate_faults":["fault.electron"],"environment_id":"environment.synthetic","fixture_id":"fixture.electron","kind":"electron"},{"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","deliberate_faults":["fault.incomplete-reconstruction"],"environment_id":"environment.synthetic","fixture_id":"fixture.incomplete-reconstruction","kind":"incomplete-reconstruction"},{"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","deliberate_faults":["fault.broken-runtime"],"environment_id":"environment.synthetic","fixture_id":"fixture.broken-runtime","kind":"broken-runtime"}],"grants":[{"decision":"denied","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"grant_id":"grant.denied","launched_process":false,"scope":"process-capture"},{"decision":"granted","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"grant_id":"grant.session","launched_process":true,"scope":"process-capture"}],"identity":{"catalog_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","cli_version":"2.4.0","providers":[{"digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","provider_id":"javascript-application","reason_code":null,"state":"available","version":"1"},{"digest":null,"provider_id":"broken-runtime-probe","reason_code":"host-runtime-linker-failure","state":"broken-host","version":null}],"server_version":"2.4.0","skill_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","versions":[{"component":"rea-cli","digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","remediation":null,"state":"current","version":"2.4.0"},{"component":"rea-server","digest":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","remediation":"Restart the connected MCP server.","state":"stale","version":"2.3.0"},{"component":"rea-server","digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","remediation":null,"state":"current","version":"2.4.0"}]},"obligation_ledger":{"closure_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","coverage":{"max_obligations":100,"omitted_count":0,"status":"complete","truncated":false},"dependency_graph":[],"evidence_links":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"ledger_id":"rol_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","limitations":[],"obligations":[{"application_layer":"process","authority_references":[{"authority":"controlled-replay","evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","location":"/fixture","state":"observed"}],"binding":{"fixtures":[{"authority":"packaged-process","case_kind":"positive","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"fixture_id":"fixture.positive"},{"authority":"packaged-process","case_kind":"negative","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"fixture_id":"fixture.negative"},{"authority":"packaged-process","case_kind":"malformed","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"fixture_id":"fixture.malformed"},{"authority":"packaged-process","case_kind":"cancellation","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"fixture_id":"fixture.cancellation"},{"authority":"packaged-process","case_kind":"teardown","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"fixture_id":"fixture.teardown"}],"obligation_id":"obl.readiness","original_cases":[{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"positive","location":"/original/positive"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"negative","location":"/original/negative"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"malformed","location":"/original/malformed"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"cancellation","location":"/original/cancellation"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"teardown","location":"/original/teardown"}],"owner":{"module_path":"src/readiness.ts","owner_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","symbol":"runReadiness"},"parser_type":null,"verifier":{"authority":"packaged-process","claim_id":"claim.readiness","command":"npm run verify:readiness","enumerated_obligation_ids":["obl.readiness"],"nondeterminism":{"mode":"partial-order","specification":"Startup precedes teardown."},"result_evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","status":"pass","verifier_id":"verifier.readiness"}},"dependency_obligation_ids":[],"diagnostics":[],"family":"packaged-process-lifecycle","obligation_id":"obl.readiness","obligation_version":1,"observed_cases":[{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"positive","location":"/original/positive"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"negative","location":"/original/negative"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"malformed","location":"/original/malformed"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"cancellation","location":"/original/cancellation"},{"evidence_id":"ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9","kind":"teardown","location":"/original/teardown"}],"origin":"reviewed","required":true,"required_case_kinds":["positive","negative","malformed","cancellation","teardown"],"required_fixture_authority":"packaged-process","required_next_evidence":[],"required_original_authority":"process","required_verifier_authority":"packaged-process","requires_parser_type":false,"residual_unknown_ids":[],"source_state":"observed","status":"verified","target":{"application_node_id":null,"artifact_sha256":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","location":"/fixture","semantic_node_id":null},"title":"Preserve the packaged readiness fixture lifecycle","unavailable_authority":[]}],"ownership_graph":[{"module_path":"src/readiness.ts","obligation_id":"obl.readiness","symbol":"runReadiness"}],"reports":{"contradicted_obligation_ids":[],"missing_owner_obligation_ids":[],"missing_verifier_obligation_ids":[],"residual_unknown_ids":[]},"schema":"ReconstructionObligationLedger","schema_version":1,"status":"ready","summary":{"by_application_layer":[{"count":0,"key":"cli"},{"count":0,"key":"protocol"},{"count":0,"key":"electron"},{"count":0,"key":"persistence"},{"count":1,"key":"process"},{"count":0,"key":"runtime"},{"count":0,"key":"packaging"},{"count":0,"key":"native-abi"},{"count":0,"key":"application"},{"count":0,"key":"other"}],"by_evidence_authority":[{"count":0,"key":"candidate"},{"count":1,"key":"observed"},{"count":0,"key":"reviewed"},{"count":0,"key":"unknown"}],"by_status":[{"count":0,"key":"unowned"},{"count":0,"key":"characterized"},{"count":0,"key":"implemented"},{"count":1,"key":"verified"},{"count":0,"key":"contradicted"},{"count":0,"key":"blocked"},{"count":0,"key":"out-of-scope"},{"count":0,"key":"unknown"}],"required":1,"required_open":0,"total":1,"verified":1}},"operation_outcomes":[{"call_kind":"valid","cli_exit_code":0,"error_code":null,"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"expected_success":true,"mcp_status":null,"operation":"inspect-artifact","recovered":false,"sequence":0,"surface":"cli"},{"call_kind":"valid","cli_exit_code":null,"error_code":null,"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"expected_success":true,"mcp_status":"success","operation":"inspect-artifact","recovered":false,"sequence":1,"surface":"mcp"},{"call_kind":"permission","cli_exit_code":2,"error_code":"permission-required","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"expected_success":false,"mcp_status":null,"operation":"capture-process","recovered":true,"sequence":2,"surface":"cli"},{"call_kind":"permission","cli_exit_code":null,"error_code":"permission-required","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"expected_success":false,"mcp_status":"non-success","operation":"capture-process","recovered":true,"sequence":3,"surface":"mcp"}],"replay":{"deterministic":true,"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"expected_source_digest":null,"stale_input_detected":true,"tamper_detected":true},"schema_version":1,"stages":[{"capability_issue":null,"checks":[{"check_id":"target-free-start","detail":"Synthetic conformance proved target-free-start.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"artifact-inventory","detail":"Synthetic conformance proved artifact-inventory.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"compatible-workflow-selected","detail":"Synthetic conformance proved compatible-workflow-selected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"limits-visible","detail":"Synthetic conformance proved limits-visible.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"discover-classify","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"broken-runtime-distinguished","detail":"Synthetic conformance proved broken-runtime-distinguished.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"version-skew-detected","detail":"Synthetic conformance proved version-skew-detected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"revision-changed-after-recovery","detail":"Synthetic conformance proved revision-changed-after-recovery.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"diagnose-environment","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"missing-scope-reported","detail":"Synthetic conformance proved missing-scope-reported.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"narrow-grant-resumed","detail":"Synthetic conformance proved narrow-grant-resumed.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"expansion-reprompted","detail":"Synthetic conformance proved expansion-reprompted.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"denial-launched-nothing","detail":"Synthetic conformance proved denial-launched-nothing.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"acquire-authority","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"native-routed","detail":"Synthetic conformance proved native-routed.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"javascript-routed","detail":"Synthetic conformance proved javascript-routed.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"unknowns-preserved","detail":"Synthetic conformance proved unknowns-preserved.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"static-analysis","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"predicate-driven","detail":"Synthetic conformance proved predicate-driven.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"descendant-settled","detail":"Synthetic conformance proved descendant-settled.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"electron-correlated","detail":"Synthetic conformance proved electron-correlated.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"cancel-cleanup-preserved-evidence","detail":"Synthetic conformance proved cancel-cleanup-preserved-evidence.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"reactive-scenarios","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"partial-order-accepted","detail":"Synthetic conformance proved partial-order-accepted.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"divergence-localized","detail":"Synthetic conformance proved divergence-localized.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"incomplete-is-unknown","detail":"Synthetic conformance proved incomplete-is-unknown.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"compare-authority-candidate","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"record-and-continue","detail":"Synthetic conformance proved record-and-continue.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"affected-equivalence-blocked","detail":"Synthetic conformance proved affected-equivalence-blocked.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"unaffected-comparison-continued","detail":"Synthetic conformance proved unaffected-comparison-continued.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"preserve-contradictions","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"incomplete-detected","detail":"Synthetic conformance proved incomplete-detected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"incremental-verifier-closure","detail":"Synthetic conformance proved incremental-verifier-closure.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"delegation-rejected","detail":"Synthetic conformance proved delegation-rejected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"verify-reconstruction-closure","status":"pass"},{"capability_issue":null,"checks":[{"check_id":"cli-mcp-parity","detail":"Synthetic conformance proved cli-mcp-parity.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"failure-status-parity","detail":"Synthetic conformance proved failure-status-parity.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"deterministic-replay","detail":"Synthetic conformance proved deterministic-replay.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"tamper-detected","detail":"Synthetic conformance proved tamper-detected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"},{"check_id":"stale-input-detected","detail":"Synthetic conformance proved stale-input-detected.","evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"status":"pass"}],"evidence_ids":["ev_348db7991de053d7b032e8224d07368d0fdb33ee5794588276ba06bfe3a147c9"],"next_action":null,"required":true,"stage_id":"export-replay","status":"pass"}],"workflow_candidates":[{"compatibility":"compatible","fixture_id":"fixture.native","invoked":true,"provider_id":"provider.native","reason_code":"compatible-artifact-family","selected":true,"workflow_id":"workflow.native"},{"compatibility":"compatible","fixture_id":"fixture.javascript-cli","invoked":true,"provider_id":"provider.javascript-cli","reason_code":"compatible-artifact-family","selected":true,"workflow_id":"workflow.javascript-cli"},{"compatibility":"compatible","fixture_id":"fixture.electron","invoked":true,"provider_id":"provider.electron","reason_code":"compatible-artifact-family","selected":true,"workflow_id":"workflow.electron"},{"compatibility":"compatible","fixture_id":"fixture.incomplete-reconstruction","invoked":true,"provider_id":"provider.incomplete-reconstruction","reason_code":"compatible-artifact-family","selected":true,"workflow_id":"workflow.incomplete-reconstruction"},{"compatibility":"compatible","fixture_id":"fixture.broken-runtime","invoked":true,"provider_id":null,"reason_code":"compatible-artifact-family","selected":true,"workflow_id":"workflow.broken-runtime"}]}],"properties":{"capabilities":{"description":"Value for capabilities.","items":{"additionalProperties":false,"properties":{"authority_scopes":{"description":"Value for authority scopes.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"type":"array"},"available":{"description":"Value for available.","type":"boolean"},"bounded":{"description":"Value for bounded.","type":"boolean"},"capability_id":{"description":"Value for capability id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"limits":{"description":"Bounded resource-consumption and result-size limits for this operation.","items":{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"unit":{"description":"Value for unit.","enum":["count","bytes","milliseconds","ratio"],"type":"string"},"value":{"description":"Value for value.","minimum":0,"type":"number"}},"required":["name","value","unit"],"type":"object"},"maxItems":100,"type":"array"},"side_effect":{"description":"Value for side effect.","enum":["none","reads-target","launches-process","writes-workspace","network-observation"],"type":"string"},"unavailable_reason":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for unavailable reason."}},"required":["capability_id","available","bounded","side_effect","authority_scopes","limits","unavailable_reason"],"type":"object"},"maxItems":1000,"minItems":1,"type":"array"},"cleanup":{"description":"Value for cleanup.","items":{"additionalProperties":false,"properties":{"cancelled":{"description":"Value for cancelled.","type":"boolean"},"diagnostic_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the diagnostic observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"owned_resources_remaining":{"description":"Value for owned resources remaining.","maximum":9007199254740991,"minimum":0,"type":"integer"},"run_id":{"description":"Value for run id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["run_id","cancelled","owned_resources_remaining","diagnostic_evidence_ids"],"type":"object"},"maxItems":1000,"type":"array"},"client":{"additionalProperties":false,"description":"Value for client.","properties":{"name":{"description":"Exact name used by this operation.","maxLength":4096,"minLength":1,"type":"string"},"negotiated_capabilities":{"description":"Value for negotiated capabilities.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"type":"array"},"version":{"description":"Value for version.","maxLength":4096,"minLength":1,"type":"string"}},"required":["name","version","negotiated_capabilities"],"type":"object"},"closure_history":{"description":"Value for closure history.","items":{"additionalProperties":false,"properties":{"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"ledger_digest":{"description":"Value for ledger digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"newly_verified_obligation_ids":{"description":"Value for newly verified obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"type":"array"},"required_open":{"description":"Value for required open.","maximum":9007199254740991,"minimum":0,"type":"integer"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["ready","open","failed","unknown"],"type":"string"}},"required":["sequence","ledger_digest","status","required_open","newly_verified_obligation_ids","evidence_ids"],"type":"object"},"maxItems":1000,"minItems":2,"type":"array"},"comparisons":{"description":"Validated comparison Evidence records to aggregate.","items":{"additionalProperties":false,"properties":{"comparison_id":{"description":"Value for comparison id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"concurrent":{"description":"Value for concurrent.","type":"boolean"},"contradiction_ids":{"description":"Value for contradiction ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"type":"array"},"deliberate_divergence_ref":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for deliberate divergence ref."},"divergence_refs":{"description":"Value for divergence refs.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"schedule_semantics":{"description":"Value for schedule semantics.","enum":["total-order","partial-order","finite-traces"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"},"unavailable_authority":{"description":"Value for unavailable authority.","type":"boolean"},"unstable":{"description":"Value for unstable.","type":"boolean"},"verdict":{"description":"Value for verdict.","enum":["equivalent","different","unknown"],"type":"string"}},"required":["comparison_id","verdict","schedule_semantics","concurrent","truncated","unavailable_authority","unstable","deliberate_divergence_ref","divergence_refs","contradiction_ids","evidence_ids"],"type":"object"},"maxItems":1000,"type":"array"},"contradictions":{"description":"Value for contradictions.","items":{"additionalProperties":false,"properties":{"affected_comparison_ids":{"description":"Value for affected comparison ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"contradiction_id":{"description":"Value for contradiction id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"declared_sha256":{"description":"Exact SHA-256 digest of declared.","pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":2,"type":"array"},"observed_sha256":{"description":"Exact SHA-256 digest of observed.","pattern":"^[a-f0-9]{64}$","type":"string"},"policy":{"const":"record-and-continue","description":"Value for policy.","type":"string"}},"required":["contradiction_id","declared_sha256","observed_sha256","policy","affected_comparison_ids","evidence_ids"],"type":"object"},"maxItems":1000,"type":"array"},"delegation_checks":{"description":"Value for delegation checks.","items":{"additionalProperties":false,"properties":{"candidate_id":{"description":"Value for candidate id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"delegates_to_authority":{"description":"Value for delegates to authority.","type":"boolean"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"}},"required":["candidate_id","delegates_to_authority","evidence_ids"],"type":"object"},"maxItems":1000,"minItems":1,"type":"array"},"evidence_bundle":{"description":"Value for evidence bundle.","properties":{"artifacts":{"description":"Value for artifacts.","items":{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"}},"required":["digest","format","architecture"],"type":"object"},"type":"array"},"bundle_version":{"const":2,"description":"Value for bundle version.","type":"number"},"captures":{"description":"Value for captures.","items":{"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"}},"required":["evidence_id","predicate_type"],"type":"object"},"type":"array"},"environments":{"description":"Value for environments.","items":{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},"type":"array"},"providers":{"description":"Value for providers.","items":{"properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"type":"array"},"records":{"description":"Value for records.","items":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]},"type":"array"},"scenarios":{"description":"Value for scenarios.","items":{"properties":{"authority":{"const":"controlled-replay","description":"Value for authority.","type":"string"},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"operation":{"description":"Value for operation.","minLength":1,"type":"string"}},"required":["evidence_id","operation","authority"],"type":"object"},"type":"array"},"unknowns":{"description":"Value for unknowns.","items":{"properties":{"contradicting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the contradicting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"description":"Value for domain.","maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the mutation observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for previous revision digest."},"question":{"description":"Concrete unresolved question to retain for later investigation.","maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"description":"Value for recommended probes.","items":{"properties":{"operation":{"description":"Value for operation.","maxLength":200,"minLength":1,"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"description":"Value for registry version.","type":"number"},"relationships":{"description":"Value for relationships.","items":{"properties":{"type":{"description":"Value for type.","enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}],"description":"Value for required authority."},"required_confidence":{"description":"Value for required confidence.","enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for architecture."},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for id."},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}],"description":"Value for isolation."},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for platform."}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for required environment."},"resolution":{"anyOf":[{"oneOf":[{"properties":{"disposition":{"const":"verified","description":"Value for disposition.","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"properties":{"disposition":{"description":"Value for disposition.","enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}],"description":"Value for resolution."},"revision":{"description":"Value for revision.","maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"description":"Value for revision digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for scope digest."},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the supporting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"},"type":"array"}},"required":["bundle_version","artifacts","providers","environments","scenarios","captures","unknowns","records"],"type":"object"},"fixtures":{"description":"Value for fixtures.","items":{"additionalProperties":false,"properties":{"artifact_sha256":{"description":"Exact SHA-256 digest of artifact.","pattern":"^[a-f0-9]{64}$","type":"string"},"deliberate_faults":{"description":"Value for deliberate faults.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"environment_id":{"description":"Value for environment id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"fixture_id":{"description":"Value for fixture id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"kind":{"description":"Value for kind.","enum":["native","javascript-cli","electron","incomplete-reconstruction","broken-runtime"],"type":"string"}},"required":["fixture_id","kind","artifact_sha256","environment_id","deliberate_faults"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"},"grants":{"description":"Value for grants.","items":{"additionalProperties":false,"properties":{"decision":{"description":"Value for decision.","enum":["granted","denied","cancelled","restart-required"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"grant_id":{"description":"Value for grant id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"launched_process":{"description":"Value for launched process.","type":"boolean"},"scope":{"description":"Value for scope.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["grant_id","scope","decision","launched_process","evidence_ids"],"type":"object"},"maxItems":1000,"type":"array"},"identity":{"additionalProperties":false,"description":"Value for identity.","properties":{"catalog_digest":{"description":"Value for catalog digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"cli_version":{"description":"Value for cli version.","maxLength":4096,"minLength":1,"type":"string"},"providers":{"description":"Value for providers.","items":{"additionalProperties":false,"properties":{"digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for digest."},"provider_id":{"description":"Exact deep-analysis provider ID, or automatic selection when omitted.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"reason_code":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},{"type":"null"}],"description":"Value for reason code."},"state":{"description":"Value for state.","enum":["available","unavailable","incompatible","broken-host"],"type":"string"},"version":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["provider_id","version","digest","state","reason_code"],"type":"object"},"maxItems":100,"type":"array"},"server_version":{"description":"Value for server version.","maxLength":4096,"minLength":1,"type":"string"},"skill_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for skill digest."},"versions":{"description":"Value for versions.","items":{"additionalProperties":false,"properties":{"component":{"description":"Value for component.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for digest."},"remediation":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for remediation."},"state":{"description":"Value for state.","enum":["current","stale","unavailable"],"type":"string"},"version":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["component","version","digest","state","remediation"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"}},"required":["cli_version","server_version","catalog_digest","skill_digest","versions","providers"],"type":"object"},"obligation_ledger":{"additionalProperties":false,"description":"Value for obligation ledger.","properties":{"closure_digest":{"description":"Value for closure digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"coverage":{"additionalProperties":false,"description":"Exact reconstruction-coverage commitment to verify.","properties":{"max_obligations":{"description":"Maximum permitted obligations for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"omitted_count":{"description":"Value for omitted count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["complete","partial"],"type":"string"},"truncated":{"description":"Value for truncated.","type":"boolean"}},"required":["status","truncated","omitted_count","max_obligations"],"type":"object"},"dependency_graph":{"description":"Value for dependency graph.","items":{"additionalProperties":false,"properties":{"depends_on_obligation_id":{"description":"Value for depends on obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["obligation_id","depends_on_obligation_id"],"type":"object"},"type":"array"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100000,"type":"array"},"ledger_id":{"description":"Value for ledger id.","pattern":"^rol_[a-f0-9]{64}$","type":"string"},"limitations":{"description":"Value for limitations.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":1000,"type":"array"},"obligations":{"description":"Value for obligations.","items":{"additionalProperties":false,"properties":{"application_layer":{"description":"Value for application layer.","enum":["cli","protocol","electron","persistence","process","runtime","packaging","native-abi","application","other"],"type":"string"},"authority_references":{"description":"Value for authority references.","items":{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"},"state":{"description":"Value for state.","enum":["candidate","observed","reviewed","unknown"],"type":"string"}},"required":["evidence_id","authority","state","location"],"type":"object"},"maxItems":1000,"minItems":1,"type":"array"},"binding":{"anyOf":[{"additionalProperties":false,"properties":{"fixtures":{"description":"Value for fixtures.","items":{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"case_kind":{"description":"Value for case kind.","enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"fixture_id":{"description":"Value for fixture id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["fixture_id","case_kind","authority","evidence_ids"],"type":"object"},"maxItems":100,"type":"array"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"original_cases":{"description":"Value for original cases.","items":{"additionalProperties":false,"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"description":"Value for kind.","enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","evidence_id","location"],"type":"object"},"maxItems":100,"type":"array"},"owner":{"additionalProperties":false,"description":"Value for owner.","properties":{"module_path":{"description":"Local filesystem path for module.","maxLength":4096,"minLength":1,"type":"string"},"owner_sha256":{"description":"Exact SHA-256 digest of owner.","pattern":"^[a-f0-9]{64}$","type":"string"},"symbol":{"description":"Value for symbol.","maxLength":1024,"minLength":1,"type":"string"}},"required":["module_path","symbol","owner_sha256"],"type":"object"},"parser_type":{"anyOf":[{"additionalProperties":false,"properties":{"domain_type":{"description":"Value for domain type.","maxLength":4096,"minLength":1,"type":"string"},"parser":{"description":"Value for parser.","maxLength":4096,"minLength":1,"type":"string"},"schema":{"description":"Value for schema.","maxLength":4096,"minLength":1,"type":"string"}},"required":["parser","schema","domain_type"],"type":"object"},{"type":"null"}],"description":"Value for parser type."},"verifier":{"anyOf":[{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"command":{"description":"Value for command.","maxLength":4096,"minLength":1,"type":"string"},"enumerated_obligation_ids":{"description":"Value for enumerated obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"nondeterminism":{"additionalProperties":false,"description":"Value for nondeterminism.","properties":{"mode":{"description":"Operation mode that selects the requested behavior.","enum":["total-order","partial-order","finite-traces"],"type":"string"},"specification":{"description":"Value for specification.","maxLength":4096,"minLength":1,"type":"string"}},"required":["mode","specification"],"type":"object"},"result_evidence_id":{"description":"Exact Evidence v2 identifier for the result observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","skipped"],"type":"string"},"verifier_id":{"description":"Value for verifier id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["verifier_id","claim_id","command","authority","status","result_evidence_id","enumerated_obligation_ids","nondeterminism"],"type":"object"},{"type":"null"}],"description":"Value for verifier."}},"required":["obligation_id","owner","parser_type","original_cases","fixtures","verifier"],"type":"object"},{"type":"null"}],"description":"Value for binding."},"dependency_obligation_ids":{"description":"Value for dependency obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"diagnostics":{"description":"Value for diagnostics.","items":{"additionalProperties":false,"properties":{"code":{"description":"Value for code.","enum":["duplicate-definition","missing-owner","ambiguous-owner","missing-parser-type","missing-original-case","weak-original-case-authority","missing-case","weak-fixture-authority","missing-verifier","verifier-does-not-enumerate","missing-verifier-result","weak-verifier-authority","verifier-failed","static-only","contradiction","contradiction-evidence-missing","residual-unknown","dependency-missing","dependency-open","unavailable-authority","blocked","out-of-scope"],"type":"string"},"detail":{"description":"Requested response detail level.","maxLength":4096,"minLength":1,"type":"string"}},"required":["code","detail"],"type":"object"},"maxItems":1000,"type":"array"},"family":{"description":"Value for family.","maxLength":100,"minLength":1,"type":"string"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"obligation_version":{"description":"Value for obligation version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_cases":{"description":"Value for observed cases.","items":{"additionalProperties":false,"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"kind":{"description":"Value for kind.","enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","evidence_id","location"],"type":"object"},"maxItems":100,"type":"array"},"origin":{"description":"Value for origin.","enum":["generated","reviewed"],"type":"string"},"required":{"description":"Value for required.","type":"boolean"},"required_case_kinds":{"description":"Value for required case kinds.","items":{"enum":["positive","negative","malformed","cancellation","teardown"],"type":"string"},"maxItems":5,"minItems":1,"type":"array"},"required_fixture_authority":{"description":"Value for required fixture authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"required_next_evidence":{"description":"Value for required next evidence.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"},"required_original_authority":{"description":"Value for required original authority.","enum":["static","runtime","process","external"],"type":"string"},"required_verifier_authority":{"description":"Value for required verifier authority.","enum":["unit","integration","protocol","renderer","packaged-process","native-abi","live-observation","external"],"type":"string"},"requires_parser_type":{"description":"Value for requires parser type.","type":"boolean"},"residual_unknown_ids":{"description":"Value for residual unknown ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"source_state":{"description":"Value for source state.","enum":["candidate","observed","reviewed","unknown"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["unowned","characterized","implemented","verified","contradicted","blocked","out-of-scope","unknown"],"type":"string"},"target":{"additionalProperties":false,"description":"Value for target.","properties":{"application_node_id":{"anyOf":[{"pattern":"^jag_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for application node id."},"artifact_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of artifact."},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"},"semantic_node_id":{"anyOf":[{"pattern":"^jsrg_node_[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for semantic node id."}},"required":["artifact_sha256","application_node_id","semantic_node_id","location"],"type":"object"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"},"unavailable_authority":{"description":"Value for unavailable authority.","items":{"maxLength":4096,"minLength":1,"type":"string"},"maxItems":100,"type":"array"}},"required":["obligation_id","obligation_version","title","origin","application_layer","family","target","authority_references","source_state","observed_cases","required","required_case_kinds","required_original_authority","required_fixture_authority","required_verifier_authority","requires_parser_type","dependency_obligation_ids","residual_unknown_ids","unavailable_authority","required_next_evidence","binding","status","diagnostics"],"type":"object"},"maxItems":10000,"type":"array"},"ownership_graph":{"description":"Value for ownership graph.","items":{"additionalProperties":false,"properties":{"module_path":{"description":"Local filesystem path for module.","maxLength":4096,"minLength":1,"type":"string"},"obligation_id":{"description":"Value for obligation id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"symbol":{"description":"Value for symbol.","maxLength":1024,"minLength":1,"type":"string"}},"required":["obligation_id","module_path","symbol"],"type":"object"},"type":"array"},"reports":{"additionalProperties":false,"description":"Value for reports.","properties":{"contradicted_obligation_ids":{"description":"Value for contradicted obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"missing_owner_obligation_ids":{"description":"Value for missing owner obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"missing_verifier_obligation_ids":{"description":"Value for missing verifier obligation ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"},"residual_unknown_ids":{"description":"Value for residual unknown ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"type":"array"}},"required":["missing_owner_obligation_ids","missing_verifier_obligation_ids","contradicted_obligation_ids","residual_unknown_ids"],"type":"object"},"schema":{"const":"ReconstructionObligationLedger","description":"Value for schema.","type":"string"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"status":{"description":"Current lifecycle or verification status.","enum":["ready","open","failed","unknown"],"type":"string"},"summary":{"additionalProperties":false,"description":"Concise evidence-backed summary of the result.","properties":{"by_application_layer":{"description":"Value for by application layer.","items":{"additionalProperties":false,"properties":{"count":{"description":"Value for count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"description":"Value for key.","enum":["cli","protocol","electron","persistence","process","runtime","packaging","native-abi","application","other"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"by_evidence_authority":{"description":"Value for by evidence authority.","items":{"additionalProperties":false,"properties":{"count":{"description":"Value for count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"description":"Value for key.","enum":["candidate","observed","reviewed","unknown"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"by_status":{"description":"Value for by status.","items":{"additionalProperties":false,"properties":{"count":{"description":"Value for count.","maximum":9007199254740991,"minimum":0,"type":"integer"},"key":{"description":"Value for key.","enum":["unowned","characterized","implemented","verified","contradicted","blocked","out-of-scope","unknown"],"type":"string"}},"required":["key","count"],"type":"object"},"type":"array"},"required":{"description":"Value for required.","maximum":9007199254740991,"minimum":0,"type":"integer"},"required_open":{"description":"Value for required open.","maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"description":"Value for total.","maximum":9007199254740991,"minimum":0,"type":"integer"},"verified":{"description":"Value for verified.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","required","verified","required_open","by_status","by_application_layer","by_evidence_authority"],"type":"object"}},"required":["schema","schema_version","ledger_id","closure_digest","status","coverage","summary","reports","ownership_graph","dependency_graph","obligations","evidence_links","limitations"],"type":"object"},"operation_outcomes":{"description":"Value for operation outcomes.","items":{"additionalProperties":false,"properties":{"call_kind":{"description":"Value for call kind.","enum":["valid","malformed","over-limit","incompatible-provider","setup","permission","operation"],"type":"string"},"cli_exit_code":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Value for cli exit code."},"error_code":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},{"type":"null"}],"description":"Value for error code."},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"expected_success":{"description":"Expected success used to reject stale or mismatched input.","type":"boolean"},"mcp_status":{"anyOf":[{"enum":["success","non-success"],"type":"string"},{"type":"null"}],"description":"Value for mcp status."},"operation":{"description":"Value for operation.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"recovered":{"description":"Value for recovered.","type":"boolean"},"sequence":{"description":"Value for sequence.","maximum":9007199254740991,"minimum":0,"type":"integer"},"surface":{"description":"Value for surface.","enum":["cli","mcp"],"type":"string"}},"required":["sequence","operation","surface","call_kind","expected_success","cli_exit_code","mcp_status","error_code","recovered","evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"},"replay":{"additionalProperties":false,"description":"Value for replay.","properties":{"deterministic":{"description":"Value for deterministic.","type":"boolean"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"expected_source_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Expected source digest used to reject stale or mismatched input."},"stale_input_detected":{"description":"Value for stale input detected.","type":"boolean"},"tamper_detected":{"description":"Value for tamper detected.","type":"boolean"}},"required":["expected_source_digest","deterministic","tamper_detected","stale_input_detected","evidence_ids"],"type":"object"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"stages":{"description":"Value for stages.","items":{"additionalProperties":false,"properties":{"capability_issue":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},{"type":"null"}],"description":"Value for capability issue."},"checks":{"description":"Value for checks.","items":{"additionalProperties":false,"properties":{"check_id":{"description":"Value for check id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"detail":{"description":"Requested response detail level.","maxLength":4096,"minLength":1,"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","truncated","skipped"],"type":"string"}},"required":["check_id","status","detail","evidence_ids"],"type":"object"},"maxItems":100,"type":"array"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"next_action":{"anyOf":[{"maxLength":4096,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for next action."},"required":{"description":"Value for required.","type":"boolean"},"stage_id":{"description":"Value for stage id.","enum":["discover-classify","diagnose-environment","acquire-authority","static-analysis","reactive-scenarios","compare-authority-candidate","preserve-contradictions","verify-reconstruction-closure","export-replay"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","truncated","skipped"],"type":"string"}},"required":["stage_id","required","status","capability_issue","next_action","evidence_ids","checks"],"type":"object"},"maxItems":9,"minItems":9,"type":"array"},"workflow_candidates":{"description":"Value for workflow candidates.","items":{"additionalProperties":false,"properties":{"compatibility":{"description":"Value for compatibility.","enum":["compatible","incompatible","unavailable"],"type":"string"},"fixture_id":{"description":"Value for fixture id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"invoked":{"description":"Value for invoked.","type":"boolean"},"provider_id":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},{"type":"null"}],"description":"Exact deep-analysis provider ID, or automatic selection when omitted."},"reason_code":{"description":"Value for reason code.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"selected":{"description":"Value for selected.","type":"boolean"},"workflow_id":{"description":"Value for workflow id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["fixture_id","workflow_id","provider_id","selected","invoked","compatibility","reason_code"],"type":"object"},"maxItems":1000,"minItems":1,"type":"array"}},"required":["schema_version","identity","client","capabilities","fixtures","workflow_candidates","grants","evidence_bundle","comparisons","contradictions","obligation_ledger","operation_outcomes","cleanup","closure_history","delegation_checks","replay","stages"],"type":"object"},"kind":"application","name":"evaluate_reconstruction_readiness","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"metrics":{"additionalProperties":false,"properties":{"cleanup_leak_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"divergence_localization_precision":{"maximum":1,"minimum":0,"type":"number"},"failed_calls_before_prerequisites":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"false_equivalence_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"first_valid_workflow_selection_rate":{"maximum":1,"minimum":0,"type":"number"},"incompatible_provider_invocations":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"malformed_or_over_limit_call_rate":{"maximum":1,"minimum":0,"type":"number"},"nondeterministic_replay_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"recovery_rate":{"maximum":1,"minimum":0,"type":"number"},"unowned_obligation_count":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["first_valid_workflow_selection_rate","malformed_or_over_limit_call_rate","incompatible_provider_invocations","failed_calls_before_prerequisites","recovery_rate","divergence_localization_precision","false_equivalence_count","unowned_obligation_count","cleanup_leak_count","nondeterministic_replay_count"],"type":"object"},"report_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"report_id":{"pattern":"^rr_[a-f0-9]{64}$","type":"string"},"report_resource_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}\\\\/reconstruction-readiness-report$","type":"string"},"schema":{"const":"ReconstructionReadinessReport","type":"string"},"schema_version":{"const":1,"type":"number"},"source_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"status":{"enum":["pass","fail","unknown","unsupported","truncated","skipped"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"failed_findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"passed_required_stages":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"required_stages":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"stages":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_findings":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["stages","required_stages","passed_required_stages","findings","failed_findings","unknown_findings"],"type":"object"}},"required":["schema","schema_version","report_id","source_digest","report_digest","status","summary","metrics","report_resource_uri"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":false,"title":"Evaluate Reconstruction Readiness"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Atomically commit one canonical evidence-backed reconstruction coverage workspace revision under an approved root. CAS revisions reject lost updates; every Evidence and residual-unknown reference must resolve in the embedded canonical bundle.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"approved":true,"expected_revision":null,"workspace":{"artifacts":[],"boundaries":[],"claims":[],"contradictions":[],"evidence_bundle":{"artifacts":[],"bundle_version":2,"captures":[],"environments":[],"providers":[],"records":[],"scenarios":[],"unknowns":[]},"name":"replacement","owners":[],"package_proofs":[],"previous_revision_sha256":null,"residual_unknown_ids":[],"revision":1,"revision_sha256":"0000000000000000000000000000000000000000000000000000000000000000","schema_version":1,"surfaces":[],"verifier_contracts":[],"verifier_results":[],"workspace_id":"rcw_0000000000000000000000000000000000000000000000000000000000000000"},"workspace_path":"/approved/coverage.json"}],"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"expected_revision":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}],"description":"Expected revision used to reject stale or mismatched input."},"workspace":{"additionalProperties":false,"description":"Value for workspace.","properties":{"artifacts":{"description":"Value for artifacts.","items":{"additionalProperties":false,"properties":{"artifact_id":{"description":"Value for artifact id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"artifact_sha256":{"description":"Exact SHA-256 digest of artifact.","pattern":"^[a-f0-9]{64}$","type":"string"},"environment_sha256":{"description":"Exact SHA-256 digest of environment.","pattern":"^[a-f0-9]{64}$","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"version":{"description":"Value for version.","maxLength":500,"minLength":1,"type":"string"}},"required":["artifact_id","artifact_sha256","version","environment_sha256","evidence_ids"],"type":"object"},"maxItems":1000,"type":"array"},"boundaries":{"description":"Value for boundaries.","items":{"additionalProperties":false,"properties":{"allowed_dispositions":{"description":"Value for allowed dispositions.","items":{"enum":["external","non-goal"],"type":"string"},"maxItems":2,"type":"array"},"allowed_unknown_ids":{"description":"Value for allowed unknown ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"boundary_id":{"description":"Exact reconstruction boundary identifier to evaluate.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"required_claim_ids":{"description":"Value for required claim ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"required_package_proof_kinds":{"description":"Value for required package proof kinds.","items":{"enum":["build","clean-install","package-contents","runtime-routing","authority-independence"],"type":"string"},"maxItems":5,"minItems":1,"type":"array"},"required_surface_ids":{"description":"Value for required surface ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"minItems":1,"type":"array"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"}},"required":["boundary_id","title","required_surface_ids","required_claim_ids","required_package_proof_kinds","allowed_dispositions","allowed_unknown_ids"],"type":"object"},"maxItems":1000,"type":"array"},"claims":{"description":"Value for claims.","items":{"additionalProperties":false,"properties":{"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"kind":{"description":"Value for kind.","maxLength":100,"minLength":1,"type":"string"},"required_authority":{"description":"Value for required authority.","enum":["shipped-artifact","controlled-replay","live-observation","external"],"type":"string"},"required_dimensions":{"description":"Value for required dimensions.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"surface_ids":{"description":"Value for surface ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"}},"required":["claim_id","title","kind","surface_ids","required_dimensions","required_authority"],"type":"object"},"maxItems":10000,"type":"array"},"contradictions":{"description":"Value for contradictions.","items":{"additionalProperties":false,"properties":{"claim_ids":{"description":"Value for claim ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"contradiction_id":{"description":"Value for contradiction id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":2,"type":"array"},"status":{"description":"Current lifecycle or verification status.","enum":["active","resolved"],"type":"string"},"surface_ids":{"description":"Value for surface ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"}},"required":["contradiction_id","status","surface_ids","claim_ids","evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"},"evidence_bundle":{"description":"Value for evidence bundle.","properties":{"artifacts":{"description":"Value for artifacts.","items":{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"}},"required":["digest","format","architecture"],"type":"object"},"type":"array"},"bundle_version":{"const":2,"description":"Value for bundle version.","type":"number"},"captures":{"description":"Value for captures.","items":{"properties":{"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"}},"required":["evidence_id","predicate_type"],"type":"object"},"type":"array"},"environments":{"description":"Value for environments.","items":{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},"type":"array"},"providers":{"description":"Value for providers.","items":{"properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"type":"array"},"records":{"description":"Value for records.","items":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links","analysis_profile"],"type":"object"},{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"}]},"type":"array"},"scenarios":{"description":"Value for scenarios.","items":{"properties":{"authority":{"const":"controlled-replay","description":"Value for authority.","type":"string"},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"operation":{"description":"Value for operation.","minLength":1,"type":"string"}},"required":["evidence_id","operation","authority"],"type":"object"},"type":"array"},"unknowns":{"description":"Value for unknowns.","items":{"properties":{"contradicting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the contradicting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"description":"Value for domain.","maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the mutation observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for previous revision digest."},"question":{"description":"Concrete unresolved question to retain for later investigation.","maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"description":"Value for recommended probes.","items":{"properties":{"operation":{"description":"Value for operation.","maxLength":200,"minLength":1,"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"description":"Value for registry version.","type":"number"},"relationships":{"description":"Value for relationships.","items":{"properties":{"type":{"description":"Value for type.","enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}],"description":"Value for required authority."},"required_confidence":{"description":"Value for required confidence.","enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for architecture."},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for id."},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}],"description":"Value for isolation."},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for platform."}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for required environment."},"resolution":{"anyOf":[{"oneOf":[{"properties":{"disposition":{"const":"verified","description":"Value for disposition.","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"properties":{"disposition":{"description":"Value for disposition.","enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}],"description":"Value for resolution."},"revision":{"description":"Value for revision.","maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"description":"Value for revision digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Value for scope digest."},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the supporting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"},"type":"array"}},"required":["bundle_version","artifacts","providers","environments","scenarios","captures","unknowns","records"],"type":"object"},"name":{"description":"Exact name used by this operation.","maxLength":200,"minLength":1,"type":"string"},"owners":{"description":"Value for owners.","items":{"additionalProperties":false,"properties":{"ownership":{"description":"Value for ownership.","oneOf":[{"additionalProperties":false,"properties":{"authority_route":{"description":"Value for authority route.","enum":["none","detected","unknown"],"type":"string"},"disposition":{"const":"implemented","description":"Value for disposition.","type":"string"},"owner_export":{"anyOf":[{"maxLength":500,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for owner export."},"owner_path":{"description":"Local filesystem path for owner.","maxLength":4096,"minLength":1,"type":"string"},"owner_sha256":{"description":"Exact SHA-256 digest of owner.","pattern":"^[a-f0-9]{64}$","type":"string"},"package_state":{"description":"Value for package state.","enum":["distributed","missing","unknown"],"type":"string"},"path_state":{"description":"Value for path state.","enum":["present","missing","unknown"],"type":"string"}},"required":["disposition","owner_path","owner_export","owner_sha256","path_state","package_state","authority_route"],"type":"object"},{"additionalProperties":false,"properties":{"disposition":{"description":"Value for disposition.","enum":["external","non-goal"],"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":4096,"minLength":1,"type":"string"}},"required":["disposition","rationale"],"type":"object"}]},"surface_id":{"description":"Value for surface id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["surface_id","ownership"],"type":"object"},"maxItems":10000,"type":"array"},"package_proofs":{"description":"Value for package proofs.","items":{"additionalProperties":false,"properties":{"artifact_sha256s":{"description":"Value for artifact sha256s.","items":{"pattern":"^[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"kind":{"description":"Value for kind.","enum":["build","clean-install","package-contents","runtime-routing","authority-independence"],"type":"string"},"proof_id":{"description":"Value for proof id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","skipped"],"type":"string"}},"required":["proof_id","kind","status","artifact_sha256s","evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"},"previous_revision_sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}],"description":"Exact SHA-256 digest of previous revision."},"residual_unknown_ids":{"description":"Value for residual unknown ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":10000,"type":"array"},"revision":{"description":"Value for revision.","maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_sha256":{"description":"Exact SHA-256 digest of revision.","pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"},"surfaces":{"description":"Value for surfaces.","items":{"additionalProperties":false,"properties":{"artifact_id":{"description":"Value for artifact id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"authority":{"description":"Value for authority.","enum":["observed","derived","inferred","historical","external"],"type":"string"},"dependency_surface_ids":{"description":"Value for dependency surface ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"type":"array"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"family":{"description":"Value for family.","maxLength":100,"minLength":1,"type":"string"},"location":{"description":"Value for location.","maxLength":4096,"minLength":1,"type":"string"},"occurrence_id":{"anyOf":[{"maxLength":500,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for occurrence id."},"surface_id":{"description":"Value for surface id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["surface_id","family","artifact_id","occurrence_id","location","authority","dependency_surface_ids","evidence_ids"],"type":"object"},"maxItems":10000,"type":"array"},"verifier_contracts":{"description":"Value for verifier contracts.","items":{"additionalProperties":false,"properties":{"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","live-observation","external"],"type":"string"},"claim_ids":{"description":"Value for claim ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"contract_sha256":{"description":"Exact SHA-256 digest of contract.","pattern":"^[a-f0-9]{64}$","type":"string"},"dimensions":{"description":"Value for dimensions.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"max_age_ms":{"description":"Maximum permitted age ms for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"minimum_repeats":{"description":"Value for minimum repeats.","maximum":1000,"minimum":1,"type":"integer"},"normalization_removes_dimensions":{"const":false,"description":"Value for normalization removes dimensions.","type":"boolean"},"normalization_sha256":{"description":"Exact SHA-256 digest of normalization.","pattern":"^[a-f0-9]{64}$","type":"string"},"verifier_id":{"description":"Value for verifier id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["verifier_id","claim_ids","dimensions","authority","max_age_ms","minimum_repeats","normalization_sha256","normalization_removes_dimensions","contract_sha256"],"type":"object"},"maxItems":10000,"type":"array"},"verifier_results":{"description":"Value for verifier results.","items":{"additionalProperties":false,"properties":{"artifact_sha256s":{"description":"Value for artifact sha256s.","items":{"pattern":"^[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"contract_sha256":{"description":"Exact SHA-256 digest of contract.","pattern":"^[a-f0-9]{64}$","type":"string"},"covered_claim_ids":{"description":"Value for covered claim ids.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"covered_dimensions":{"description":"Value for covered dimensions.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":1000,"minItems":1,"type":"array"},"normalization_sha256":{"description":"Exact SHA-256 digest of normalization.","pattern":"^[a-f0-9]{64}$","type":"string"},"observed_at":{"description":"Value for observed at.","format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z|([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)))$","type":"string"},"owner_sha256s":{"description":"Value for owner sha256s.","items":{"pattern":"^[a-f0-9]{64}$","type":"string"},"maxItems":1000,"type":"array"},"repeats":{"description":"Value for repeats.","maximum":1000,"minimum":1,"type":"integer"},"status":{"description":"Current lifecycle or verification status.","enum":["pass","fail","unknown","unsupported","truncated","skipped"],"type":"string"},"verifier_id":{"description":"Value for verifier id.","pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["verifier_id","contract_sha256","observed_at","status","covered_claim_ids","covered_dimensions","artifact_sha256s","owner_sha256s","normalization_sha256","repeats","evidence_ids"],"type":"object"},"maxItems":100000,"type":"array"},"workspace_id":{"description":"Value for workspace id.","pattern":"^rcw_[a-f0-9]{64}$","type":"string"}},"required":["schema_version","workspace_id","name","revision","previous_revision_sha256","evidence_bundle","artifacts","surfaces","owners","claims","verifier_contracts","verifier_results","residual_unknown_ids","contradictions","package_proofs","boundaries","revision_sha256"],"type":"object"},"workspace_path":{"description":"Approved local path of the persistent investigation workspace.","maxLength":4096,"minLength":1,"type":"string"}},"required":["approved","workspace_path","expected_revision","workspace"],"type":"object"},"kind":"application","name":"commit_reconstruction_coverage","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"evidence_records":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"workspace_id":{"pattern":"^rcw_[a-f0-9]{64}$","type":"string"},"workspace_path":{"type":"string"}},"required":["workspace_path","bytes","workspace_id","revision","revision_sha256","evidence_records"],"type":"object"},"requiresSession":false,"title":"Commit Reconstruction Coverage"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Evaluate one named reconstruction boundary from a canonical coverage workspace. Missing ownership or inventory is partial; stale, weak, truncated, skipped, or unresolved proof is unknown; contradictions, failed proof, missing owners, and authority routing fail closed.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"boundary_id":"replacement.cli","workspace_path":"/approved/coverage.json"}],"properties":{"boundary_id":{"description":"Exact reconstruction boundary identifier to evaluate.","maxLength":200,"minLength":1,"type":"string"},"workspace_path":{"description":"Approved local path of the persistent investigation workspace.","maxLength":4096,"minLength":1,"type":"string"}},"required":["workspace_path","boundary_id"],"type":"object"},"kind":"application","name":"query_reconstruction_coverage","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"boundary_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100000,"type":"array"},"reasons":{"items":{"additionalProperties":false,"properties":{"code":{"enum":["surface-missing","owner-missing","owner-duplicate","owner-path-missing","owner-path-unknown","owner-undistributed","owner-distribution-unknown","authority-routing-detected","authority-routing-unknown","disposition-not-allowed","dependency-surface-missing","claim-missing","verifier-missing","verifier-duplicate","verifier-result-missing","verifier-result-stale","verifier-result-incompatible","verifier-failed","verifier-unknown","active-unknown","active-contradiction","package-proof-missing","package-proof-failed","package-proof-unknown"],"type":"string"},"detail":{"maxLength":4096,"minLength":1,"type":"string"},"subject_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["code","subject_id","detail"],"type":"object"},"maxItems":100000,"type":"array"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"operation":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"},"rationale":{"maxLength":4096,"minLength":1,"type":"string"},"subject_id":{"pattern":"^[A-Za-z][A-Za-z0-9._:/-]{0,199}$","type":"string"}},"required":["operation","subject_id","rationale"],"type":"object"},"maxItems":100000,"type":"array"},"status":{"enum":["partial","failed","unknown","ready"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"reasons":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"required_claims":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"required_surfaces":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["required_surfaces","required_claims","reasons"],"type":"object"},"workspace_revision_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["boundary_id","status","workspace_revision_sha256","summary","reasons","recommended_probes","evidence_ids"],"type":"object"},"requiresSession":false,"title":"Query Reconstruction Coverage"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false},"description":"Open a local executable, application bundle, archive, JavaScript, source map, plist, or analysis database after validation. provider_id selects one deep provider or deterministic auto selection; the binding remains stable until close or an explicit switch, with no failure fallback. An optional snapshot v2 is imported atomically and must match the binary identity, concrete provider, and canonical analysis profile exactly.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"path":"/tmp/fixture"}],"properties":{"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"},"provider_id":{"anyOf":[{"const":"auto","type":"string"},{"maxLength":64,"minLength":1,"pattern":"^[a-z][a-z0-9-]*$","type":"string"}],"description":"Exact deep-analysis provider ID, or automatic selection when omitted."},"snapshot_path":{"description":"Local filesystem path for snapshot.","minLength":1,"type":"string"}},"required":["path"],"type":"object"},"kind":"session","name":"open_binary","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map"],"type":"string"},"kind":{"enum":["executable","database","archive","artifact"],"type":"string"},"loaderArgs":{"items":{"type":"string"},"type":"array"},"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","format","kind","loaderArgs","sha256","architecture"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Open Binary"},{"analysisOperation":null,"annotations":{"destructiveHint":true,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Optionally write a provider-neutral analysis snapshot atomically, then close the active target and every provider resource started for it. Snapshot files require an operator-approved root and explicit overwrite; a failed save leaves the session open so cached analysis is not lost.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":true,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"overwrite":false}],"properties":{"overwrite":{"default":false,"description":"Whether an existing destination may be replaced.","type":"boolean"},"snapshot_path":{"description":"Local filesystem path for snapshot.","minLength":1,"type":"string"}},"type":"object"},"kind":"session","name":"close_binary","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"anyOf":[{"type":"null"},{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"entries":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"}},"required":["path","bytes","entries"],"type":"object"}]}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Close Binary"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Report compact target, provider, and alignment state without starting analysis. The default summary is the routing check agents should use; detail=capabilities returns one family-filtered availability page, while detail=full is reserved for complete provider diagnostics.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":false,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"cursor":0,"detail":"summary","limit":25}],"properties":{"capability_family":{"description":"Optional tool family for detail=capabilities","enum":["official-proxy","enhanced","native-provider","artifact-provider","managed-provider","browser-provider","electron-provider","runtime-provider","application","session"],"type":"string"},"cursor":{"default":0,"description":"Zero-based capability cursor for detail=capabilities","maximum":9007199254740991,"minimum":0,"type":"integer"},"detail":{"default":"summary","description":"summary returns routing state; capabilities returns one filtered tool-availability page; full returns complete diagnostics only when required","enum":["summary","capabilities","full"],"type":"string"},"expected_catalog_digest":{"description":"Expected catalog digest used to reject stale or mismatched input.","pattern":"^[a-f0-9]{64}$","type":"string"},"expected_package_version":{"description":"Expected package version used to reject stale or mismatched input.","minLength":1,"type":"string"},"expected_server_path":{"description":"Expected server path used to reject stale or mismatched input.","minLength":1,"type":"string"},"limit":{"default":25,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"}},"type":"object"},"kind":"session","name":"binary_session","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]},"__schema2":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema2"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema2"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"anyOf":[{"additionalProperties":false,"properties":{"active_provider":{"anyOf":[{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},{"type":"null"}]},"alignment":{"additionalProperties":false,"properties":{"reasons":{"items":{"type":"string"},"type":"array"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"enum":["aligned","mcp_server_restart_required","unknown"],"type":"string"}},"required":["state","reasons","remediation"],"type":"object"},"analysis_activity":{"additionalProperties":false,"properties":{"providers":{"items":{"additionalProperties":false,"properties":{"active":{"anyOf":[{"additionalProperties":false,"properties":{"caller_state":{"enum":["waiting","timed_out","cancelled"],"type":"string"},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operation":{"minLength":1,"type":"string"},"request_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"timeout_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["request_id","operation","elapsed_ms","timeout_ms","caller_state"],"type":"object"},{"type":"null"}]},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"queued_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["provider","active","queued_requests"],"type":"object"},"type":"array"},"status":{"enum":["not_observed","idle","busy","timed_out_busy"],"type":"string"}},"required":["status","providers"],"type":"object"},"open":{"type":"boolean"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"recommended_actions":{"items":{"type":"string"},"type":"array"},"target":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map"],"type":"string"},"kind":{"enum":["executable","database","archive","artifact"],"type":"string"},"path":{"type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","format","kind","sha256","architecture"],"type":"object"},{"type":"null"}]},"view":{"const":"summary","type":"string"}},"required":["view","open","provider","active_provider","target","alignment","analysis_activity","recommended_actions"],"type":"object"},{"additionalProperties":false,"properties":{"active_provider":{"anyOf":[{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},{"type":"null"}]},"capabilities":{"additionalProperties":false,"properties":{"cursor":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"has_more":{"type":"boolean"},"items":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":true,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"const":"available","type":"string"},"remediation":{"type":"null"},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":false,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"enum":["client_capability_missing","target_required","provider_missing","provider_unavailable","target_unsupported","unsupported_host","policy_disabled"],"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"}]},"type":"array"},"limit":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"next_cursor":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","cursor","limit","total","next_cursor","has_more"],"type":"object"},"capability_family":{"anyOf":[{"type":"string"},{"type":"null"}]},"client_features":{"additionalProperties":false,"properties":{"elicitation_form":{"type":"boolean"},"elicitation_url":{"type":"boolean"},"roots":{"type":"boolean"},"sampling":{"type":"boolean"}},"required":["elicitation_form","elicitation_url","roots","sampling"],"type":"object"},"open":{"type":"boolean"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"view":{"const":"capabilities","type":"string"}},"required":["view","open","provider","active_provider","capability_family","capabilities","client_features"],"type":"object"},{"anyOf":[{"additionalProperties":false,"properties":{"analysis_activity":{"additionalProperties":false,"properties":{"providers":{"items":{"additionalProperties":false,"properties":{"active":{"anyOf":[{"additionalProperties":false,"properties":{"caller_state":{"enum":["waiting","timed_out","cancelled"],"type":"string"},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operation":{"minLength":1,"type":"string"},"request_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"timeout_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["request_id","operation","elapsed_ms","timeout_ms","caller_state"],"type":"object"},{"type":"null"}]},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"queued_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["provider","active","queued_requests"],"type":"object"},"type":"array"},"status":{"enum":["not_observed","idle","busy","timed_out_busy"],"type":"string"}},"required":["status","providers"],"type":"object"},"analysis_provider_binding":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"selection_source":{"enum":["request","environment","auto-single-candidate"],"type":"string"}},"required":["provider","selection_source","analysis_profile"],"type":"object"},{"type":"null"}]},"analysis_provider_candidates":{"items":{"additionalProperties":false,"properties":{"availability":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"type":"null"},"status":{"const":"available","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unavailable","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"}]},"capabilities":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"availability_code":{"type":"null"},"available":{"const":true,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"type":"null"}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"},{"additionalProperties":false,"properties":{"availability_code":{"anyOf":[{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},{"type":"null"}]},"available":{"const":false,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"}]},"type":"array"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"selected":{"type":"boolean"},"target_support":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unknown","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"type":"null"},"status":{"const":"supported","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"enum":["target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported"],"type":"string"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unsupported","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"}]}},"required":["provider","availability","target_support","selected","capabilities"],"type":"object"},"type":"array"},"analysis_run":{"anyOf":[{"additionalProperties":false,"properties":{"process_lineage":{"oneOf":[{"additionalProperties":false,"properties":{"status":{"const":"not_observed","type":"string"}},"required":["status"],"type":"object"},{"additionalProperties":false,"properties":{"snapshots":{"items":{"additionalProperties":false,"properties":{"observation":{"oneOf":[{"additionalProperties":false,"properties":{"launcher_pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unavailable","type":"string"}},"required":["status","observed_at","launcher_pid","process_group_id","reason"],"type":"object"},{"additionalProperties":false,"properties":{"descendants":{"items":{"additionalProperties":false,"properties":{"parent_pid":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["pid","parent_pid","process_group_id"],"type":"object"},"type":"array"},"launcher_parent_pid":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"launcher_pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"},"status":{"const":"verified","type":"string"}},"required":["status","observed_at","schema_version","launcher_pid","process_group_id","launcher_parent_pid","descendants"],"type":"object"}]},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"}},"required":["provider","observation"],"type":"object"},"type":"array"},"status":{"const":"snapshots","type":"string"}},"required":["status","snapshots"],"type":"object"}]},"run_id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["run_id","process_lineage"],"type":"object"},{"type":"null"}]},"capabilities":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"availability_code":{"type":"null"},"available":{"const":true,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"type":"null"}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"},{"additionalProperties":false,"properties":{"availability_code":{"anyOf":[{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},{"type":"null"}]},"available":{"const":false,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"}]},"type":"array"},"client_features":{"additionalProperties":false,"properties":{"elicitation_form":{"type":"boolean"},"elicitation_url":{"type":"boolean"},"roots":{"type":"boolean"},"sampling":{"type":"boolean"}},"required":["elicitation_form","elicitation_url","roots","sampling"],"type":"object"},"open":{"const":false,"type":"boolean"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"providers":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"type":"array"},"server_identity":{"additionalProperties":false,"properties":{"alignment":{"additionalProperties":false,"properties":{"reasons":{"items":{"type":"string"},"type":"array"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"enum":["aligned","mcp_server_restart_required","unknown"],"type":"string"}},"required":["state","reasons","remediation"],"type":"object"},"catalog":{"additionalProperties":{"$ref":"#/$defs/__schema2"},"propertyNames":{"type":"string"},"type":"object"},"client":{"anyOf":[{"additionalProperties":false,"properties":{"name":{"type":"string"},"version":{"type":"string"}},"required":["name","version"],"type":"object"},{"type":"null"}]},"negotiated_protocol_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"package":{"additionalProperties":false,"properties":{"build_commit":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"root_path":{"type":"string"},"version":{"type":"string"}},"required":["name","version","root_path","build_commit"],"type":"object"},"protocol_features":{"additionalProperties":false,"properties":{"cancellation":{"type":"boolean"},"elicitation":{"type":"boolean"},"evidence_resources":{"type":"boolean"},"progress":{"type":"boolean"}},"required":["progress","cancellation","evidence_resources","elicitation"],"type":"object"},"sdk":{"additionalProperties":false,"properties":{"client_test":{"type":"string"},"core":{"type":"string"},"server":{"type":"string"}},"required":["server","client_test","core"],"type":"object"},"server":{"additionalProperties":false,"properties":{"command_path":{"type":"string"},"name":{"type":"string"},"started_at":{"type":"string"},"version":{"type":"string"}},"required":["name","version","started_at","command_path"],"type":"object"},"skill":{"additionalProperties":false,"properties":{"expected_version":{"type":"string"},"name":{"type":"string"}},"required":["name","expected_version"],"type":"object"}},"required":["package","server","sdk","negotiated_protocol_version","client","skill","catalog","protocol_features","alignment"],"type":"object"},"tool_availability":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":true,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"const":"available","type":"string"},"remediation":{"type":"null"},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":false,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"enum":["client_capability_missing","target_required","provider_missing","provider_unavailable","target_unsupported","unsupported_host","policy_disabled"],"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"}]},"type":"array"},"view":{"const":"full","type":"string"}},"required":["provider","providers","capabilities","analysis_run","analysis_activity","analysis_provider_binding","analysis_provider_candidates","tool_availability","client_features","server_identity","view","open"],"type":"object"},{"additionalProperties":false,"properties":{"analysis_activity":{"additionalProperties":false,"properties":{"providers":{"items":{"additionalProperties":false,"properties":{"active":{"anyOf":[{"additionalProperties":false,"properties":{"caller_state":{"enum":["waiting","timed_out","cancelled"],"type":"string"},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"operation":{"minLength":1,"type":"string"},"request_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"timeout_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["request_id","operation","elapsed_ms","timeout_ms","caller_state"],"type":"object"},{"type":"null"}]},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"queued_requests":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["provider","active","queued_requests"],"type":"object"},"type":"array"},"status":{"enum":["not_observed","idle","busy","timed_out_busy"],"type":"string"}},"required":["status","providers"],"type":"object"},"analysis_provider_binding":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"additionalProperties":false,"properties":{"digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"minLength":1,"type":"string"},"name":{"minLength":1,"type":"string"},"version":{"minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"selection_source":{"enum":["request","environment","auto-single-candidate"],"type":"string"}},"required":["provider","selection_source","analysis_profile"],"type":"object"},{"type":"null"}]},"analysis_provider_candidates":{"items":{"additionalProperties":false,"properties":{"availability":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"type":"null"},"status":{"const":"available","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unavailable","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"}]},"capabilities":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"availability_code":{"type":"null"},"available":{"const":true,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"type":"null"}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"},{"additionalProperties":false,"properties":{"availability_code":{"anyOf":[{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},{"type":"null"}]},"available":{"const":false,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"}]},"type":"array"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"selected":{"type":"boolean"},"target_support":{"oneOf":[{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unknown","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"type":"null"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"type":"null"},"status":{"const":"supported","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"},{"additionalProperties":false,"properties":{"code":{"enum":["target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported"],"type":"string"},"diagnostics":{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unsupported","type":"string"}},"required":["status","code","reason","diagnostics"],"type":"object"}]}},"required":["provider","availability","target_support","selected","capabilities"],"type":"object"},"type":"array"},"analysis_run":{"anyOf":[{"additionalProperties":false,"properties":{"process_lineage":{"oneOf":[{"additionalProperties":false,"properties":{"status":{"const":"not_observed","type":"string"}},"required":["status"],"type":"object"},{"additionalProperties":false,"properties":{"snapshots":{"items":{"additionalProperties":false,"properties":{"observation":{"oneOf":[{"additionalProperties":false,"properties":{"launcher_pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"reason":{"minLength":1,"type":"string"},"status":{"const":"unavailable","type":"string"}},"required":["status","observed_at","launcher_pid","process_group_id","reason"],"type":"object"},{"additionalProperties":false,"properties":{"descendants":{"items":{"additionalProperties":false,"properties":{"parent_pid":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"}},"required":["pid","parent_pid","process_group_id"],"type":"object"},"type":"array"},"launcher_parent_pid":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"launcher_pid":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"observed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"process_group_id":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"type":"number"},"status":{"const":"verified","type":"string"}},"required":["status","observed_at","schema_version","launcher_pid","process_group_id","launcher_parent_pid","descendants"],"type":"object"}]},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"}},"required":["provider","observation"],"type":"object"},"type":"array"},"status":{"const":"snapshots","type":"string"}},"required":["status","snapshots"],"type":"object"}]},"run_id":{"format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","type":"string"}},"required":["run_id","process_lineage"],"type":"object"},{"type":"null"}]},"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}]},"capabilities":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"availability_code":{"type":"null"},"available":{"const":true,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"type":"null"}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"},{"additionalProperties":false,"properties":{"availability_code":{"anyOf":[{"enum":["not_configured","executable_missing","runtime_missing","unsupported_host","unsupported_version","target_kind_unsupported","target_format_unsupported","architecture_unsupported","target_role_unsupported","managed_target_unsupported","open_options_invalid","version_unresolved"],"type":"string"},{"type":"null"}]},"available":{"const":false,"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"changes_permissions":{"type":"boolean"},"launches_process":{"type":"boolean"},"may_access_network":{"type":"boolean"},"may_show_ui":{"type":"boolean"},"may_write_filesystem":{"type":"boolean"},"mutates_artifact":{"type":"boolean"},"requires_root":{"type":"boolean"}},"required":["mutates_artifact","launches_process","may_show_ui","may_access_network","may_write_filesystem","changes_permissions","requires_root"],"type":"object"},"exhaustive":{"type":"boolean"},"input_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"limitations":{"items":{"type":"string"},"type":"array"},"limits":{"additionalProperties":false,"properties":{"max_payload_bytes":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"max_results":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"timeout_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["max_results","max_payload_bytes","timeout_ms"],"type":"object"},"operation":{"type":"string"},"output_contract_version":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"pagination":{"enum":["none","offset","cursor"],"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["operation","input_contract_version","output_contract_version","pagination","exhaustive","effects","limits","limitations","available","reason","availability_code"],"type":"object"}]},"type":"array"},"client_features":{"additionalProperties":false,"properties":{"elicitation_form":{"type":"boolean"},"elicitation_url":{"type":"boolean"},"roots":{"type":"boolean"},"sampling":{"type":"boolean"}},"required":["elicitation_form","elicitation_url","roots","sampling"],"type":"object"},"format":{"enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map"],"type":"string"},"kind":{"enum":["executable","database","archive","artifact"],"type":"string"},"open":{"const":true,"type":"boolean"},"path":{"type":"string"},"provider":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"providers":{"items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","version"],"type":"object"},"type":"array"},"server_identity":{"additionalProperties":false,"properties":{"alignment":{"additionalProperties":false,"properties":{"reasons":{"items":{"type":"string"},"type":"array"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"enum":["aligned","mcp_server_restart_required","unknown"],"type":"string"}},"required":["state","reasons","remediation"],"type":"object"},"catalog":{"additionalProperties":{"$ref":"#/$defs/__schema2"},"propertyNames":{"type":"string"},"type":"object"},"client":{"anyOf":[{"additionalProperties":false,"properties":{"name":{"type":"string"},"version":{"type":"string"}},"required":["name","version"],"type":"object"},{"type":"null"}]},"negotiated_protocol_version":{"anyOf":[{"type":"string"},{"type":"null"}]},"package":{"additionalProperties":false,"properties":{"build_commit":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"root_path":{"type":"string"},"version":{"type":"string"}},"required":["name","version","root_path","build_commit"],"type":"object"},"protocol_features":{"additionalProperties":false,"properties":{"cancellation":{"type":"boolean"},"elicitation":{"type":"boolean"},"evidence_resources":{"type":"boolean"},"progress":{"type":"boolean"}},"required":["progress","cancellation","evidence_resources","elicitation"],"type":"object"},"sdk":{"additionalProperties":false,"properties":{"client_test":{"type":"string"},"core":{"type":"string"},"server":{"type":"string"}},"required":["server","client_test","core"],"type":"object"},"server":{"additionalProperties":false,"properties":{"command_path":{"type":"string"},"name":{"type":"string"},"started_at":{"type":"string"},"version":{"type":"string"}},"required":["name","version","started_at","command_path"],"type":"object"},"skill":{"additionalProperties":false,"properties":{"expected_version":{"type":"string"},"name":{"type":"string"}},"required":["name","expected_version"],"type":"object"}},"required":["package","server","sdk","negotiated_protocol_version","client","skill","catalog","protocol_features","alignment"],"type":"object"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"tool_availability":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":true,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"const":"available","type":"string"},"remediation":{"type":"null"},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"annotations":{"additionalProperties":false,"properties":{"destructive":{"type":"boolean"},"idempotent":{"type":"boolean"},"open_world":{"type":"boolean"},"read_only":{"type":"boolean"}},"required":["read_only","destructive","idempotent","open_world"],"type":"object"},"available":{"const":false,"type":"boolean"},"client_requirements":{"additionalProperties":false,"properties":{"missing_optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"missing_required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"optional":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"},"required":{"items":{"enum":["elicitation_form","elicitation_url","roots","sampling"],"type":"string"},"type":"array"}},"required":["required","optional","missing_required","missing_optional"],"type":"object"},"default_mode_available":{"type":"boolean"},"effects":{"additionalProperties":false,"properties":{"accessesNetwork":{"type":"boolean"},"changesUiState":{"type":"boolean"},"idempotent":{"type":"boolean"},"launchesProcess":{"type":"boolean"},"mayDiscardData":{"type":"boolean"},"mutatesSession":{"type":"boolean"},"mutatesTarget":{"type":"boolean"},"writesFilesystem":{"type":"boolean"}},"required":["mutatesTarget","mutatesSession","writesFilesystem","launchesProcess","accessesNetwork","changesUiState","mayDiscardData","idempotent"],"type":"object"},"modes":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"available":{"const":true,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"maxItems":0,"type":"array"},"name":{"type":"string"},"remediation":{"type":"null"}},"required":["name","available","missing_operations","remediation"],"type":"object"},{"additionalProperties":false,"properties":{"available":{"const":false,"type":"boolean"},"missing_operations":{"items":{"type":"string"},"minItems":1,"type":"array"},"name":{"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","available","missing_operations","remediation"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"reason":{"enum":["client_capability_missing","target_required","provider_missing","provider_unavailable","target_unsupported","unsupported_host","policy_disabled"],"type":"string"},"remediation":{"anyOf":[{"type":"string"},{"type":"null"}]},"surface":{"type":"string"}},"required":["name","surface","client_requirements","effects","annotations","available","reason","remediation"],"type":"object"}]},"type":"array"},"view":{"const":"full","type":"string"}},"required":["provider","providers","capabilities","analysis_run","analysis_activity","analysis_provider_binding","analysis_provider_candidates","tool_availability","client_features","server_identity","view","open","path","format","kind","sha256","architecture"],"type":"object"}]}]}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Binary Session"},{"analysisOperation":null,"annotations":{"destructiveHint":true,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Atomically write the session\'s deterministic Evidence v2 bundle beneath an operator-approved root. Existing files require overwrite: true; records and manifests use canonical byte-stable ordering. For an in-session read, use snapshot_evidence_bundle and read its exact resource URI instead.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":true,"mutatesSession":false,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"overwrite":false,"path":"/tmp/evidence.json"}],"properties":{"overwrite":{"default":false,"description":"Whether an existing destination may be replaced.","type":"boolean"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["path"],"type":"object"},"kind":"session","name":"export_evidence_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"records":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["path","bytes","records","unknowns"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Export Evidence Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Read a bounded local JSON bundle beneath an operator-approved root, validate every Evidence v2 ID and canonical manifest, then atomically merge it. Imported content is data only and is never executed.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"path":"evidence.json"}],"properties":{"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["path"],"type":"object"},"kind":"session","name":"import_evidence_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"imported":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_added":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["imported","unknowns_added","total"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Import Evidence Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false},"description":"Run one bounded process under a PTY using operator-approved executable and working roots. Produces Process Capture v4; legacy v3 captures cannot be upgraded and must be recaptured with this tool. Requires approved: true; unknown_registry_approved: true separately records capture residuals. Captures raw and xterm-rendered terminal frames, scripted interactions, lifecycle filesystem checkpoints, process ownership, declarative command shims, and loopback replay. Disabled unless operator policy enables it; not a security sandbox.","effects":{"accessesNetwork":true,"changesUiState":false,"idempotent":false,"launchesProcess":true,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":true},"inputSchema":{"$defs":{"__schema0":{"oneOf":[{"additionalProperties":false,"properties":{"cardinality":{"additionalProperties":false,"description":"Value for cardinality.","properties":{"max":{"description":"Value for max.","exclusiveMinimum":0,"maximum":256,"type":"integer"},"min":{"description":"Value for min.","exclusiveMinimum":0,"maximum":256,"type":"integer"}},"required":["min","max"],"type":"object"},"consume":{"description":"Value for consume.","type":"boolean"},"exact":{"$ref":"#/$defs/__schema1","description":"Value for exact."},"ignore_fields":{"description":"Value for ignore fields.","items":{"enum":["sequence","at_ms","scheduled_at_ms","dispatched_at_ms","elapsed_ms"],"type":"string"},"maxItems":5,"type":"array"},"kind":{"const":"event","description":"Value for kind.","type":"string"},"since":{"description":"Value for since.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"scenario_start","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"state_entry","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"checkpoint","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"event_id":{"description":"Value for event id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"kind":{"const":"event_id","description":"Value for kind.","type":"string"}},"required":["kind","event_id"],"type":"object"}]},"source":{"description":"Value for source.","enum":["terminal_raw","terminal_rendered","interaction","lifecycle","process","filesystem","http","websocket","shim","replay_transition"],"type":"string"}},"required":["kind","source","exact","ignore_fields","since","consume","cardinality"],"type":"object"},{"additionalProperties":false,"properties":{"case_sensitive":{"const":true,"description":"Whether text matching distinguishes uppercase and lowercase.","type":"boolean"},"consume":{"description":"Value for consume.","type":"boolean"},"control_sequences":{"const":"include","description":"Value for control sequences.","type":"string"},"encoding":{"const":"utf8","description":"Value for encoding.","type":"string"},"kind":{"const":"terminal_text","description":"Value for kind.","type":"string"},"literal":{"description":"Value for literal.","maxLength":10000,"minLength":1,"type":"string"},"occurrence":{"description":"Value for occurrence.","exclusiveMinimum":0,"maximum":1000,"type":"integer"},"since":{"description":"Value for since.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"scenario_start","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"state_entry","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"checkpoint","description":"Value for kind.","type":"string"},"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["kind","name"],"type":"object"},{"additionalProperties":false,"properties":{"event_id":{"description":"Value for event id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"kind":{"const":"event_id","description":"Value for kind.","type":"string"}},"required":["kind","event_id"],"type":"object"}]},"view":{"const":"decoded","description":"Value for view.","type":"string"}},"required":["kind","view","encoding","literal","case_sensitive","control_sequences","occurrence","since","consume"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"all","description":"Value for kind.","type":"string"},"triggers":{"description":"Value for triggers.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"minItems":2,"type":"array"}},"required":["kind","triggers"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"any","description":"Value for kind.","type":"string"},"triggers":{"description":"Value for triggers.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"minItems":2,"type":"array"}},"required":["kind","triggers"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"sequence","description":"Value for kind.","type":"string"},"triggers":{"description":"Value for triggers.","items":{"$ref":"#/$defs/__schema0"},"maxItems":16,"minItems":1,"type":"array"}},"required":["kind","triggers"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"repeat","description":"Value for kind.","type":"string"},"max":{"description":"Value for max.","exclusiveMinimum":0,"maximum":64,"type":"integer"},"min":{"description":"Value for min.","exclusiveMinimum":0,"maximum":64,"type":"integer"},"trigger":{"$ref":"#/$defs/__schema0","description":"Value for trigger."}},"required":["kind","trigger","min","max"],"type":"object"}]},"__schema1":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema1"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema1"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"approved":true,"arguments":[],"checkpoints":[],"command_shims":[],"environment":{},"events":[],"executable":"/usr/bin/true","filesystem_roots":[],"idle_timeout_ms":30000,"inherit_environment":[],"limits":{"connections":100,"file_bytes":10000000,"files":10000,"filesystem_depth":16,"frames":10000,"output_bytes":1000000,"processes":1000,"protocol_body_bytes":1000000,"protocol_events":10000},"network_access":"host","normalization":{"paths":true,"patterns":[],"pids":true,"ports":true,"time_bucket_ms":10},"reactive":null,"replay":{"http":[],"machine":null,"websocket_connections":[],"websocket_messages":[]},"secret_aliases":[],"settle_ms":100,"terminal":{"columns":80,"rows":24,"scrollback":1000},"timeout_ms":30000,"working_directory":"/tmp"}],"properties":{"approved":{"const":true,"description":"Explicit per-call acknowledgement that this operation launches the target","type":"boolean"},"arguments":{"default":[],"description":"Value for arguments.","items":{"type":"string"},"maxItems":256,"type":"array"},"checkpoints":{"default":[],"description":"Value for checkpoints.","items":{"properties":{"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","type":"string"},"trigger":{"description":"Value for trigger.","oneOf":[{"properties":{"at_ms":{"description":"Value for at ms.","maximum":300000,"minimum":0,"type":"integer"},"type":{"const":"time","description":"Value for type.","type":"string"}},"required":["type","at_ms"],"type":"object"},{"properties":{"occurrence":{"default":1,"description":"Value for occurrence.","exclusiveMinimum":0,"maximum":1000,"type":"integer"},"type":{"const":"terminal_literal","description":"Value for type.","type":"string"},"value":{"description":"Value for value.","maxLength":10000,"minLength":1,"type":"string"}},"required":["type","value"],"type":"object"},{"properties":{"type":{"const":"root_exit","description":"Value for type.","type":"string"}},"required":["type"],"type":"object"},{"properties":{"type":{"const":"settled","description":"Value for type.","type":"string"}},"required":["type"],"type":"object"}]}},"required":["name","trigger"],"type":"object"},"maxItems":64,"type":"array"},"command_shims":{"default":[],"description":"Value for command shims.","items":{"properties":{"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$","type":"string"},"routes":{"description":"Value for routes.","items":{"properties":{"arguments":{"description":"Value for arguments.","items":{"type":"string"},"maxItems":256,"type":"array"},"max_calls":{"default":1,"description":"Maximum permitted calls for this operation.","exclusiveMinimum":0,"maximum":100,"type":"integer"},"outputs":{"default":[],"description":"Value for outputs.","items":{"properties":{"at_ms":{"description":"Value for at ms.","maximum":300000,"minimum":0,"type":"integer"},"data":{"description":"Value for data.","maxLength":1000000,"type":"string"},"stream":{"description":"Value for stream.","enum":["stdout","stderr"],"type":"string"}},"required":["at_ms","stream","data"],"type":"object"},"maxItems":1000,"type":"array"},"termination":{"description":"Value for termination.","oneOf":[{"properties":{"code":{"description":"Value for code.","maximum":255,"minimum":0,"type":"integer"},"type":{"const":"exit","description":"Value for type.","type":"string"}},"required":["type","code"],"type":"object"},{"properties":{"signal":{"description":"Value for signal.","enum":["SIGINT","SIGTERM","SIGKILL"],"type":"string"},"type":{"const":"signal","description":"Value for type.","type":"string"}},"required":["type","signal"],"type":"object"}]}},"required":["arguments","termination"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"}},"required":["name","routes"],"type":"object"},"maxItems":32,"type":"array"},"environment":{"additionalProperties":{"type":"string"},"default":{},"description":"Value for environment.","propertyNames":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*$","type":"string"},"type":"object"},"events":{"default":[],"description":"Value for events.","items":{"oneOf":[{"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"data":{"description":"Value for data.","type":"string"},"sensitive":{"default":false,"description":"Value for sensitive.","type":"boolean"},"type":{"const":"input","description":"Value for type.","type":"string"}},"required":["at_ms","type","data"],"type":"object"},{"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"columns":{"description":"Value for columns.","maximum":1000,"minimum":1,"type":"integer"},"rows":{"description":"Value for rows.","maximum":1000,"minimum":1,"type":"integer"},"type":{"const":"resize","description":"Value for type.","type":"string"}},"required":["at_ms","type","columns","rows"],"type":"object"},{"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"signal":{"description":"Value for signal.","enum":["SIGINT","SIGTERM","SIGKILL"],"type":"string"},"type":{"const":"signal","description":"Value for type.","type":"string"}},"required":["at_ms","type","signal"],"type":"object"}]},"maxItems":1000,"type":"array"},"executable":{"description":"Approved absolute path of the executable to run.","pattern":"^\\\\/.*","type":"string"},"filesystem_roots":{"default":[],"description":"Approved canonical filesystem filesystem roots.","items":{"pattern":"^\\\\/.*","type":"string"},"maxItems":16,"type":"array"},"idle_timeout_ms":{"default":30000,"description":"Value for idle timeout ms.","exclusiveMinimum":0,"maximum":300000,"type":"integer"},"inherit_environment":{"default":[],"description":"Value for inherit environment.","items":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*$","type":"string"},"maxItems":64,"type":"array"},"limits":{"default":{"connections":100,"file_bytes":10000000,"files":10000,"filesystem_depth":16,"frames":10000,"output_bytes":1000000,"processes":1000,"protocol_body_bytes":1000000,"protocol_events":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"connections":{"default":100,"description":"Value for connections.","exclusiveMinimum":0,"maximum":1000,"type":"integer"},"file_bytes":{"default":10000000,"description":"Bounded byte count for file.","exclusiveMinimum":0,"maximum":100000000,"type":"integer"},"files":{"default":10000,"description":"Value for files.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"filesystem_depth":{"default":16,"description":"Value for filesystem depth.","maximum":64,"minimum":1,"type":"integer"},"frames":{"default":10000,"description":"Value for frames.","exclusiveMinimum":0,"maximum":100000,"type":"integer"},"output_bytes":{"default":1000000,"description":"Bounded byte count for output.","exclusiveMinimum":0,"maximum":10000000,"type":"integer"},"processes":{"default":1000,"description":"Value for processes.","exclusiveMinimum":0,"maximum":10000,"type":"integer"},"protocol_body_bytes":{"default":1000000,"description":"Bounded byte count for protocol body.","exclusiveMinimum":0,"maximum":10000000,"type":"integer"},"protocol_events":{"default":10000,"description":"Value for protocol events.","exclusiveMinimum":0,"maximum":100000,"type":"integer"}},"type":"object"},"network_access":{"const":"host","default":"host","description":"Value for network access.","type":"string"},"normalization":{"default":{"paths":true,"patterns":[],"pids":true,"ports":true,"time_bucket_ms":10},"description":"Value for normalization.","properties":{"paths":{"default":true,"description":"Value for paths.","type":"boolean"},"patterns":{"default":[],"description":"Value for patterns.","items":{"properties":{"pattern":{"description":"Text or bounded pattern used to filter matching results.","maxLength":500,"type":"string"},"replacement":{"description":"Value for replacement.","maxLength":100,"type":"string"}},"required":["pattern","replacement"],"type":"object"},"maxItems":32,"type":"array"},"pids":{"default":true,"description":"Value for pids.","type":"boolean"},"ports":{"default":true,"description":"Value for ports.","type":"boolean"},"time_bucket_ms":{"default":10,"description":"Value for time bucket ms.","exclusiveMinimum":0,"maximum":60000,"type":"integer"}},"type":"object"},"reactive":{"anyOf":[{"additionalProperties":false,"properties":{"deadline_ms":{"description":"Value for deadline ms.","exclusiveMinimum":0,"maximum":300000,"type":"integer"},"initial_state":{"description":"Value for initial state.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"states":{"description":"Value for states.","items":{"additionalProperties":false,"properties":{"deadline_ms":{"description":"Value for deadline ms.","exclusiveMinimum":0,"maximum":300000,"type":"integer"},"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"max_visits":{"description":"Maximum permitted visits for this operation.","exclusiveMinimum":0,"maximum":256,"type":"integer"},"on":{"description":"Value for on.","items":{"additionalProperties":false,"properties":{"actions":{"description":"Value for actions.","items":{"oneOf":[{"additionalProperties":false,"properties":{"data":{"description":"Value for data.","maxLength":1000000,"type":"string"},"sensitive":{"description":"Value for sensitive.","type":"boolean"},"type":{"const":"send_input","description":"Value for type.","type":"string"}},"required":["type","data","sensitive"],"type":"object"},{"additionalProperties":false,"properties":{"columns":{"description":"Value for columns.","maximum":1000,"minimum":1,"type":"integer"},"rows":{"description":"Value for rows.","maximum":1000,"minimum":1,"type":"integer"},"type":{"const":"resize","description":"Value for type.","type":"string"}},"required":["type","columns","rows"],"type":"object"},{"additionalProperties":false,"properties":{"type":{"const":"close_stdin","description":"Value for type.","type":"string"}},"required":["type"],"type":"object"},{"additionalProperties":false,"properties":{"signal":{"description":"Value for signal.","enum":["SIGINT","SIGTERM","SIGKILL"],"type":"string"},"target":{"description":"Value for target.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"root","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"process_group","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"subject_id","description":"Value for kind.","type":"string"},"subject_id":{"description":"Value for subject id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["kind","subject_id"],"type":"object"}]},"type":{"const":"send_signal","description":"Value for type.","type":"string"}},"required":["type","target","signal"],"type":"object"},{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$","type":"string"},"type":{"const":"checkpoint","description":"Value for type.","type":"string"}},"required":["type","name"],"type":"object"}]},"maxItems":16,"type":"array"},"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"max_uses":{"description":"Maximum permitted uses for this operation.","exclusiveMinimum":0,"maximum":256,"type":"integer"},"priority":{"description":"Value for priority.","maximum":1000,"minimum":0,"type":"integer"},"target":{"description":"Value for target.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"goto","description":"Value for kind.","type":"string"},"state":{"description":"Value for state.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["kind","state"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"finish","description":"Value for kind.","type":"string"},"outcome":{"const":"passed","description":"Value for outcome.","type":"string"}},"required":["kind","outcome"],"type":"object"}]},"when":{"$ref":"#/$defs/__schema0","description":"Value for when."}},"required":["id","priority","max_uses","when","actions","target"],"type":"object"},"maxItems":128,"minItems":1,"type":"array"}},"required":["id","max_visits","deadline_ms","on"],"type":"object"},"maxItems":32,"minItems":1,"type":"array"},"version":{"const":1,"description":"Value for version.","type":"number"}},"required":["version","initial_state","deadline_ms","states"],"type":"object"},{"type":"null"}],"description":"Value for reactive."},"replay":{"description":"Value for replay.","properties":{"http":{"default":[],"description":"Value for http.","items":{"properties":{"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"delay_ms":{"default":0,"description":"Value for delay ms.","maximum":30000,"minimum":0,"type":"integer"},"disconnect":{"default":false,"description":"Value for disconnect.","type":"boolean"},"max_calls":{"default":1,"description":"Maximum permitted calls for this operation.","maximum":100,"minimum":1,"type":"integer"},"method":{"description":"Value for method.","maxLength":16,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"request_body":{"description":"Value for request body.","maxLength":1000000,"type":"string"},"request_headers":{"additionalProperties":{"type":"string"},"default":{},"description":"Value for request headers.","propertyNames":{"type":"string"},"type":"object"},"response_headers":{"additionalProperties":{"type":"string"},"default":{},"description":"Value for response headers.","propertyNames":{"type":"string"},"type":"object"},"status":{"description":"Current lifecycle or verification status.","maximum":599,"minimum":100,"type":"integer"}},"required":["method","path","status","body"],"type":"object"},"maxItems":100,"type":"array"},"machine":{"anyOf":[{"additionalProperties":false,"properties":{"initial_state":{"description":"Value for initial state.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"limits":{"additionalProperties":false,"default":{"bytes":1000000,"connections":100,"duration_ms":30000,"messages":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"bytes":{"default":1000000,"description":"Value for bytes.","maximum":10000000,"minimum":1,"type":"integer"},"connections":{"default":100,"description":"Value for connections.","maximum":1000,"minimum":1,"type":"integer"},"duration_ms":{"default":30000,"description":"Value for duration ms.","maximum":300000,"minimum":1,"type":"integer"},"messages":{"default":10000,"description":"Value for messages.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"max_transitions":{"description":"Maximum permitted transitions for this operation.","maximum":100000,"minimum":1,"type":"integer"},"states":{"description":"Value for states.","items":{"additionalProperties":false,"properties":{"max_visits":{"default":100000,"description":"Maximum permitted visits for this operation.","maximum":100000,"minimum":1,"type":"integer"},"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"terminal":{"default":false,"description":"Value for terminal.","type":"boolean"}},"required":["name"],"type":"object"},"maxItems":256,"minItems":1,"type":"array"},"transitions":{"description":"Value for transitions.","items":{"additionalProperties":false,"properties":{"actions":{"description":"Value for actions.","items":{"oneOf":[{"additionalProperties":false,"properties":{"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"default":{},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"status":{"description":"Current lifecycle or verification status.","maximum":599,"minimum":100,"type":"integer"},"type":{"const":"http_response","description":"Value for type.","type":"string"}},"required":["type","status","body"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"description":"Value for data.","maxLength":1000000,"type":"string"},"type":{"const":"websocket_send","description":"Value for type.","type":"string"}},"required":["type","data"],"type":"object"},{"additionalProperties":false,"properties":{"type":{"const":"disconnect","description":"Value for type.","type":"string"}},"required":["type"],"type":"object"},{"additionalProperties":false,"properties":{"duration_ms":{"description":"Value for duration ms.","maximum":30000,"minimum":0,"type":"integer"},"type":{"const":"delay","description":"Value for type.","type":"string"}},"required":["type","duration_ms"],"type":"object"}]},"maxItems":32,"minItems":1,"type":"array"},"captures":{"description":"Value for captures.","items":{"additionalProperties":false,"properties":{"sensitive":{"default":false,"description":"Value for sensitive.","type":"boolean"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"source":{"const":"request_header","description":"Value for source.","type":"string"}},"required":["source","name"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"request_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"websocket_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"action_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"}]},"variable":{"description":"Value for variable.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["variable","value"],"type":"object"},"maxItems":32,"type":"array"},"from":{"description":"Value for from.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"guards":{"description":"Value for guards.","items":{"additionalProperties":false,"properties":{"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"source":{"const":"request_header","description":"Value for source.","type":"string"}},"required":["source","name"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"request_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"websocket_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"action_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"}]},"variable":{"description":"Value for variable.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["variable","value"],"type":"object"},"maxItems":32,"type":"array"},"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"max_uses":{"description":"Maximum permitted uses for this operation.","maximum":10000,"minimum":1,"type":"integer"},"priority":{"default":100,"description":"Value for priority.","maximum":1000,"minimum":0,"type":"integer"},"to":{"description":"Value for to.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"trigger":{"description":"Value for trigger.","oneOf":[{"additionalProperties":false,"properties":{"body":{"anyOf":[{"maxLength":1000000,"type":"string"},{"type":"null"}],"default":null,"description":"Value for body."},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"method":{"description":"Value for method.","maxLength":16,"minLength":1,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"http","description":"Value for protocol.","type":"string"}},"required":["protocol","method","path"],"type":"object"},{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_connect","description":"Value for protocol.","type":"string"}},"required":["protocol","path"],"type":"object"},{"additionalProperties":false,"properties":{"body":{"anyOf":[{"maxLength":1000000,"type":"string"},{"type":"null"}],"default":null,"description":"Value for body."},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_message","description":"Value for protocol.","type":"string"}},"required":["protocol","path"],"type":"object"}]}},"required":["id","from","to","trigger","actions","max_uses"],"type":"object"},"maxItems":2000,"minItems":1,"type":"array"}},"required":["initial_state","states","transitions","max_transitions"],"type":"object"},{"type":"null"}],"description":"Value for machine."},"websocket_connections":{"default":[],"description":"Value for websocket connections.","items":{"properties":{"disconnect_after":{"default":false,"description":"Value for disconnect after.","type":"boolean"},"messages":{"description":"Value for messages.","items":{"properties":{"data":{"description":"Value for data.","maxLength":1000000,"type":"string"},"delay_ms":{"default":0,"description":"Value for delay ms.","maximum":30000,"minimum":0,"type":"integer"}},"required":["data"],"type":"object"},"maxItems":100,"type":"array"}},"required":["messages"],"type":"object"},"maxItems":100,"type":"array"},"websocket_messages":{"default":[],"description":"Value for websocket messages.","items":{"maxLength":1000000,"type":"string"},"maxItems":100,"type":"array"}},"type":"object"},"secret_aliases":{"default":[],"description":"Value for secret aliases.","items":{"pattern":"^[A-Za-z_][A-Za-z0-9_]*$","type":"string"},"maxItems":64,"type":"array"},"settle_ms":{"default":100,"description":"Value for settle ms.","maximum":10000,"minimum":0,"type":"integer"},"terminal":{"default":{"columns":80,"rows":24,"scrollback":1000},"description":"Value for terminal.","properties":{"columns":{"default":80,"description":"Value for columns.","maximum":1000,"minimum":1,"type":"integer"},"rows":{"default":24,"description":"Value for rows.","maximum":1000,"minimum":1,"type":"integer"},"scrollback":{"default":1000,"description":"Value for scrollback.","maximum":10000,"minimum":0,"type":"integer"}},"type":"object"},"timeout_ms":{"default":30000,"description":"Value for timeout ms.","exclusiveMinimum":0,"maximum":300000,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record capture residuals durably","type":"boolean"},"working_directory":{"description":"Value for working directory.","pattern":"^\\\\/.*","type":"string"}},"required":["approved","executable","working_directory"],"type":"object"},"kind":"session","name":"capture_process_scenario","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"cleanup":{"additionalProperties":false,"properties":{"owned_process_group":{"const":"verified","type":"string"},"temporary_root":{"const":"removed","type":"string"}},"required":["owned_process_group","temporary_root"],"type":"object"},"event_journal":{"default":[],"items":{"additionalProperties":false,"properties":{"capture_order":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"collection":{"enum":["frames","rendered_frames","interaction_events","lifecycle","process_samples","filesystem_checkpoints","shim_events","protocol_events","replay_transitions"],"type":"string"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["capture_order","collection","index"],"type":"object"},"type":"array"},"exit":{"additionalProperties":false,"properties":{"code":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"reason":{"enum":["exited","timeout","idle_timeout"],"type":"string"},"signal":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]}},"required":["code","signal","reason"],"type":"object"},"files_after":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"const":"file","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"string"},"type":{"const":"symlink","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"enum":["directory","other"],"type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"}]},"type":"array"},"files_before":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"const":"file","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"string"},"type":{"const":"symlink","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"enum":["directory","other"],"type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"}]},"type":"array"},"filesystem_checkpoints":{"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"effects":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"after":{"oneOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"const":"file","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"string"},"type":{"const":"symlink","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"enum":["directory","other"],"type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"}]},"before":{"type":"null"},"path":{"type":"string"},"status":{"const":"created","type":"string"}},"required":["path","status","before","after"],"type":"object"},{"additionalProperties":false,"properties":{"after":{"type":"null"},"before":{"oneOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"const":"file","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"string"},"type":{"const":"symlink","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"enum":["directory","other"],"type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"}]},"path":{"type":"string"},"status":{"const":"deleted","type":"string"}},"required":["path","status","before","after"],"type":"object"},{"additionalProperties":false,"properties":{"after":{"oneOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"const":"file","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"string"},"type":{"const":"symlink","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"enum":["directory","other"],"type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"}]},"before":{"oneOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"const":"file","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"string"},"type":{"const":"symlink","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"enum":["directory","other"],"type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"}]},"path":{"type":"string"},"status":{"enum":["modified","unchanged"],"type":"string"}},"required":["path","status","before","after"],"type":"object"}]},"type":"array"},"files":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"const":"file","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"string"},"type":{"const":"symlink","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"enum":["directory","other"],"type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"}]},"type":"array"},"name":{"type":"string"},"truncated":{"type":"boolean"}},"required":["name","at_ms","files","effects","truncated"],"type":"object"},"type":"array"},"filesystem_effects":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"after":{"oneOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"const":"file","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"string"},"type":{"const":"symlink","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"enum":["directory","other"],"type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"}]},"before":{"type":"null"},"path":{"type":"string"},"status":{"const":"created","type":"string"}},"required":["path","status","before","after"],"type":"object"},{"additionalProperties":false,"properties":{"after":{"type":"null"},"before":{"oneOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"const":"file","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"string"},"type":{"const":"symlink","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"enum":["directory","other"],"type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"}]},"path":{"type":"string"},"status":{"const":"deleted","type":"string"}},"required":["path","status","before","after"],"type":"object"},{"additionalProperties":false,"properties":{"after":{"oneOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"const":"file","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"string"},"type":{"const":"symlink","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"enum":["directory","other"],"type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"}]},"before":{"oneOf":[{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"const":"file","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"string"},"type":{"const":"symlink","type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"},{"additionalProperties":false,"properties":{"mode":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"path":{"type":"string"},"sha256":{"type":"null"},"size":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"symlink_target":{"type":"null"},"type":{"enum":["directory","other"],"type":"string"}},"required":["path","mode","size","type","sha256","symlink_target"],"type":"object"}]},"path":{"type":"string"},"status":{"enum":["modified","unchanged"],"type":"string"}},"required":["path","status","before","after"],"type":"object"}]},"type":"array"},"frames":{"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"data":{"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","at_ms","data"],"type":"object"},"type":"array"},"interaction_events":{"items":{"additionalProperties":false,"properties":{"data":{"type":"string"},"dispatched_at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outcome":{"enum":["dispatched","target_exited","failed"],"type":"string"},"scheduled_at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"type":{"enum":["input","resize","stdin_close","signal"],"type":"string"}},"required":["sequence","scheduled_at_ms","dispatched_at_ms","type","data","outcome"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"manifest":{"additionalProperties":false,"properties":{"architecture":{"minLength":1,"type":"string"},"comparison_contract":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"comparison_contract_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"completed_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"},"executable_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"full_scenario_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"normalization_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"platform":{"minLength":1,"type":"string"},"provider_version":{"minLength":1,"type":"string"},"pty_backend":{"const":"node-pty","type":"string"},"rea_version":{"minLength":1,"type":"string"},"replay_plan":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"replay_plan_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scenario":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"},"shim_plan":{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},"shim_plan_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"started_at":{"format":"date-time","pattern":"^(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))T(?:(?:[01]\\\\d|2[0-3]):[0-5]\\\\d(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?(?:Z))$","type":"string"}},"required":["rea_version","provider_version","platform","architecture","pty_backend","started_at","completed_at","scenario","comparison_contract","shim_plan","replay_plan","full_scenario_sha256","comparison_contract_sha256","executable_sha256","normalization_sha256","shim_plan_sha256","replay_plan_sha256"],"type":"object"},"normalization":{"additionalProperties":false,"properties":{"paths":{"type":"boolean"},"patterns":{"items":{"additionalProperties":false,"properties":{"pattern":{"maxLength":500,"type":"string"},"replacement":{"maxLength":100,"type":"string"}},"required":["pattern","replacement"],"type":"object"},"type":"array"},"pids":{"type":"boolean"},"ports":{"type":"boolean"},"time_bucket_ms":{"exclusiveMinimum":0,"maximum":60000,"type":"integer"}},"required":["paths","pids","ports","time_bucket_ms","patterns"],"type":"object"},"process_samples":{"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"command":{"type":"string"},"parent_pid":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"pid":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"process_group_id":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}]},"session_id":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["at_ms","pid","parent_pid","command","process_group_id","session_id"],"type":"object"},"type":"array"},"protocol_events":{"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"data":{"type":"string"},"direction":{"enum":["request","response","received","sent"],"type":"string"},"method":{"anyOf":[{"type":"string"},{"type":"null"}]},"outcome":{"enum":["matched","unmatched","script_exhausted","disconnected","invalid_state","guard_failed","transition_exhausted","invalid_capture","unexpected_reconnect","limit_exhausted"],"type":"string"},"path":{"anyOf":[{"type":"string"},{"type":"null"}]},"protocol":{"enum":["http","websocket"],"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","at_ms","protocol","direction","method","path","data","outcome"],"type":"object"},"type":"array"},"reactive_run":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"active_state":{"maxLength":64,"minLength":1,"type":"string"},"controls":{"default":[],"items":{"additionalProperties":false,"properties":{"after_capture_order":{"maximum":9007199254740991,"minimum":-1,"type":"integer"},"kind":{"enum":["state_deadline","scenario_deadline","target_lost","cancelled","cleanup_failed"],"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","kind","after_capture_order"],"type":"object"},"type":"array"},"outcome":{"type":"null"},"status":{"const":"running","type":"string"},"transitions":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"action_event_ids":{"items":{"minLength":1,"type":"string"},"maxItems":16,"type":"array"},"action_types":{"items":{"enum":["send_input","resize","close_stdin","send_signal","checkpoint"],"type":"string"},"maxItems":16,"type":"array"},"outcome":{"type":"null"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state_after":{"maxLength":64,"minLength":1,"type":"string"},"state_before":{"maxLength":64,"minLength":1,"type":"string"},"transition_id":{"maxLength":64,"minLength":1,"type":"string"},"trigger_event_ids":{"items":{"minLength":1,"type":"string"},"maxItems":64,"type":"array"}},"required":["sequence","transition_id","state_before","trigger_event_ids","action_event_ids","action_types","state_after","outcome"],"type":"object"},{"additionalProperties":false,"properties":{"action_event_ids":{"items":{"minLength":1,"type":"string"},"maxItems":16,"type":"array"},"action_types":{"items":{"enum":["send_input","resize","close_stdin","send_signal","checkpoint"],"type":"string"},"maxItems":16,"type":"array"},"outcome":{"const":"passed","type":"string"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state_after":{"type":"null"},"state_before":{"maxLength":64,"minLength":1,"type":"string"},"transition_id":{"maxLength":64,"minLength":1,"type":"string"},"trigger_event_ids":{"items":{"minLength":1,"type":"string"},"maxItems":64,"type":"array"}},"required":["sequence","transition_id","state_before","trigger_event_ids","action_event_ids","action_types","state_after","outcome"],"type":"object"}]},"maxItems":128,"type":"array"}},"required":["status","outcome","active_state","controls","transitions"],"type":"object"},{"additionalProperties":false,"properties":{"active_state":{"maxLength":64,"minLength":1,"type":"string"},"controls":{"default":[],"items":{"additionalProperties":false,"properties":{"after_capture_order":{"maximum":9007199254740991,"minimum":-1,"type":"integer"},"kind":{"enum":["state_deadline","scenario_deadline","target_lost","cancelled","cleanup_failed"],"type":"string"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["sequence","kind","after_capture_order"],"type":"object"},"type":"array"},"outcome":{"enum":["passed","predicate_timeout","scenario_deadline","ambiguous_match","action_rejected","target_lost","capture_incomplete","cancelled","cleanup_failed"],"type":"string"},"status":{"const":"finished","type":"string"},"transitions":{"items":{"anyOf":[{"additionalProperties":false,"properties":{"action_event_ids":{"items":{"minLength":1,"type":"string"},"maxItems":16,"type":"array"},"action_types":{"items":{"enum":["send_input","resize","close_stdin","send_signal","checkpoint"],"type":"string"},"maxItems":16,"type":"array"},"outcome":{"type":"null"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state_after":{"maxLength":64,"minLength":1,"type":"string"},"state_before":{"maxLength":64,"minLength":1,"type":"string"},"transition_id":{"maxLength":64,"minLength":1,"type":"string"},"trigger_event_ids":{"items":{"minLength":1,"type":"string"},"maxItems":64,"type":"array"}},"required":["sequence","transition_id","state_before","trigger_event_ids","action_event_ids","action_types","state_after","outcome"],"type":"object"},{"additionalProperties":false,"properties":{"action_event_ids":{"items":{"minLength":1,"type":"string"},"maxItems":16,"type":"array"},"action_types":{"items":{"enum":["send_input","resize","close_stdin","send_signal","checkpoint"],"type":"string"},"maxItems":16,"type":"array"},"outcome":{"const":"passed","type":"string"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state_after":{"type":"null"},"state_before":{"maxLength":64,"minLength":1,"type":"string"},"transition_id":{"maxLength":64,"minLength":1,"type":"string"},"trigger_event_ids":{"items":{"minLength":1,"type":"string"},"maxItems":64,"type":"array"}},"required":["sequence","transition_id","state_before","trigger_event_ids","action_event_ids","action_types","state_after","outcome"],"type":"object"}]},"maxItems":128,"type":"array"}},"required":["status","outcome","active_state","controls","transitions"],"type":"object"}]},{"type":"null"}],"default":null},"rendered_frames":{"items":{"additionalProperties":false,"properties":{"active_buffer":{"enum":["normal","alternate"],"type":"string"},"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"columns":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"cursor_x":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"cursor_y":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"lines":{"items":{"type":"string"},"type":"array"},"rows":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"serialized_state":{"type":"string"}},"required":["sequence","at_ms","columns","rows","cursor_x","cursor_y","active_buffer","lines","serialized_state"],"type":"object"},"type":"array"},"replay_transitions":{"default":[],"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sensitive_aliases":{"items":{"maxLength":64,"minLength":1,"type":"string"},"maxItems":32,"type":"array"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state_after":{"maxLength":64,"minLength":1,"type":"string"},"state_before":{"maxLength":64,"minLength":1,"type":"string"},"transition_id":{"maxLength":64,"minLength":1,"type":"string"}},"required":["sequence","at_ms","transition_id","state_before","state_after","sensitive_aliases"],"type":"object"},"type":"array"},"residual_unknowns":{"items":{"additionalProperties":false,"properties":{"reason":{"type":"string"},"scope":{"enum":["terminal","interaction","exit","process","filesystem","protocol","shim","cleanup","network"],"type":"string"}},"required":["scope","reason"],"type":"object"},"type":"array"},"schema_version":{"const":4,"type":"number"},"settlement":{"oneOf":[{"additionalProperties":false,"properties":{"cleanup_outcome":{"const":"not_required","type":"string"},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"const":"quiesced","type":"string"}},"required":["state","elapsed_ms","cleanup_outcome"],"type":"object"},{"additionalProperties":false,"properties":{"cleanup_outcome":{"enum":["cleaned","failed"],"type":"string"},"elapsed_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state":{"enum":["alive_at_deadline","unverifiable"],"type":"string"}},"required":["state","elapsed_ms","cleanup_outcome"],"type":"object"}]},"shim_events":{"items":{"additionalProperties":false,"properties":{"arguments":{"items":{"type":"string"},"type":"array"},"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"command":{"type":"string"},"outcome":{"enum":["matched","unmatched","exhausted"],"type":"string"},"route_index":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"working_directory":{"type":"string"}},"required":["sequence","at_ms","command","route_index","arguments","working_directory","outcome"],"type":"object"},"type":"array"},"truncated":{"type":"boolean"}},"required":["schema_version","manifest","normalization","frames","rendered_frames","interaction_events","exit","settlement","process_samples","filesystem_checkpoints","shim_events","protocol_events","replay_transitions","reactive_run","event_journal","files_before","files_after","filesystem_effects","truncated","limitations","residual_unknowns","cleanup"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Capture Process Scenario"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two compatible Process Capture v4 observations across terminal, interaction, lifecycle, process, filesystem, command-shim, HTTP, and WebSocket evidence. Optional trace_spec validates exact events against an explicit partial order or finite trace language; concurrency is never inferred from timestamps or broad sorting. Missing, journal-free, or truncated observations are never treated as equivalent.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"left_evidence_id":"ev_0000000000000000000000000000000000000000000000000000000000000000","right_evidence_id":"ev_1111111111111111111111111111111111111111111111111111111111111111"}],"properties":{"left_evidence_id":{"description":"Exact Evidence v2 identifier for the left observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"max_capture_age_ms":{"description":"Maximum permitted capture age ms for this operation.","maximum":9007199254740991,"minimum":0,"type":"integer"},"right_evidence_id":{"description":"Exact Evidence v2 identifier for the right observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"trace_spec":{"additionalProperties":false,"description":"Value for trace spec.","properties":{"events":{"description":"Value for events.","items":{"additionalProperties":false,"properties":{"cardinality":{"default":{"kind":"required"},"description":"Value for cardinality.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"required","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"optional","description":"Value for kind.","type":"string"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"count":{"description":"Value for count.","maximum":10000,"minimum":0,"type":"integer"},"kind":{"const":"exact","description":"Value for kind.","type":"string"}},"required":["kind","count"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"range","description":"Value for kind.","type":"string"},"max":{"description":"Value for max.","maximum":10000,"minimum":0,"type":"integer"},"min":{"description":"Value for min.","maximum":10000,"minimum":0,"type":"integer"}},"required":["kind","min","max"],"type":"object"}]},"exact":{"$ref":"#/$defs/__schema0","description":"Value for exact."},"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"ignore_fields":{"description":"Value for ignore fields.","items":{"enum":["sequence","at_ms","scheduled_at_ms","dispatched_at_ms","elapsed_ms"],"type":"string"},"maxItems":5,"type":"array"},"source":{"description":"Value for source.","enum":["terminal_raw","terminal_rendered","interaction","lifecycle","process","filesystem","http","websocket","shim","replay_transition"],"type":"string"}},"required":["id","source","exact"],"type":"object"},"maxItems":256,"minItems":1,"type":"array"},"language":{"description":"Value for language.","oneOf":[{"additionalProperties":false,"properties":{"happens_before":{"default":[],"description":"Value for happens before.","items":{"additionalProperties":false,"properties":{"after":{"description":"The later or right-hand observation to compare.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"before":{"description":"The earlier or left-hand observation to compare.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["before","after"],"type":"object"},"maxItems":4096,"type":"array"},"kind":{"const":"partial_order","description":"Value for kind.","type":"string"},"not_before":{"default":[],"description":"Value for not before.","items":{"additionalProperties":false,"properties":{"anchor":{"description":"Value for anchor.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"event":{"description":"Value for event.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"}},"required":["event","anchor"],"type":"object"},"maxItems":4096,"type":"array"},"prefix":{"default":[],"description":"Value for prefix.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"maxItems":4096,"type":"array"},"suffix":{"default":[],"description":"Value for suffix.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"maxItems":4096,"type":"array"},"unordered_groups":{"default":[],"description":"Value for unordered groups.","items":{"additionalProperties":false,"properties":{"events":{"description":"Value for events.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"maxItems":256,"minItems":2,"type":"array"}},"required":["events"],"type":"object"},"maxItems":256,"type":"array"}},"required":["kind"],"type":"object"},{"additionalProperties":false,"properties":{"kind":{"const":"finite_traces","description":"Value for kind.","type":"string"},"variants":{"description":"Value for variants.","items":{"additionalProperties":false,"properties":{"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"trace":{"description":"Value for trace.","items":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},{"additionalProperties":false,"properties":{"unordered":{"description":"Value for unordered.","items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"maxItems":256,"minItems":2,"type":"array"}},"required":["unordered"],"type":"object"}]},"maxItems":4096,"type":"array"}},"required":["id","trace"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"}},"required":["kind","variants"],"type":"object"}]},"version":{"const":1,"description":"Value for version.","type":"number"}},"required":["version","events","language"],"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record capture disagreement durably","type":"boolean"}},"required":["left_evidence_id","right_evidence_id"],"type":"object"},"kind":"session","name":"compare_process_captures","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"exit":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"filesystem":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"first_divergence":{"oneOf":[{"additionalProperties":false,"properties":{"status":{"const":"none","type":"string"}},"required":["status"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"status":{"const":"unknown","type":"string"}},"required":["status","reason"],"type":"object"},{"additionalProperties":false,"properties":{"dimension":{"enum":["terminal","interaction","exit","filesystem","protocol","process","shim"],"type":"string"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"left":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"left_at_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"right":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}]},"right_at_ms":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"status":{"const":"found","type":"string"}},"required":["status","dimension","index","left_at_ms","right_at_ms","left","right"],"type":"object"}]},"interaction":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"process":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"protocol":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"shim":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"terminal":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"trace":{"additionalProperties":false,"properties":{"diagnostic":{"anyOf":[{"additionalProperties":false,"properties":{"event_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"type":"array"},"kind":{"enum":["journal","predicate","cardinality","edge","prefix","suffix","trace"],"type":"string"},"locations":{"items":{"additionalProperties":false,"properties":{"capture_order":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"collection":{"enum":["frames","rendered_frames","interaction_events","lifecycle","process_samples","filesystem_checkpoints","shim_events","protocol_events","replay_transitions"],"type":"string"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["collection","index","capture_order"],"type":"object"},"type":"array"},"message":{"type":"string"},"side":{"enum":["left","right"],"type":"string"}},"required":["kind","side","message","event_ids","locations"],"type":"object"},{"type":"null"}]},"left":{"additionalProperties":false,"properties":{"matched_variant":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},{"type":"null"}]},"raw_trace":{"items":{"additionalProperties":false,"properties":{"event_id":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"location":{"additionalProperties":false,"properties":{"capture_order":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"collection":{"enum":["frames","rendered_frames","interaction_events","lifecycle","process_samples","filesystem_checkpoints","shim_events","protocol_events","replay_transitions"],"type":"string"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["collection","index","capture_order"],"type":"object"}},"required":["event_id","location"],"type":"object"},"type":"array"},"satisfied_constraints":{"items":{"type":"string"},"type":"array"},"status":{"enum":["pass","fail","unknown"],"type":"string"}},"required":["status","matched_variant","satisfied_constraints","raw_trace"],"type":"object"},"right":{"additionalProperties":false,"properties":{"matched_variant":{"anyOf":[{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},{"type":"null"}]},"raw_trace":{"items":{"additionalProperties":false,"properties":{"event_id":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,63}$","type":"string"},"location":{"additionalProperties":false,"properties":{"capture_order":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"collection":{"enum":["frames","rendered_frames","interaction_events","lifecycle","process_samples","filesystem_checkpoints","shim_events","protocol_events","replay_transitions"],"type":"string"},"index":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["collection","index","capture_order"],"type":"object"}},"required":["event_id","location"],"type":"object"},"type":"array"},"satisfied_constraints":{"items":{"type":"string"},"type":"array"},"status":{"enum":["pass","fail","unknown"],"type":"string"}},"required":["status","matched_variant","satisfied_constraints","raw_trace"],"type":"object"},"verdict":{"enum":["equivalent","different","nonconforming","unknown"],"type":"string"}},"required":["verdict","left","right","diagnostic"],"type":"object"}},"required":["status","terminal","interaction","exit","filesystem","protocol","process","shim","first_divergence","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Compare Process Captures"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two bounded sets of inventory_artifact Evidence pages by logical occurrence path, content identity, metadata, and graph relations. Pages must share and satisfy their graph commitment; every delta cites both sets, and gaps yield truncated or unknown, never equivalence.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"left_evidence_ids":["ev_b74d3ff6cdf54af4e4f3dab00965780cb5ef2b375188c75c1980d0998c5a05a4"],"limit":100,"offset":0,"right_evidence_ids":["ev_74ecec364f3987b332db851177d2117a89d49df4ba89ab5d87299940092d7bb4"]}],"properties":{"left_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the left observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"right_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the right observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record incomplete or differing evidence","type":"boolean"}},"required":["left_evidence_ids","right_evidence_ids"],"type":"object"},"kind":"session","name":"compare_artifacts","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"changes":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"classification":{"enum":["added","removed","changed","unknown","contradiction"],"type":"string"},"dimensions":{"items":{"enum":["content","kind","format","size","executable","relations","metadata","availability","integrity"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":200,"minItems":2,"type":"array"},"left_artifact_id":{"anyOf":[{"pattern":"^art_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"left_occurrence_id":{"anyOf":[{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"logical_path":{"maxLength":4096,"minLength":1,"type":"string"},"right_artifact_id":{"anyOf":[{"pattern":"^art_[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"right_occurrence_id":{"anyOf":[{"pattern":"^occ_[a-f0-9]{64}$","type":"string"},{"type":"null"}]}},"required":["classification","logical_path","dimensions","left_occurrence_id","right_occurrence_id","left_artifact_id","right_artifact_id","evidence_links"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"left_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"right_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"contradiction":{"default":0,"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unchanged","added","removed","changed","unknown","contradiction"],"type":"object"}},"required":["status","left_manifest_id","right_manifest_id","summary","changes","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Compare Artifacts"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two explicit bounded sets of analyze_function Evidence pages across identity, exact provider text, calls, references, strings, and address-normalized CFG topology. Missing or provider-incompatible facets remain truncated or unknown; every conclusion cites both Evidence sets.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"left_evidence_ids":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e"],"limit":100,"offset":0,"right_evidence_ids":["ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"]}],"properties":{"left_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the left observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"right_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the right observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["left_evidence_ids","right_evidence_ids"],"type":"object"},"kind":"session","name":"compare_functions","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"changes":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"conclusion_kind":{"enum":["derived_relationship","contradiction","unresolved_branch"],"type":"string"},"dimension":{"enum":["identity","pseudocode","assembly","comments","calls","references","strings_names","cfg"],"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":200,"minItems":2,"type":"array"},"left_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"left_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"limitations":{"items":{"type":"string"},"type":"array"},"right_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"right_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown"],"type":"string"},"text_delta":{"anyOf":[{"additionalProperties":false,"properties":{"added_lines":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"hunks":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed_lines":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["added_lines","removed_lines","hunks"],"type":"object"},{"type":"null"}]}},"required":["dimension","status","left_digest","right_digest","left_count","right_count","text_delta","conclusion_kind","evidence_links","limitations"],"type":"object"},"maxItems":100,"type":"array"},"limit":{"maximum":100,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"dimensions":{"items":{"additionalProperties":false,"properties":{"conclusion_kind":{"enum":["derived_relationship","contradiction","unresolved_branch"],"type":"string"},"dimension":{"enum":["identity","pseudocode","assembly","comments","calls","references","strings_names","cfg"],"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":200,"minItems":2,"type":"array"},"left_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"left_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"limitations":{"items":{"type":"string"},"type":"array"},"right_count":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"right_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown"],"type":"string"},"text_delta":{"anyOf":[{"additionalProperties":false,"properties":{"added_lines":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"hunks":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"removed_lines":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["added_lines","removed_lines","hunks"],"type":"object"},{"type":"null"}]}},"required":["dimension","status","left_digest","right_digest","left_count","right_count","text_delta","conclusion_kind","evidence_links","limitations"],"type":"object"},"maxItems":8,"minItems":8,"type":"array"},"function_match":{"additionalProperties":false,"properties":{"left_name":{"type":"string"},"method":{"enum":["explicit","symbol"],"type":"string"},"right_name":{"type":"string"},"status":{"enum":["matched","mismatched","ambiguous","unknown"],"type":"string"}},"required":["status","method","left_name","right_name"],"type":"object"},"left_subject_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"right_subject_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"truncated":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["unchanged","changed","truncated","unknown"],"type":"object"}},"required":["status","function_match","left_subject_sha256","right_subject_sha256","summary","dimensions","changes","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Compare Functions"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compare two canonical Evidence v2 bundles by exact record membership, explicit one-to-one observation pairs, and complete residual-unknown revision histories. Missing bundle members describe omission only, never behavioral equivalence; output is digest-anchored and deterministically paginated.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"left_bundle_path":"/approved/left-evidence.json","limit":100,"offset":0,"record_pairs":[],"right_bundle_path":"/approved/right-evidence.json"}],"properties":{"left_bundle_path":{"description":"Local filesystem path for left bundle.","maxLength":4096,"minLength":1,"type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"record_pairs":{"default":[],"description":"Value for record pairs.","items":{"properties":{"left_evidence_id":{"description":"Exact Evidence v2 identifier for the left observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"right_evidence_id":{"description":"Exact Evidence v2 identifier for the right observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"}},"required":["left_evidence_id","right_evidence_id"],"type":"object"},"maxItems":500,"type":"array"},"right_bundle_path":{"description":"Local filesystem path for right bundle.","maxLength":4096,"minLength":1,"type":"string"}},"required":["left_bundle_path","right_bundle_path"],"type":"object"},"kind":"session","name":"compare_bundles","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"changes":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"classification":{"enum":["added","removed","changed","unknown","history_advanced","history_diverged"],"type":"string"},"conclusion_kind":{"enum":["observed_change","contradiction","unresolved_branch"],"type":"string"},"entity":{"enum":["evidence","residual_unknown"],"type":"string"},"key":{"minLength":1,"type":"string"},"left_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"left_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"right_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"right_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"}},"required":["entity","key","classification","conclusion_kind","left_evidence_ids","right_evidence_ids","left_digest","right_digest","limitations"],"type":"object"},"maxItems":500,"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"left_bundle_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"right_bundle_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"status":{"enum":["unchanged","changed","unknown"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"records_added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"records_changed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"records_removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"records_unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_added":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_advanced":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_diverged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_removed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unknowns_unchanged":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["records_unchanged","records_added","records_removed","records_changed","unknowns_unchanged","unknowns_added","unknowns_removed","unknowns_advanced","unknowns_diverged","unresolved"],"type":"object"}},"required":["status","left_bundle_sha256","right_bundle_sha256","summary","changes","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Compare Bundles"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Aggregate validated comparison Evidence, or automatically run and resume a persistent cross-version artifact investigation beneath an approved evidence root. Runtime observations remain distinct from static behavior candidates; missing or incomplete comparisons produce unresolved findings, never causal claims.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"comparisons":[{"authority":"analyst-inference","confidence":"derived","environment":null,"evidence_id":"ev_68c195e7d5d8688f3eb0764a9a868355fcc6f8810fc9ada1a0c8579c21ea2bf8","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"changes":{"items":[{"conclusion_kind":"derived_relationship","dimension":"pseudocode","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":9,"left_digest":"64abdfe133a114158fa0e185d0edec784e6ccf13a166a0fed8bc18bb0cc72554","limitations":[],"right_count":9,"right_digest":"c8e26d77640903b2d4c765ebcb7f7170b64dd320dd3911abbe8346e07cd593d1","status":"changed","text_delta":{"added_lines":1,"hunks":2,"removed_lines":1}},{"conclusion_kind":"unresolved_branch","dimension":"assembly","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":null,"limitations":["Assembly is opaque provider text; relocation normalization is unavailable."],"right_count":0,"right_digest":null,"status":"unknown","text_delta":null}],"limit":100,"next_offset":null,"offset":0,"total":2},"dimensions":[{"conclusion_kind":"derived_relationship","dimension":"identity","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":null,"left_digest":"dd190a914de1bdf8f4bba97a2e74b439585874c567f28eb0ff41bc5388c66d65","limitations":[],"right_count":null,"right_digest":"dd190a914de1bdf8f4bba97a2e74b439585874c567f28eb0ff41bc5388c66d65","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"pseudocode","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":9,"left_digest":"64abdfe133a114158fa0e185d0edec784e6ccf13a166a0fed8bc18bb0cc72554","limitations":[],"right_count":9,"right_digest":"c8e26d77640903b2d4c765ebcb7f7170b64dd320dd3911abbe8346e07cd593d1","status":"changed","text_delta":{"added_lines":1,"hunks":2,"removed_lines":1}},{"conclusion_kind":"unresolved_branch","dimension":"assembly","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":null,"limitations":["Assembly is opaque provider text; relocation normalization is unavailable."],"right_count":0,"right_digest":null,"status":"unknown","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"comments","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"calls","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"references","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"strings_names","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"cfg","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":1,"left_digest":"e947121f0d4cb8d2a2468a75a44872a29aa1239e6401712df80cfa36bf7df7a0","limitations":[],"right_count":1,"right_digest":"e947121f0d4cb8d2a2468a75a44872a29aa1239e6401712df80cfa36bf7df7a0","status":"unchanged","text_delta":null}],"function_match":{"left_name":"main","method":"symbol","right_name":"main","status":"matched"},"left_subject_sha256":"0000000000000000000000000000000000000000000000000000000000000000","limitations":[],"right_subject_sha256":"1111111111111111111111111111111111111111111111111111111111111111","status":"unknown","summary":{"changed":1,"truncated":0,"unchanged":6,"unknown":1}},"operation":"compare_functions","parameters":{"left_evidence_ids":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e"],"limit":100,"offset":0,"right_evidence_ids":["ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"]},"predicate_type":"rea.function-comparison/v1","provider":{"id":"rea-function-comparison","name":"REA function comparison","version":"1"},"raw_result":null,"schema_version":2,"subject":null}],"limit":100,"offset":0}],"properties":{"comparisons":{"default":[],"description":"Validated comparison Evidence records to aggregate.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":100,"type":"array"},"investigation_run":{"anyOf":[{"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"expected_workspace_revision":{"description":"Expected workspace revision used to reject stale or mismatched input.","maximum":9007199254740991,"minimum":1,"type":"integer"},"integrity_continue_approved":{"const":false,"default":false,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"fail","default":"fail","description":"Value for integrity policy.","type":"string"},"left_path":{"description":"Local filesystem path for left.","maxLength":4096,"minLength":1,"type":"string"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"options":{"default":{"change_limit":500,"max_compression_ratio":1000,"max_depth":20,"max_entries":10000,"max_entry_bytes":268435456,"max_path_bytes":4096,"max_total_bytes":1073741824,"page_size":500},"description":"Value for options.","properties":{"change_limit":{"default":500,"description":"Maximum number of change entries to return.","maximum":500,"minimum":1,"type":"integer"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":500,"description":"Value for page size.","maximum":500,"minimum":1,"type":"integer"}},"type":"object"},"replay_run_id":{"description":"Value for replay run id.","pattern":"^run_[a-f0-9]{64}$","type":"string"},"right_path":{"description":"Local filesystem path for right.","maxLength":4096,"minLength":1,"type":"string"},"workspace_name":{"default":"default","description":"Value for workspace name.","maxLength":200,"minLength":1,"type":"string"},"workspace_path":{"description":"Approved local path of the persistent investigation workspace.","maxLength":4096,"minLength":1,"type":"string"}},"required":["approved","workspace_path","left_path","right_path"],"type":"object"},{"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"expected_workspace_revision":{"description":"Expected workspace revision used to reject stale or mismatched input.","maximum":9007199254740991,"minimum":1,"type":"integer"},"integrity_continue_approved":{"const":true,"description":"Explicit operator approval for integrity continue.","type":"boolean"},"integrity_policy":{"const":"record-and-continue","description":"Value for integrity policy.","type":"string"},"left_path":{"description":"Local filesystem path for left.","maxLength":4096,"minLength":1,"type":"string"},"max_integrity_mismatches":{"default":10,"description":"Maximum permitted integrity mismatches for this operation.","maximum":100,"minimum":1,"type":"integer"},"options":{"default":{"change_limit":500,"max_compression_ratio":1000,"max_depth":20,"max_entries":10000,"max_entry_bytes":268435456,"max_path_bytes":4096,"max_total_bytes":1073741824,"page_size":500},"description":"Value for options.","properties":{"change_limit":{"default":500,"description":"Maximum number of change entries to return.","maximum":500,"minimum":1,"type":"integer"},"max_compression_ratio":{"default":1000,"description":"Maximum permitted compression ratio for this operation.","maximum":100000,"minimum":1,"type":"number"},"max_depth":{"default":20,"description":"Maximum permitted depth for this operation.","maximum":100,"minimum":0,"type":"integer"},"max_entries":{"default":10000,"description":"Maximum permitted entries for this operation.","maximum":50000,"minimum":1,"type":"integer"},"max_entry_bytes":{"default":268435456,"description":"Maximum permitted entry bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"max_path_bytes":{"default":4096,"description":"Maximum permitted path bytes for this operation.","maximum":65535,"minimum":1,"type":"integer"},"max_total_bytes":{"default":1073741824,"description":"Maximum permitted total bytes for this operation.","maximum":9007199254740991,"minimum":1,"type":"integer"},"page_size":{"default":500,"description":"Value for page size.","maximum":500,"minimum":1,"type":"integer"}},"type":"object"},"replay_run_id":{"description":"Value for replay run id.","pattern":"^run_[a-f0-9]{64}$","type":"string"},"right_path":{"description":"Local filesystem path for right.","maxLength":4096,"minLength":1,"type":"string"},"workspace_name":{"default":"default","description":"Value for workspace name.","maxLength":200,"minLength":1,"type":"string"},"workspace_path":{"description":"Approved local path of the persistent investigation workspace.","maxLength":4096,"minLength":1,"type":"string"}},"required":["approved","workspace_path","left_path","right_path","integrity_policy","integrity_continue_approved"],"type":"object"}],"description":"Value for investigation run."},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"type":"object"},"kind":"session","name":"find_changed_behavior","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"behavior_status":{"enum":["observed_changed","observed_unchanged","unknown","truncated"],"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":20100,"minItems":3,"type":"array"},"findings":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"classification":{"enum":["observed_change","derived_relationship","contradiction","unresolved_branch"],"type":"string"},"dimension":{"minLength":1,"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":201,"minItems":3,"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"scope":{"enum":["runtime","protocol","resource","static_candidate"],"type":"string"},"source_comparison_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"}},"required":["scope","dimension","classification","status","source_comparison_id","evidence_links","limitations"],"type":"object"},"maxItems":100,"type":"array"},"limit":{"maximum":100,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"investigation_run":{"additionalProperties":false,"properties":{"comparison_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"inventory_evidence_count":{"maximum":200,"minimum":2,"type":"integer"},"left_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"limitations":{"items":{"maxLength":4096,"type":"string"},"maxItems":100,"type":"array"},"right_manifest_id":{"pattern":"^agm_[a-f0-9]{64}$","type":"string"},"run_id":{"pattern":"^run_[a-f0-9]{64}$","type":"string"},"schema_version":{"const":1,"type":"number"},"workspace_id":{"pattern":"^ws_[a-f0-9]{64}$","type":"string"}},"required":["schema_version","workspace_id","run_id","left_manifest_id","right_manifest_id","inventory_evidence_count","comparison_evidence_id","limitations"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"summary":{"additionalProperties":false,"properties":{"contradictions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"observed_changes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"static_candidates":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["observed_changes","static_candidates","contradictions","unresolved"],"type":"object"}},"required":["behavior_status","summary","findings","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Find Changed Behavior"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Build bounded shortest-first direct-callee paths from explicit analyze_function Evidence groups using exact canonical addresses. Missing dossiers, incomplete callee pages, provider mixing, and depth frontiers remain unknown; every node and edge cites source Evidence.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"functions":[{"authority":"shipped-artifact","confidence":"derived","environment":null,"evidence_id":"ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","evidence_links":[],"limitations":[],"locations":[],"normalized_result":{"assembly":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"basic_blocks":{"items":[{"end":"0x1001","start":"0x1000","successors":[]}],"next_offset":null,"returned":1,"total":1,"truncated":false},"callees":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"callers":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"comments":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"incoming_references":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"instruction_scan":{"scanned":1,"truncated":false},"outgoing_references":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"procedure":{"address":"0x1000","locals":[],"name":"main","signature":"int main(void)"},"pseudocode":{"next_offset":null,"returned_chars":9,"text":"return 0;","total_chars":9,"truncated":false},"referenced_names":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false},"referenced_strings":{"items":[],"next_offset":null,"returned":0,"total":0,"truncated":false}},"operation":"analyze_function","parameters":{"assembly_offset":0,"collection_offset":{"basic_blocks":0,"callees":0,"callers":0,"comments":0,"incoming_references":0,"outgoing_references":0,"referenced_names":0,"referenced_strings":0},"include_assembly":false,"limit":100,"max_instructions":500,"max_pseudocode_chars":20000,"procedure":"main","pseudocode_offset":0},"predicate_type":"rea.analysis/v2","provider":{"id":"rea-workflow","name":"REA composed investigation workflow","version":"1"},"raw_result":null,"schema_version":2,"subject":{"architecture":null,"digest":{"sha256":"0000000000000000000000000000000000000000000000000000000000000000"},"format":"mach-o","local_path":"/tmp/function-0","name":"function-0"}}],"goal":{"address":"0x1000"},"limit":100,"max_depth":8,"max_paths":10,"offset":0,"start":{"address":"0x1000"}}],"properties":{"functions":{"description":"Value for functions.","items":{"anyOf":[{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},{"items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"}]},"maxItems":500,"minItems":1,"type":"array"},"goal":{"additionalProperties":false,"description":"Value for goal.","properties":{"address":{"description":"Value for address.","pattern":"^0[xX][0-9a-fA-F]+$","type":"string"}},"required":["address"],"type":"object"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"max_depth":{"default":8,"description":"Maximum permitted depth for this operation.","maximum":32,"minimum":0,"type":"integer"},"max_paths":{"default":10,"description":"Maximum permitted paths for this operation.","maximum":100,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"start":{"additionalProperties":false,"description":"Value for start.","properties":{"address":{"description":"Value for address.","pattern":"^0[xX][0-9a-fA-F]+$","type":"string"}},"required":["address"],"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["functions","start","goal"],"type":"object"},"kind":"session","name":"build_call_path","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":50000,"minItems":1,"type":"array"},"explored":{"additionalProperties":false,"properties":{"depth_reached":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"edges":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nodes":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["nodes","edges","depth_reached"],"type":"object"},"goal":{"pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$","type":"string"},"limitations":{"items":{"type":"string"},"type":"array"},"paths":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"edges":{"items":{"additionalProperties":false,"properties":{"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"source":{"pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$","type":"string"},"target":{"pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$","type":"string"}},"required":["source","target","evidence_links"],"type":"object"},"maxItems":32,"type":"array"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":3300,"minItems":1,"type":"array"},"hops":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"nodes":{"items":{"additionalProperties":false,"properties":{"address":{"pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["address","name","evidence_links"],"type":"object"},"maxItems":33,"minItems":1,"type":"array"}},"required":["hops","nodes","edges","evidence_links"],"type":"object"},"maxItems":100,"type":"array"},"limit":{"maximum":100,"minimum":1,"type":"integer"},"lower_bound":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"returned":{"maximum":100,"minimum":0,"type":"integer"},"total":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"truncated":{"type":"boolean"}},"required":["items","offset","limit","total","returned","truncated","lower_bound","next_offset"],"type":"object"},"search_scope":{"additionalProperties":false,"properties":{"exhaustive":{"type":"boolean"},"max_depth":{"maximum":32,"minimum":0,"type":"integer"},"max_paths":{"maximum":100,"minimum":1,"type":"integer"}},"required":["max_depth","max_paths","exhaustive"],"type":"object"},"shortest_hops":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"start":{"pattern":"^0x(?:0|[1-9a-f][0-9a-f]*)$","type":"string"},"status":{"enum":["found","not_found","unknown","truncated"],"type":"string"}},"required":["status","start","goal","shortest_hops","search_scope","explored","paths","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Build Call Path"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Evaluate explicit caller-declared hypotheses between exact static comparison findings and runtime comparison dimensions. Similar names or paths are never auto-matched, consistent cochange never proves causality, and unknown or truncated inputs remain unresolved.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"limit":100,"mappings":[{"hypothesis":{"expected_pattern":"static_only","statement":"Static implementation changed without terminal change."},"runtime":{"comparison_evidence_id":"ev_2ffc472e561cea4b5e65ddaf7b80bc112b7ed6d0d023f0cf7398bc2068a12e2d","dimension":"terminal"},"side_alignment":"left_to_left","static":{"comparison_evidence_id":"ev_68c195e7d5d8688f3eb0764a9a868355fcc6f8810fc9ada1a0c8579c21ea2bf8","selector":{"dimension":"pseudocode","kind":"function"}}}],"offset":0,"runtime_comparisons":[{"authority":"analyst-inference","confidence":"derived","environment":null,"evidence_id":"ev_2ffc472e561cea4b5e65ddaf7b80bc112b7ed6d0d023f0cf7398bc2068a12e2d","evidence_links":["ev_0014950a3b67b96d5d182a51c5a271959828fe6a91db55fc507dd5a9c2a5ecaf","ev_5d45bc669ea10694f3bdf3b325e2048844da96a621b717ad252d667af53df590"],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"exit":"unchanged","filesystem":"unchanged","first_divergence":{"status":"none"},"interaction":"unchanged","limitations":[],"process":"unchanged","protocol":"unchanged","shim":"unchanged","status":"unchanged","terminal":"unchanged"},"operation":"compare_process_captures","parameters":{"left_evidence_id":"ev_0014950a3b67b96d5d182a51c5a271959828fe6a91db55fc507dd5a9c2a5ecaf","left_normalization":{"paths":true,"patterns":[],"pids":true,"ports":true,"time_bucket_ms":10},"right_evidence_id":"ev_5d45bc669ea10694f3bdf3b325e2048844da96a621b717ad252d667af53df590","right_normalization":{"paths":true,"patterns":[],"pids":true,"ports":true,"time_bucket_ms":10}},"predicate_type":"rea.process-comparison/v3","provider":{"id":"rea-process","name":"REA deterministic process harness","version":"3"},"raw_result":null,"schema_version":2,"subject":null}],"static_comparisons":[{"authority":"analyst-inference","confidence":"derived","environment":null,"evidence_id":"ev_68c195e7d5d8688f3eb0764a9a868355fcc6f8810fc9ada1a0c8579c21ea2bf8","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"limitations":["Artifact identity is unavailable for this observation."],"locations":[],"normalized_result":{"changes":{"items":[{"conclusion_kind":"derived_relationship","dimension":"pseudocode","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":9,"left_digest":"64abdfe133a114158fa0e185d0edec784e6ccf13a166a0fed8bc18bb0cc72554","limitations":[],"right_count":9,"right_digest":"c8e26d77640903b2d4c765ebcb7f7170b64dd320dd3911abbe8346e07cd593d1","status":"changed","text_delta":{"added_lines":1,"hunks":2,"removed_lines":1}},{"conclusion_kind":"unresolved_branch","dimension":"assembly","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":null,"limitations":["Assembly is opaque provider text; relocation normalization is unavailable."],"right_count":0,"right_digest":null,"status":"unknown","text_delta":null}],"limit":100,"next_offset":null,"offset":0,"total":2},"dimensions":[{"conclusion_kind":"derived_relationship","dimension":"identity","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":null,"left_digest":"dd190a914de1bdf8f4bba97a2e74b439585874c567f28eb0ff41bc5388c66d65","limitations":[],"right_count":null,"right_digest":"dd190a914de1bdf8f4bba97a2e74b439585874c567f28eb0ff41bc5388c66d65","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"pseudocode","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":9,"left_digest":"64abdfe133a114158fa0e185d0edec784e6ccf13a166a0fed8bc18bb0cc72554","limitations":[],"right_count":9,"right_digest":"c8e26d77640903b2d4c765ebcb7f7170b64dd320dd3911abbe8346e07cd593d1","status":"changed","text_delta":{"added_lines":1,"hunks":2,"removed_lines":1}},{"conclusion_kind":"unresolved_branch","dimension":"assembly","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":null,"limitations":["Assembly is opaque provider text; relocation normalization is unavailable."],"right_count":0,"right_digest":null,"status":"unknown","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"comments","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"calls","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"references","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"strings_names","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":0,"left_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","limitations":[],"right_count":0,"right_digest":"4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","status":"unchanged","text_delta":null},{"conclusion_kind":"derived_relationship","dimension":"cfg","evidence_links":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e","ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"],"left_count":1,"left_digest":"e947121f0d4cb8d2a2468a75a44872a29aa1239e6401712df80cfa36bf7df7a0","limitations":[],"right_count":1,"right_digest":"e947121f0d4cb8d2a2468a75a44872a29aa1239e6401712df80cfa36bf7df7a0","status":"unchanged","text_delta":null}],"function_match":{"left_name":"main","method":"symbol","right_name":"main","status":"matched"},"left_subject_sha256":"0000000000000000000000000000000000000000000000000000000000000000","limitations":[],"right_subject_sha256":"1111111111111111111111111111111111111111111111111111111111111111","status":"unknown","summary":{"changed":1,"truncated":0,"unchanged":6,"unknown":1}},"operation":"compare_functions","parameters":{"left_evidence_ids":["ev_ff8eed2e28fd9549add0c20d7573566358ad228b980f538e2e0709155a456e1e"],"limit":100,"offset":0,"right_evidence_ids":["ev_7cee7dd9a31cbb2881b2db1c9042ebb961cef07c9152da5ab533b52a0a3492e0"]},"predicate_type":"rea.function-comparison/v1","provider":{"id":"rea-function-comparison","name":"REA function comparison","version":"1"},"raw_result":null,"schema_version":2,"subject":null}]}],"properties":{"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"mappings":{"description":"Value for mappings.","items":{"additionalProperties":false,"properties":{"hypothesis":{"additionalProperties":false,"description":"Value for hypothesis.","properties":{"expected_pattern":{"description":"Expected pattern used to reject stale or mismatched input.","enum":["cochanged","static_only","runtime_only","both_unchanged"],"type":"string"},"statement":{"description":"Value for statement.","maxLength":500,"minLength":1,"type":"string"}},"required":["statement","expected_pattern"],"type":"object"},"runtime":{"additionalProperties":false,"description":"Value for runtime.","properties":{"comparison_evidence_id":{"description":"Exact Evidence v2 identifier for the comparison observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"description":"Value for dimension.","enum":["terminal","interaction","exit","filesystem","protocol","process","shim"],"type":"string"}},"required":["comparison_evidence_id","dimension"],"type":"object"},"side_alignment":{"description":"Value for side alignment.","enum":["left_to_left","left_to_right"],"type":"string"},"static":{"additionalProperties":false,"description":"Value for static.","properties":{"comparison_evidence_id":{"description":"Exact Evidence v2 identifier for the comparison observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"selector":{"description":"Value for selector.","oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact","description":"Value for kind.","type":"string"},"logical_path":{"description":"Local filesystem path for logical.","maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","logical_path"],"type":"object"},{"additionalProperties":false,"properties":{"dimension":{"description":"Value for dimension.","enum":["identity","pseudocode","assembly","comments","calls","references","strings_names","cfg"],"type":"string"},"kind":{"const":"function","description":"Value for kind.","type":"string"}},"required":["kind","dimension"],"type":"object"}]}},"required":["comparison_evidence_id","selector"],"type":"object"}},"required":["static","runtime","side_alignment","hypothesis"],"type":"object"},"maxItems":500,"minItems":1,"type":"array"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"runtime_comparisons":{"description":"Value for runtime comparisons.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"},"static_comparisons":{"description":"Value for static comparisons.","items":{"additionalProperties":false,"properties":{"analysis_profile":{"description":"Value for analysis profile.","properties":{"digest":{"description":"Value for digest.","pattern":"^[a-f0-9]{64}$","type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"description":"Value for version.","minLength":1,"type":"string"}},"required":["id","name","version"],"type":"object"},"provider_profile_schema_version":{"description":"Value for provider profile schema version.","maximum":9007199254740991,"minimum":1,"type":"integer"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","provider","provider_profile_schema_version","parameters","digest"],"type":"object"},"authority":{"description":"Value for authority.","enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},"confidence":{"description":"Value for confidence.","enum":["observed","derived","inferred"],"type":"string"},"environment":{"anyOf":[{"properties":{"architecture":{"description":"Value for architecture.","minLength":1,"type":"string"},"id":{"description":"Value for id.","minLength":1,"type":"string"},"isolation":{"description":"Value for isolation.","enum":["none","process","container","virtual-machine"],"type":"string"},"platform":{"description":"Value for platform.","minLength":1,"type":"string"}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for environment."},"evidence_id":{"description":"Stable identifier of the recorded Evidence v2 observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_links":{"description":"Value for evidence links.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"type":"array"},"limitations":{"description":"Value for limitations.","items":{"type":"string"},"type":"array"},"locations":{"description":"Value for locations.","items":{"oneOf":[{"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"kind":{"const":"address","description":"Value for kind.","type":"string"}},"required":["kind","address"],"type":"object"},{"properties":{"end":{"description":"Value for end.","minLength":1,"type":"string"},"kind":{"const":"address-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","minLength":1,"type":"string"}},"required":["kind","start","end"],"type":"object"},{"properties":{"kind":{"const":"artifact-path","description":"Value for kind.","type":"string"},"path":{"description":"Local filesystem path used by this operation.","minLength":1,"type":"string"}},"required":["kind","path"],"type":"object"},{"properties":{"kind":{"const":"file-offset","description":"Value for kind.","type":"string"},"offset":{"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","offset"],"type":"object"},{"properties":{"end":{"description":"Value for end.","maximum":9007199254740991,"minimum":0,"type":"integer"},"kind":{"const":"file-offset-range","description":"Value for kind.","type":"string"},"start":{"description":"Value for start.","maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["kind","start","end"],"type":"object"}]},"type":"array"},"normalized_result":{"$ref":"#/$defs/__schema0","description":"Value for normalized result."},"operation":{"description":"Value for operation.","minLength":1,"type":"string"},"parameters":{"additionalProperties":{"$ref":"#/$defs/__schema0"},"description":"Value for parameters.","propertyNames":{"type":"string"},"type":"object"},"predicate_type":{"description":"Value for predicate type.","minLength":1,"type":"string"},"provider":{"description":"Value for provider.","properties":{"id":{"description":"Value for id.","minLength":1,"type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Value for version."}},"required":["id","name","version"],"type":"object"},"raw_result":{"anyOf":[{"$ref":"#/$defs/__schema0"},{"type":"null"}],"description":"Value for raw result."},"schema_version":{"const":2,"description":"Version of this structured result schema.","type":"number"},"subject":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"enum":["x86","x86_64","arm","arm64"],"type":"string"},{"type":"null"}],"description":"Value for architecture."},"digest":{"description":"Value for digest.","properties":{"sha256":{"description":"Value for sha256.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["sha256"],"type":"object"},"format":{"description":"Declared input artifact format.","enum":["hopper","analysis-database","mach-o","elf","pe","zip","ipa","apk","msix","appx","asar","dmg","pkg","plist","javascript","source-map","directory","file","unknown","mach-o-universal","javascript-bundle","entitlements"],"type":"string"},"local_path":{"description":"Local filesystem path for local.","type":"string"},"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"}},"required":["name","digest","format","architecture","local_path"],"type":"object"},{"type":"null"}],"description":"Value for subject."}},"required":["schema_version","evidence_id","subject","provider","predicate_type","operation","parameters","raw_result","normalized_result","confidence","authority","environment","limitations","locations","evidence_links"],"type":"object"},"maxItems":100,"minItems":1,"type":"array"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["static_comparisons","runtime_comparisons","mappings"],"type":"object"},"kind":"session","name":"correlate_static_and_runtime","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"correlations":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"classification":{"enum":["hypothesis","contradiction","unresolved_branch"],"type":"string"},"correlation_id":{"pattern":"^cor_[a-f0-9]{64}$","type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":20100,"minItems":2,"type":"array"},"hypothesis":{"additionalProperties":false,"properties":{"expected_pattern":{"enum":["cochanged","static_only","runtime_only","both_unchanged"],"type":"string"},"statement":{"maxLength":500,"minLength":1,"type":"string"}},"required":["statement","expected_pattern"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"observed_pattern":{"enum":["cochanged","static_only","runtime_only","both_unchanged","unknown","truncated"],"type":"string"},"runtime":{"additionalProperties":false,"properties":{"comparison_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"enum":["terminal","interaction","exit","filesystem","protocol","process","shim"],"type":"string"},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"}},"required":["comparison_evidence_id","dimension","status"],"type":"object"},"side_alignment":{"enum":["left_to_left","left_to_right"],"type":"string"},"static":{"additionalProperties":false,"properties":{"comparison_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"conclusion_kind":{"enum":["derived_relationship","contradiction","unresolved_branch"],"type":"string"},"selector":{"oneOf":[{"additionalProperties":false,"properties":{"kind":{"const":"artifact","type":"string"},"logical_path":{"maxLength":4096,"minLength":1,"type":"string"}},"required":["kind","logical_path"],"type":"object"},{"additionalProperties":false,"properties":{"dimension":{"enum":["identity","pseudocode","assembly","comments","calls","references","strings_names","cfg"],"type":"string"},"kind":{"const":"function","type":"string"}},"required":["kind","dimension"],"type":"object"}]},"status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"}},"required":["comparison_evidence_id","selector","status","conclusion_kind"],"type":"object"}},"required":["correlation_id","static","runtime","side_alignment","hypothesis","observed_pattern","classification","evidence_links","limitations"],"type":"object"},"maxItems":100,"type":"array"},"limit":{"maximum":100,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":20100,"minItems":2,"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"status":{"enum":["correlated","contradicted","unknown","truncated"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"contradictions":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"hypotheses":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"unresolved":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["hypotheses","contradictions","unresolved"],"type":"object"}},"required":["status","summary","correlations","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Correlate Static And Runtime"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Verify a finite typed behavioral and structural specification against a canonical Evidence bundle. Pass means every declared claim has complete comparable authority—not global source equivalence; changed claims fail and missing, limited, or unresolved evidence stays unknown.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"limit":100,"offset":0,"specification":{"claims":[{"claim_id":"terminal-output","comparison_evidence_id":"ev_2ffc472e561cea4b5e65ddaf7b80bc112b7ed6d0d023f0cf7398bc2068a12e2d","dimension":"terminal","kind":"behavioral","title":"Terminal output remains equivalent"}],"name":"Terminal compatibility","schema_version":1}}],"properties":{"coverage":{"additionalProperties":false,"description":"Exact reconstruction-coverage commitment to verify.","properties":{"boundary_id":{"description":"Exact reconstruction boundary identifier to evaluate.","maxLength":200,"minLength":1,"type":"string"},"revision":{"description":"Value for revision.","maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_sha256":{"description":"Exact SHA-256 digest of revision.","pattern":"^[a-f0-9]{64}$","type":"string"},"workspace_id":{"description":"Value for workspace id.","pattern":"^rcw_[a-f0-9]{64}$","type":"string"}},"required":["workspace_id","revision","revision_sha256","boundary_id"],"type":"object"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":100,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"specification":{"description":"Value for specification.","properties":{"claims":{"description":"Value for claims.","items":{"oneOf":[{"properties":{"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,99}$","type":"string"},"comparison_evidence_id":{"description":"Exact Evidence v2 identifier for the comparison observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"description":"Value for dimension.","enum":["overall","terminal","interaction","exit","filesystem","protocol","process","shim"],"type":"string"},"kind":{"const":"behavioral","description":"Value for kind.","type":"string"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"}},"required":["claim_id","title","comparison_evidence_id","kind","dimension"],"type":"object"},{"properties":{"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,99}$","type":"string"},"comparison_evidence_id":{"description":"Exact Evidence v2 identifier for the comparison observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"description":"Value for dimension.","enum":["overall","identity","pseudocode","assembly","comments","calls","references","strings_names","cfg"],"type":"string"},"kind":{"const":"structural-function","description":"Value for kind.","type":"string"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"}},"required":["claim_id","title","comparison_evidence_id","kind","dimension"],"type":"object"},{"properties":{"claim_id":{"description":"Value for claim id.","pattern":"^[A-Za-z][A-Za-z0-9._-]{0,99}$","type":"string"},"comparison_evidence_id":{"description":"Exact Evidence v2 identifier for the comparison observation.","pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"const":"overall","description":"Value for dimension.","type":"string"},"kind":{"const":"structural-artifact","description":"Value for kind.","type":"string"},"title":{"description":"Value for title.","maxLength":500,"minLength":1,"type":"string"}},"required":["claim_id","title","comparison_evidence_id","kind","dimension"],"type":"object"}]},"maxItems":100,"minItems":1,"type":"array"},"name":{"description":"Exact name used by this operation.","maxLength":200,"minLength":1,"type":"string"},"schema_version":{"const":1,"description":"Version of this structured result schema.","type":"number"}},"required":["schema_version","name","claims"],"type":"object"},"unknown_registry_approved":{"const":true,"description":"Explicit approval to record bounded residual uncertainty in the session registry.","type":"boolean"}},"required":["specification"],"type":"object"},"kind":"session","name":"verify_reconstruction","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"evidence_uri":{"pattern":"^rea:\\\\/\\\\/evidence\\\\/ev_[a-f0-9]{64}$","type":"string"},"result":{"additionalProperties":false,"properties":{"claims":{"additionalProperties":false,"properties":{"items":{"items":{"additionalProperties":false,"properties":{"claim_id":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,99}$","type":"string"},"comparison_evidence_id":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"dimension":{"minLength":1,"type":"string"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":201,"minItems":3,"type":"array"},"kind":{"enum":["behavioral","structural-function","structural-artifact"],"type":"string"},"left_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"observed_status":{"enum":["unchanged","added","removed","changed","truncated","unknown","contradiction"],"type":"string"},"right_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"status":{"enum":["pass","fail","unknown"],"type":"string"},"unknown_ids":{"items":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"}},"required":["claim_id","kind","dimension","status","observed_status","comparison_evidence_id","left_evidence_ids","right_evidence_ids","evidence_links","unknown_ids","limitations"],"type":"object"},"maxItems":100,"type":"array"},"limit":{"maximum":100,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":100,"minimum":1,"type":"integer"}},"required":["items","offset","limit","total","next_offset"],"type":"object"},"evidence_links":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":20100,"minItems":3,"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"claim_ids":{"items":{"pattern":"^[A-Za-z][A-Za-z0-9._-]{0,99}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"operation":{"maxLength":200,"minLength":1,"type":"string"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"},"unknown_ids":{"items":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"}},"required":["operation","rationale","claim_ids","unknown_ids"],"type":"object"},"maxItems":2000,"type":"array"},"specification_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"status":{"enum":["pass","fail","unknown"],"type":"string"},"summary":{"additionalProperties":false,"properties":{"behavioral":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"failed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"passed":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"structural":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":100,"minimum":1,"type":"integer"},"unknown":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["total","passed","failed","unknown","behavioral","structural"],"type":"object"}},"required":["status","specification_sha256","summary","claims","recommended_probes","evidence_links","limitations"],"type":"object"}},"required":["result","evidence_id","evidence_uri"],"type":"object"},"requiresSession":true,"title":"Verify Reconstruction"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"List current residual-unknown heads in deterministic ID order, with optional exact status, severity, and domain filters. Pages default to 100 items; while has_more is true, pass next_offset as offset and continue until false. This is read-only; unresolved, contradicted, and non-truth dispositions remain distinct.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":false,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"limit":100,"offset":0}],"properties":{"domain":{"description":"Value for domain.","maxLength":100,"minLength":1,"type":"string"},"limit":{"default":100,"description":"Maximum number of results to return in this page.","maximum":500,"minimum":1,"type":"integer"},"offset":{"default":0,"description":"Zero-based index of the first result to return.","maximum":9007199254740991,"minimum":0,"type":"integer"},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"}},"type":"object"},"kind":"session","name":"list_unknowns","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"has_more":{"type":"boolean"},"items":{"items":{"additionalProperties":false,"properties":{"unknown":{"additionalProperties":false,"properties":{"contradicting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"question":{"maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"operation":{"maxLength":200,"minLength":1,"type":"string"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"type":"number"},"relationships":{"items":{"additionalProperties":false,"properties":{"type":{"enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}]},"required_confidence":{"enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}]},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}]},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"resolution":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"disposition":{"const":"verified","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"additionalProperties":false,"properties":{"disposition":{"enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"severity":{"enum":["low","medium","high","critical"],"type":"string"},"status":{"enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"},"uri":{"pattern":"^rea:\\\\/\\\\/unknown\\\\/unk_[a-f0-9]{64}$","type":"string"}},"required":["unknown","uri"],"type":"object"},"type":"array"},"limit":{"maximum":500,"minimum":1,"type":"integer"},"next_offset":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]},"offset":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"total":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["items","offset","limit","total","next_offset","has_more"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"List Unknowns"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Create one deterministic residual unknown and immutable mutation evidence. Requires approved: true, validates all evidence and relationship references, and rejects duplicate stable identity.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"approved":true,"contradicting_evidence_ids":[],"domain":"protocol","question":"Does this branch require an unavailable external service?","recommended_probes":[{"operation":"capture_process_scenario","rationale":"Replay branch."}],"relationships":[],"required_authority":"controlled-replay","required_confidence":"observed","required_environment":null,"severity":"medium","supporting_evidence_ids":[]}],"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"contradicting_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the contradicting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"description":"Value for domain.","maxLength":100,"minLength":1,"type":"string"},"question":{"description":"Concrete unresolved question to retain for later investigation.","maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"description":"Value for recommended probes.","items":{"properties":{"operation":{"description":"Value for operation.","maxLength":200,"minLength":1,"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"relationships":{"description":"Value for relationships.","items":{"properties":{"type":{"description":"Value for type.","enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}],"description":"Value for required authority."},"required_confidence":{"description":"Value for required confidence.","enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for architecture."},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for id."},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}],"description":"Value for isolation."},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for platform."}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for required environment."},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"supporting_evidence_ids":{"default":[],"description":"Ordered Evidence v2 identifiers for the supporting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"}},"required":["question","severity","domain","required_authority","required_confidence","required_environment","recommended_probes","relationships","approved"],"type":"object"},"kind":"session","name":"record_unknown","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"contradicting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"question":{"maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"operation":{"maxLength":200,"minLength":1,"type":"string"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"type":"number"},"relationships":{"items":{"additionalProperties":false,"properties":{"type":{"enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}]},"required_confidence":{"enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}]},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}]},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"resolution":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"disposition":{"const":"verified","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"additionalProperties":false,"properties":{"disposition":{"enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"severity":{"enum":["low","medium","high","critical"],"type":"string"},"status":{"enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Record Unknown"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":false,"openWorldHint":false,"readOnlyHint":false},"description":"Append one immutable full-state revision and mutation evidence. Requires approved: true and exact expected_revision; stale concurrent writers fail instead of overwriting newer analysis.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":false,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","examples":[{"approved":true,"contradicting_evidence_ids":[],"expected_revision":1,"recommended_probes":[],"relationships":[],"required_authority":"controlled-replay","required_confidence":"observed","required_environment":null,"resolution":null,"severity":"medium","status":"investigating","supporting_evidence_ids":[],"unknown_id":"unk_0000000000000000000000000000000000000000000000000000000000000000"}],"properties":{"approved":{"const":true,"description":"Explicit operator approval to perform this operation.","type":"boolean"},"contradicting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the contradicting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"expected_revision":{"description":"Expected revision used to reject stale or mismatched input.","maximum":9007199254740991,"minimum":1,"type":"integer"},"recommended_probes":{"description":"Value for recommended probes.","items":{"properties":{"operation":{"description":"Value for operation.","maxLength":200,"minLength":1,"type":"string"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"relationships":{"description":"Value for relationships.","items":{"properties":{"type":{"description":"Value for type.","enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}],"description":"Value for required authority."},"required_confidence":{"description":"Value for required confidence.","enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for architecture."},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for id."},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}],"description":"Value for isolation."},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}],"description":"Value for platform."}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}],"description":"Value for required environment."},"resolution":{"anyOf":[{"oneOf":[{"properties":{"disposition":{"const":"verified","description":"Value for disposition.","type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"properties":{"disposition":{"description":"Value for disposition.","enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"description":"Value for evidence ids.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"description":"Value for rationale.","maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}],"description":"Value for resolution."},"severity":{"description":"Value for severity.","enum":["low","medium","high","critical"],"type":"string"},"status":{"description":"Current lifecycle or verification status.","enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"description":"Ordered Evidence v2 identifiers for the supporting observations.","items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["unknown_id","expected_revision","approved","status","severity","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution"],"type":"object"},"kind":"session","name":"update_unknown","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"contradicting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"question":{"maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"operation":{"maxLength":200,"minLength":1,"type":"string"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"type":"number"},"relationships":{"items":{"additionalProperties":false,"properties":{"type":{"enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}]},"required_confidence":{"enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}]},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}]},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"resolution":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"disposition":{"const":"verified","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"additionalProperties":false,"properties":{"disposition":{"enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"severity":{"enum":["low","medium","high","critical"],"type":"string"},"status":{"enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Update Unknown"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Revalidate the current residual-unknown head against live bundled evidence, exact authority/confidence/environment requirements, and revision integrity. Withdrawn and out-of-scope dispositions are not truth claims.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":false,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"unknown_id":"unk_0000000000000000000000000000000000000000000000000000000000000000"}],"properties":{"unknown_id":{"description":"Exact residual-unknown identifier.","pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["unknown_id"],"type":"object"},"kind":"session","name":"verify_unknown_resolution","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"truthVerified":{"type":"boolean"},"unknown":{"additionalProperties":false,"properties":{"contradicting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"domain":{"maxLength":100,"minLength":1,"type":"string"},"mutation_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"previous_revision_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"question":{"maxLength":1000,"minLength":1,"type":"string"},"recommended_probes":{"items":{"additionalProperties":false,"properties":{"operation":{"maxLength":200,"minLength":1,"type":"string"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["operation","rationale"],"type":"object"},"maxItems":20,"type":"array"},"registry_version":{"const":1,"type":"number"},"relationships":{"items":{"additionalProperties":false,"properties":{"type":{"enum":["depends-on","related-to","contradicts"],"type":"string"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["type","unknown_id"],"type":"object"},"maxItems":100,"type":"array"},"required_authority":{"anyOf":[{"enum":["shipped-artifact","controlled-replay","historical-reference","external-service","analyst-inference"],"type":"string"},{"type":"null"}]},"required_confidence":{"enum":["observed","derived","inferred"],"type":"string"},"required_environment":{"anyOf":[{"additionalProperties":false,"properties":{"architecture":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]},"id":{"anyOf":[{"maxLength":200,"minLength":1,"type":"string"},{"type":"null"}]},"isolation":{"anyOf":[{"enum":["none","process","container","virtual-machine"],"type":"string"},{"type":"null"}]},"platform":{"anyOf":[{"maxLength":100,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["id","platform","architecture","isolation"],"type":"object"},{"type":"null"}]},"resolution":{"anyOf":[{"oneOf":[{"additionalProperties":false,"properties":{"disposition":{"const":"verified","type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"minItems":1,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"},{"additionalProperties":false,"properties":{"disposition":{"enum":["withdrawn","out-of-scope"],"type":"string"},"evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"rationale":{"maxLength":1000,"minLength":1,"type":"string"}},"required":["disposition","rationale","evidence_ids"],"type":"object"}]},{"type":"null"}]},"revision":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"revision_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"scope_digest":{"anyOf":[{"pattern":"^[a-f0-9]{64}$","type":"string"},{"type":"null"}]},"severity":{"enum":["low","medium","high","critical"],"type":"string"},"status":{"enum":["open","investigating","blocked","contradicted","resolved"],"type":"string"},"supporting_evidence_ids":{"items":{"pattern":"^ev_[a-f0-9]{64}$","type":"string"},"maxItems":100,"type":"array"},"unknown_id":{"pattern":"^unk_[a-f0-9]{64}$","type":"string"}},"required":["registry_version","unknown_id","revision","previous_revision_digest","revision_digest","scope_digest","question","status","severity","domain","supporting_evidence_ids","contradicting_evidence_ids","required_authority","required_confidence","required_environment","recommended_probes","relationships","resolution","mutation_evidence_ids"],"type":"object"},"valid":{"type":"boolean"}},"required":["valid","truthVerified","unknown"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Verify Unknown Resolution"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true},"description":"Evaluate ordered HTTP and WebSocket events directly against one validated finite replay machine without opening sockets or launching a target. Returns every decision, a capture-value-free transition journal, one redacted action table entry per used transition, captured aliases, final state, and exact configured and consumed limits.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":false,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"events":[{"at_ms":0,"body":"{\\"token\\":\\"opaque\\"}","connection":"not_applicable","headers":{},"method":"POST","path":"/callback","protocol":"http"}],"machine":{"initial_state":"waiting","limits":{"bytes":1000000,"connections":100,"duration_ms":30000,"messages":10000},"max_transitions":1,"states":[{"max_visits":100000,"name":"waiting","terminal":false},{"max_visits":100000,"name":"complete","terminal":true}],"transitions":[{"actions":[{"body":"","headers":{},"status":204,"type":"http_response"}],"captures":[{"sensitive":true,"value":{"path":["token"],"source":"request_json"},"variable":"token"}],"from":"waiting","guards":[],"id":"accept_callback","max_uses":1,"priority":100,"to":"complete","trigger":{"body":null,"headers":{},"method":"POST","path":"/callback","protocol":"http"}}]}}],"properties":{"events":{"description":"Value for events.","items":{"oneOf":[{"additionalProperties":false,"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"connection":{"const":"not_applicable","description":"Value for connection.","type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"method":{"description":"Value for method.","maxLength":16,"minLength":1,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","maxLength":8192,"pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"http","description":"Value for protocol.","type":"string"}},"required":["protocol","connection","method","at_ms","path","headers","body"],"type":"object"},{"additionalProperties":false,"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"connection":{"description":"Value for connection.","enum":["initial","reconnect"],"type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"method":{"description":"Value for method.","type":"null"},"path":{"description":"Local filesystem path used by this operation.","maxLength":8192,"pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_connect","description":"Value for protocol.","type":"string"}},"required":["protocol","connection","method","at_ms","path","headers","body"],"type":"object"},{"additionalProperties":false,"properties":{"at_ms":{"description":"Value for at ms.","maximum":9007199254740991,"minimum":0,"type":"integer"},"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"connection":{"description":"Value for connection.","enum":["initial","reconnect"],"type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"method":{"description":"Value for method.","type":"null"},"path":{"description":"Local filesystem path used by this operation.","maxLength":8192,"pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_message","description":"Value for protocol.","type":"string"}},"required":["protocol","connection","method","at_ms","path","headers","body"],"type":"object"}]},"maxItems":10000,"type":"array"},"machine":{"additionalProperties":false,"description":"Value for machine.","properties":{"initial_state":{"description":"Value for initial state.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"limits":{"additionalProperties":false,"default":{"bytes":1000000,"connections":100,"duration_ms":30000,"messages":10000},"description":"Bounded resource-consumption and result-size limits for this operation.","properties":{"bytes":{"default":1000000,"description":"Value for bytes.","maximum":10000000,"minimum":1,"type":"integer"},"connections":{"default":100,"description":"Value for connections.","maximum":1000,"minimum":1,"type":"integer"},"duration_ms":{"default":30000,"description":"Value for duration ms.","maximum":300000,"minimum":1,"type":"integer"},"messages":{"default":10000,"description":"Value for messages.","maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"max_transitions":{"description":"Maximum permitted transitions for this operation.","maximum":100000,"minimum":1,"type":"integer"},"states":{"description":"Value for states.","items":{"additionalProperties":false,"properties":{"max_visits":{"default":100000,"description":"Maximum permitted visits for this operation.","maximum":100000,"minimum":1,"type":"integer"},"name":{"description":"Exact name used by this operation.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"terminal":{"default":false,"description":"Value for terminal.","type":"boolean"}},"required":["name"],"type":"object"},"maxItems":256,"minItems":1,"type":"array"},"transitions":{"description":"Value for transitions.","items":{"additionalProperties":false,"properties":{"actions":{"description":"Value for actions.","items":{"oneOf":[{"additionalProperties":false,"properties":{"body":{"description":"Value for body.","maxLength":1000000,"type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"default":{},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"status":{"description":"Current lifecycle or verification status.","maximum":599,"minimum":100,"type":"integer"},"type":{"const":"http_response","description":"Value for type.","type":"string"}},"required":["type","status","body"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"description":"Value for data.","maxLength":1000000,"type":"string"},"type":{"const":"websocket_send","description":"Value for type.","type":"string"}},"required":["type","data"],"type":"object"},{"additionalProperties":false,"properties":{"type":{"const":"disconnect","description":"Value for type.","type":"string"}},"required":["type"],"type":"object"},{"additionalProperties":false,"properties":{"duration_ms":{"description":"Value for duration ms.","maximum":30000,"minimum":0,"type":"integer"},"type":{"const":"delay","description":"Value for type.","type":"string"}},"required":["type","duration_ms"],"type":"object"}]},"maxItems":32,"minItems":1,"type":"array"},"captures":{"description":"Value for captures.","items":{"additionalProperties":false,"properties":{"sensitive":{"default":false,"description":"Value for sensitive.","type":"boolean"},"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"source":{"const":"request_header","description":"Value for source.","type":"string"}},"required":["source","name"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"request_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"websocket_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"action_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"}]},"variable":{"description":"Value for variable.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["variable","value"],"type":"object"},"maxItems":32,"type":"array"},"from":{"description":"Value for from.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"guards":{"description":"Value for guards.","items":{"additionalProperties":false,"properties":{"value":{"description":"Value for value.","oneOf":[{"additionalProperties":false,"properties":{"name":{"description":"Exact name used by this operation.","minLength":1,"type":"string"},"source":{"const":"request_header","description":"Value for source.","type":"string"}},"required":["source","name"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"request_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"websocket_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"},{"additionalProperties":false,"properties":{"path":{"description":"Local filesystem path used by this operation.","items":{"anyOf":[{"maxLength":256,"type":"string"},{"maximum":9007199254740991,"minimum":0,"type":"integer"}]},"maxItems":32,"type":"array"},"source":{"const":"action_json","description":"Value for source.","type":"string"}},"required":["source","path"],"type":"object"}]},"variable":{"description":"Value for variable.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["variable","value"],"type":"object"},"maxItems":32,"type":"array"},"id":{"description":"Value for id.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"max_uses":{"description":"Maximum permitted uses for this operation.","maximum":10000,"minimum":1,"type":"integer"},"priority":{"default":100,"description":"Value for priority.","maximum":1000,"minimum":0,"type":"integer"},"to":{"description":"Value for to.","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"trigger":{"description":"Value for trigger.","oneOf":[{"additionalProperties":false,"properties":{"body":{"anyOf":[{"maxLength":1000000,"type":"string"},{"type":"null"}],"default":null,"description":"Value for body."},"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"method":{"description":"Value for method.","maxLength":16,"minLength":1,"type":"string"},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"http","description":"Value for protocol.","type":"string"}},"required":["protocol","method","path"],"type":"object"},{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"maxLength":8192,"pattern":"^[\\\\t\\\\x20-\\\\x7e\\\\x80-\\\\xff]*$","type":"string"},"description":"Value for headers.","propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_connect","description":"Value for protocol.","type":"string"}},"required":["protocol","path"],"type":"object"},{"additionalProperties":false,"properties":{"body":{"anyOf":[{"maxLength":1000000,"type":"string"},{"type":"null"}],"default":null,"description":"Value for body."},"path":{"description":"Local filesystem path used by this operation.","pattern":"^\\\\/.*","type":"string"},"protocol":{"const":"websocket_message","description":"Value for protocol.","type":"string"}},"required":["protocol","path"],"type":"object"}]}},"required":["id","from","to","trigger","actions","max_uses"],"type":"object"},"maxItems":2000,"minItems":1,"type":"array"}},"required":["initial_state","states","transitions","max_transitions"],"type":"object"}},"required":["machine","events"],"type":"object"},"kind":"session","name":"run_replay_machine","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"decisions":{"items":{"additionalProperties":false,"properties":{"event_sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"outcome":{"anyOf":[{"const":"matched","type":"string"},{"enum":["unmatched","invalid_state","guard_failed","transition_exhausted","invalid_capture","unexpected_reconnect","limit_exhausted"],"type":"string"}]},"transition_sequence":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}]}},"required":["event_sequence","outcome","transition_sequence"],"type":"object"},"maxItems":10000,"type":"array"},"final_state":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"initial_state":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"limits":{"additionalProperties":false,"properties":{"configured":{"additionalProperties":false,"properties":{"bytes":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"connections":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"duration_ms":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"messages":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"transitions":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["transitions","connections","messages","bytes","duration_ms"],"type":"object"},"usage":{"additionalProperties":false,"properties":{"admitted_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"connections":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"last_at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"messages":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"offered_events":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"transitions":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["offered_events","admitted_events","transitions","connections","messages","bytes","last_at_ms"],"type":"object"}},"required":["configured","usage"],"type":"object"},"schema_version":{"const":1,"type":"number"},"terminal":{"type":"boolean"},"transition_actions":{"items":{"additionalProperties":false,"properties":{"actions":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"body":{"maxLength":1000000,"type":"string"},"headers":{"additionalProperties":{"maxLength":8192,"type":"string"},"propertyNames":{"maxLength":256,"minLength":1,"pattern":"^[!#$%&\'*+.^_`|~0-9A-Za-z-]+$","type":"string"},"type":"object"},"status":{"maximum":599,"minimum":100,"type":"integer"},"type":{"const":"http_response","type":"string"}},"required":["type","status","headers","body"],"type":"object"},{"additionalProperties":false,"properties":{"data":{"maxLength":1000000,"type":"string"},"type":{"const":"websocket_send","type":"string"}},"required":["type","data"],"type":"object"},{"additionalProperties":false,"properties":{"type":{"const":"disconnect","type":"string"}},"required":["type"],"type":"object"},{"additionalProperties":false,"properties":{"duration_ms":{"maximum":30000,"minimum":0,"type":"integer"},"type":{"const":"delay","type":"string"}},"required":["type","duration_ms"],"type":"object"}]},"maxItems":32,"type":"array"},"transition_id":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["transition_id","actions"],"type":"object"},"maxItems":2000,"type":"array"},"transition_journal":{"items":{"additionalProperties":false,"properties":{"at_ms":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"captured_aliases":{"items":{"additionalProperties":false,"properties":{"name":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"sensitive":{"type":"boolean"}},"required":["name","sensitive"],"type":"object"},"maxItems":32,"type":"array"},"sequence":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"state_after":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"state_before":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"},"transition_id":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$","type":"string"}},"required":["sequence","at_ms","transition_id","state_before","state_after","captured_aliases"],"type":"object"},"maxItems":10000,"type":"array"}},"required":["schema_version","initial_state","final_state","terminal","decisions","transition_journal","transition_actions","limits"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Run Replay Machine"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Retain the current canonical Evidence v2 bundle as an immutable session resource. Returns a compact digest summary and exact opaque URI; copy that URI unchanged and call MCP resources/read (Codex: read_mcp_resource) for the full bundle. Repeating an unchanged snapshot is idempotent.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{}],"properties":{},"type":"object"},"kind":"session","name":"snapshot_evidence_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"bundle_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"bundle_uri":{"pattern":"^rea:\\\\/\\\\/evidence-bundle\\\\/[a-f0-9]{64}$","type":"string"},"bundle_version":{"const":2,"type":"number"},"bytes":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"records":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"scope":{"const":"session","type":"string"},"survives_session":{"const":false,"type":"boolean"},"unknowns":{"maximum":9007199254740991,"minimum":0,"type":"integer"}},"required":["bundle_digest","bundle_version","bytes","records","unknowns","scope","survives_session","bundle_uri"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Snapshot Evidence Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":true,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Release one immutable session-retained Evidence v2 bundle by exact digest. This is the recovery operation when bounded bundle retention is exhausted; releasing an unknown digest is idempotent and reports released: false.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":true,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"bundle_digest":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}],"properties":{"bundle_digest":{"description":"Value for bundle digest.","pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["bundle_digest"],"type":"object"},"kind":"session","name":"release_evidence_bundle","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"bundle_digest":{"pattern":"^[a-f0-9]{64}$","type":"string"},"released":{"type":"boolean"}},"required":["bundle_digest","released"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Release Evidence Bundle"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Compose the selected document, current address, and containing/current procedure into one provider-neutral result. The result reflects sequential provider observations, not an atomic cursor snapshot; a cursor outside any procedure returns procedure: null. Scalar navigation getters remain available for evaluation and compatibility.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{}],"properties":{"document":{"description":"Exact provider document or program identity.","minLength":1,"type":"string"}},"type":"object"},"kind":"session","name":"get_navigation_context","outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"address":{"type":"string"},"document":{"type":"string"},"procedure":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["document","address","procedure"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Get Navigation Context"},{"analysisOperation":null,"annotations":{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false},"description":"Inspect one explicit reproducible address for its analyzed name, containing procedure, regular and inline comments, and matching bookmarks. Each unsupported facet returns a typed unavailable outcome; xrefs, assembly, and pseudocode remain separate bounded follow-ups.","effects":{"accessesNetwork":false,"changesUiState":false,"idempotent":true,"launchesProcess":false,"mayDiscardData":false,"mutatesSession":true,"mutatesTarget":false,"writesFilesystem":false},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"examples":[{"address":"0x1000"}],"properties":{"address":{"description":"Value for address.","minLength":1,"type":"string"},"document":{"description":"Exact provider document or program identity.","minLength":1,"type":"string"}},"required":["address"],"type":"object"},"kind":"session","name":"inspect_address_context","outputSchema":{"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"items":{"$ref":"#/$defs/__schema0"},"type":"array"},{"additionalProperties":{"$ref":"#/$defs/__schema0"},"propertyNames":{"type":"string"},"type":"object"}]}},"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"result":{"additionalProperties":false,"properties":{"address":{"type":"string"},"bookmarks":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"available","type":"string"},"value":{"items":{"additionalProperties":false,"properties":{"address":{"type":"string"},"name":{"type":"string"}},"required":["address","name"],"type":"object"},"type":"array"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"remediation":{"type":"string"},"state":{"const":"unavailable","type":"string"}},"required":["state","reason","remediation"],"type":"object"}]},"comment":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"available","type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"remediation":{"type":"string"},"state":{"const":"unavailable","type":"string"}},"required":["state","reason","remediation"],"type":"object"}]},"document":{"anyOf":[{"type":"string"},{"type":"null"}]},"inline_comment":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"available","type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"remediation":{"type":"string"},"state":{"const":"unavailable","type":"string"}},"required":["state","reason","remediation"],"type":"object"}]},"name":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"available","type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"remediation":{"type":"string"},"state":{"const":"unavailable","type":"string"}},"required":["state","reason","remediation"],"type":"object"}]},"procedure":{"oneOf":[{"additionalProperties":false,"properties":{"state":{"const":"available","type":"string"},"value":{"$ref":"#/$defs/__schema0"}},"required":["state","value"],"type":"object"},{"additionalProperties":false,"properties":{"reason":{"type":"string"},"remediation":{"type":"string"},"state":{"const":"unavailable","type":"string"}},"required":["state","reason","remediation"],"type":"object"}]}},"required":["address","document","name","procedure","comment","inline_comment","bookmarks"],"type":"object"}},"required":["result"],"type":"object"},"requiresSession":true,"title":"Inspect Address Context"}]}'; const generatedPayload: unknown = JSON.parse(GENERATED_PAYLOAD_JSON); if (!isGeneratedPayload(generatedPayload)) throw new TypeError("Generated MCP catalog payload is invalid"); diff --git a/src/ghidra/GhidraAnalysisProfile.ts b/src/ghidra/GhidraAnalysisProfile.ts index 6d8f922fb7..92b558b056 100644 --- a/src/ghidra/GhidraAnalysisProfile.ts +++ b/src/ghidra/GhidraAnalysisProfile.ts @@ -28,12 +28,11 @@ export const resolveGhidraAnalysisProfile = ( return Promise.resolve(err(new AnalysisCancelledError("open_binary"))); if (target.kind !== "executable") return Promise.resolve(ok({ profile: null, compatibility: {} })); - const version = installation.providerVersion; - if (!installation.available || version === null) + if (installation.status === "unavailable") return Promise.resolve( err(new ProviderAdapterError(identity.id, "resolve_analysis_profile")), ); - const provider = { ...identity, version }; + const provider = { ...identity, version: installation.providerVersion }; return Promise.resolve( ok({ profile: createAnalysisProfile(provider, 1, { diff --git a/src/ghidra/GhidraDoctor.ts b/src/ghidra/GhidraDoctor.ts index 5918f484b8..f747c7f662 100644 --- a/src/ghidra/GhidraDoctor.ts +++ b/src/ghidra/GhidraDoctor.ts @@ -14,15 +14,13 @@ export const projectGhidraDoctorInspection = ( ): DoctorProviderInspection => ({ id: "ghidra", configured: inspection.installDir !== null, - available: inspection.available, + available: inspection.status === "available", providerVersion: inspection.providerVersion, registrationEnvironment: - inspection.available && inspection.installDir !== null + inspection.status === "available" ? { GHIDRA_INSTALL_DIR: inspection.installDir, - ...(inspection.javaHome === null - ? {} - : { JAVA_HOME: inspection.javaHome }), + JAVA_HOME: inspection.javaHome, } : {}, checks: selectedChecks(inspection).map((check) => @@ -54,14 +52,14 @@ const selectedChecks = ( ); const configuration = byName.get("configuration"); if (configuration === undefined) return []; - if (!configuration.ok) return [configuration]; + if (configuration.status === "failed") return [configuration]; const installation = byName.get("installation"); return [ configuration, byName.get("platform"), byName.get("architecture"), installation, - ...(installation?.ok === true + ...(installation?.status === "passed" ? [byName.get("version"), byName.get("headless")] : []), byName.get("java"), @@ -75,14 +73,16 @@ const projectCheck = ( configured: boolean, ): DoctorProviderCheck => ({ name: check.name, - ok: check.ok, - code: check.code, + ok: check.status === "passed", + code: check.status === "failed" ? check.code : null, detail: check.detail, - remediation: check.remediation, + remediation: check.status === "failed" ? check.remediation : null, classification: check.name === "platform" || check.name === "architecture" ? "unsupported_host" - : check.name === "java" && check.code === "runtime_missing" + : check.name === "java" && + check.status === "failed" && + check.code === "runtime_missing" ? "missing_dependency" : configured ? "config_drift" diff --git a/src/ghidra/GhidraInstallation.ts b/src/ghidra/GhidraInstallation.ts index 80feb0bc17..f16c7aaac2 100644 --- a/src/ghidra/GhidraInstallation.ts +++ b/src/ghidra/GhidraInstallation.ts @@ -20,45 +20,77 @@ export interface GhidraInstallationOptions { } /** One independently actionable part of the supported-installation contract. */ -export interface GhidraInstallationCheck { - readonly name: - | "configuration" - | "platform" - | "architecture" - | "installation" - | "version" - | "headless" - | "java"; - readonly ok: boolean; - readonly code: ProviderRejectionCode | null; - readonly detail: string; - readonly remediation: string | null; -} +export type GhidraInstallationCheck = + | { + readonly status: "passed"; + readonly name: GhidraInstallationCheckName; + readonly detail: string; + } + | { + readonly status: "failed"; + readonly name: GhidraInstallationCheckName; + readonly code: ProviderRejectionCode; + readonly detail: string; + readonly remediation: string; + }; -/** Bounded observation of a BYO Ghidra installation and JDK. */ -export interface GhidraInstallationInspection { - readonly available: boolean; +/** Stable identity for one Ghidra installation check. */ +export type GhidraInstallationCheckName = + | "configuration" + | "platform" + | "architecture" + | "installation" + | "version" + | "headless" + | "java"; + +interface GhidraInstallationObservation { readonly platform: NodeJS.Platform; readonly architecture: NodeJS.Architecture; + readonly applicationPropertiesPath: string | null; + readonly javaCommand: string; + readonly checks: readonly GhidraInstallationCheck[]; +} + +/** Bounded observation of a supported BYO Ghidra installation and JDK. */ +export interface AvailableGhidraInstallation + extends GhidraInstallationObservation { + readonly status: "available"; + readonly installDir: string; + readonly analyzeHeadlessPath: string; + readonly applicationPropertiesPath: string; + readonly providerVersion: string; + readonly javaHome: string; + readonly javaVersion: string; +} + +/** Bounded observation explaining why a BYO Ghidra installation is unusable. */ +export interface UnavailableGhidraInstallation + extends GhidraInstallationObservation { + readonly status: "unavailable"; readonly installDir: string | null; readonly analyzeHeadlessPath: string | null; - readonly applicationPropertiesPath: string | null; readonly providerVersion: string | null; - readonly javaCommand: string; readonly javaHome: string | null; readonly javaVersion: string | null; - readonly checks: readonly GhidraInstallationCheck[]; - readonly rejectionCode: ProviderRejectionCode | null; - readonly reason: string | null; + readonly rejection: Readonly<{ + code: ProviderRejectionCode; + reason: string; + }>; } +/** Parsed available or unavailable state of one BYO Ghidra installation. */ +export type GhidraInstallationInspection = + | AvailableGhidraInstallation + | UnavailableGhidraInstallation; + /** Parsed identity of the JDK selected for Ghidra. */ export interface GhidraJavaObservation { readonly version: string; readonly major: number; readonly home: string; readonly bits: number; - readonly jdk: boolean; + readonly runtime: "jdk" | "jre"; } /** Narrow synchronous seam used by provider discovery without launching Ghidra. */ @@ -77,8 +109,7 @@ interface GhidraInstallationCoordinates { readonly installDir: string | null; readonly applicationPropertiesPath: string | null; readonly analyzeHeadlessPath: string | null; - readonly propertiesAvailable: boolean; - readonly providerVersion: string | null; + readonly properties: Readonly<{ providerVersion: string | null }> | undefined; readonly javaCommand: string; readonly java: GhidraJavaObservation | undefined; } @@ -106,21 +137,56 @@ export const inspectGhidraInstallation = ( javaHome: options.javaHome, host, }); - const failed = checks.find(({ ok }) => !ok); - return { - available: failed === undefined, + const failed = checks.find( + (check): check is Extract => + check.status === "failed", + ); + const observation = { platform, architecture, + applicationPropertiesPath: coordinates.applicationPropertiesPath, + javaCommand: coordinates.javaCommand, + checks, + }; + if (failed !== undefined) + return { + status: "unavailable", + ...observation, + installDir: coordinates.installDir, + analyzeHeadlessPath: coordinates.analyzeHeadlessPath, + providerVersion: coordinates.properties?.providerVersion ?? null, + javaHome: coordinates.java?.home ?? options.javaHome ?? null, + javaVersion: coordinates.java?.version ?? null, + rejection: { code: failed.code, reason: failed.remediation }, + }; + return availableInstallation(coordinates, observation); +}; + +const availableInstallation = ( + coordinates: GhidraInstallationCoordinates, + observation: GhidraInstallationObservation, +): AvailableGhidraInstallation => { + const providerVersion = coordinates.properties?.providerVersion; + if ( + coordinates.installDir === null || + coordinates.applicationPropertiesPath === null || + coordinates.analyzeHeadlessPath === null || + providerVersion === null || + providerVersion === undefined || + coordinates.java === undefined + ) + throw new TypeError( + "Passing Ghidra installation checks produced incomplete coordinates", + ); + return { + status: "available", + ...observation, installDir: coordinates.installDir, analyzeHeadlessPath: coordinates.analyzeHeadlessPath, applicationPropertiesPath: coordinates.applicationPropertiesPath, - providerVersion: coordinates.providerVersion, - javaCommand: coordinates.javaCommand, - javaHome: coordinates.java?.home ?? options.javaHome ?? null, - javaVersion: coordinates.java?.version ?? null, - checks, - rejectionCode: failed?.code ?? null, - reason: failed?.remediation ?? null, + providerVersion, + javaHome: coordinates.java.home, + javaVersion: coordinates.java.version, }; }; @@ -161,11 +227,10 @@ const installationCoordinates = ( installDir, applicationPropertiesPath, analyzeHeadlessPath, - propertiesAvailable: properties !== undefined, - providerVersion: + properties: properties === undefined - ? null - : propertyValue(properties, "application.version"), + ? undefined + : { providerVersion: propertyValue(properties, "application.version") }, javaCommand, java: host.probeJava( javaCommand, @@ -183,7 +248,7 @@ const installationChecks = ({ }: GhidraInstallationCheckContext): readonly GhidraInstallationCheck[] => [ installationCheck({ name: "configuration", - ok: coordinates.installDir !== null, + passed: coordinates.installDir !== null, code: "not_configured", detail: coordinates.installDir ?? "GHIDRA_INSTALL_DIR is not set", remediation: @@ -191,7 +256,7 @@ const installationChecks = ({ }), installationCheck({ name: "platform", - ok: platform === "linux" || platform === "win32", + passed: platform === "linux" || platform === "win32", code: "unsupported_host", detail: platform, remediation: @@ -199,7 +264,7 @@ const installationChecks = ({ }), installationCheck({ name: "architecture", - ok: architecture === "x64", + passed: architecture === "x64", code: "unsupported_host", detail: architecture, remediation: @@ -207,7 +272,7 @@ const installationChecks = ({ }), installationCheck({ name: "installation", - ok: coordinates.propertiesAvailable, + passed: coordinates.properties !== undefined, code: "executable_missing", detail: coordinates.applicationPropertiesPath ?? @@ -217,17 +282,19 @@ const installationChecks = ({ }), installationCheck({ name: "version", - ok: coordinates.providerVersion === SUPPORTED_GHIDRA_VERSION, + passed: + coordinates.properties?.providerVersion === SUPPORTED_GHIDRA_VERSION, code: - coordinates.providerVersion === null + coordinates.properties?.providerVersion === null || + coordinates.properties?.providerVersion === undefined ? "version_unresolved" : "unsupported_version", - detail: coordinates.providerVersion ?? "unknown", + detail: coordinates.properties?.providerVersion ?? "unknown", remediation: `Install Ghidra ${SUPPORTED_GHIDRA_VERSION}, or update REA for a different Ghidra build.`, }), installationCheck({ name: "headless", - ok: + passed: coordinates.analyzeHeadlessPath !== null && host.executable(coordinates.analyzeHeadlessPath), code: "executable_missing", @@ -253,8 +320,8 @@ export const ghidraInstallationDiagnostics = ( architecture: inspection.architecture, checks: inspection.checks.map((check) => ({ name: check.name, - ok: check.ok, - code: check.code, + ok: check.status === "passed", + code: check.status === "failed" ? check.code : null, detail: check.detail, })), }); @@ -284,18 +351,26 @@ export const ghidraJavaEnvironment = ( }; }; -const installationCheck = ( - options: Omit & { - readonly code: ProviderRejectionCode; - readonly remediation: string; - }, -): GhidraInstallationCheck => ({ - name: options.name, - ok: options.ok, - code: options.ok ? null : options.code, - detail: options.detail, - remediation: options.ok ? null : options.remediation, -}); +const installationCheck = (options: { + readonly name: GhidraInstallationCheckName; + readonly passed: boolean; + readonly detail: string; + readonly code: ProviderRejectionCode; + readonly remediation: string; +}): GhidraInstallationCheck => + options.passed + ? { + status: "passed", + name: options.name, + detail: options.detail, + } + : { + status: "failed", + name: options.name, + code: options.code, + detail: options.detail, + remediation: options.remediation, + }; const javaCheck = ( observation: GhidraJavaObservation | undefined, @@ -306,14 +381,14 @@ const javaCheck = ( observation !== undefined && observation.major === SUPPORTED_GHIDRA_JAVA_MAJOR && observation.bits === 64 && - observation.jdk; + observation.runtime === "jdk"; const detail = observation === undefined ? command - : `${observation.version}; ${String(observation.bits)}-bit; ${observation.jdk ? "JDK" : "runtime only"}; ${observation.home}`; + : `${observation.version}; ${String(observation.bits)}-bit; ${observation.runtime === "jdk" ? "JDK" : "runtime only"}; ${observation.home}`; return installationCheck({ name: "java", - ok: supported, + passed: supported, code: observation === undefined ? "runtime_missing" : "unsupported_version", detail, remediation: @@ -375,13 +450,15 @@ const systemGhidraInstallationHost = (): GhidraInstallationHost => ({ major: javaMajor(version), home, bits, - jdk: executablePath( + runtime: executablePath( (process.platform === "win32" ? win32 : posix).join( home, "bin", process.platform === "win32" ? "javac.exe" : "javac", ), - ), + ) + ? "jdk" + : "jre", }; }, }); diff --git a/src/ghidra/GhidraProvider.test.ts b/src/ghidra/GhidraProvider.test.ts new file mode 100644 index 0000000000..e8777f603a --- /dev/null +++ b/src/ghidra/GhidraProvider.test.ts @@ -0,0 +1,42 @@ +import { describe, expect, it } from "vitest"; + +import { parseConfig } from "../config.js"; +import { silentLogger } from "../logger.js"; +import { GHIDRA_FUNCTION_OPERATIONS } from "./GhidraFunctionValues.js"; +import { GHIDRA_INVENTORY_OPERATIONS } from "./GhidraInventoryValues.js"; +import { GhidraProvider } from "./GhidraProvider.js"; + +describe("Ghidra provider capabilities", () => { + it("publishes only admitted immutable read-only operations", () => { + const config = parseConfig({}); + expect(config.ok).toBe(true); + if (!config.ok) return; + const provider = new GhidraProvider(config.value, silentLogger, { + readText: () => undefined, + executable: () => false, + probeJava: () => undefined, + }); + const capabilities = provider.capabilities(); + expect(capabilities.map(({ operation }) => operation).sort()).toEqual( + [...GHIDRA_INVENTORY_OPERATIONS, ...GHIDRA_FUNCTION_OPERATIONS].sort(), + ); + expect(Object.isFrozen(capabilities)).toBe(true); + for (const descriptor of capabilities) { + expect(descriptor).toMatchObject({ + available: true, + reason: null, + effects: { + mutatesArtifact: false, + mayShowUi: false, + mayAccessNetwork: false, + changesPermissions: false, + requiresRoot: false, + }, + }); + expect(Object.isFrozen(descriptor)).toBe(true); + expect(Object.isFrozen(descriptor.effects)).toBe(true); + expect(Object.isFrozen(descriptor.limits)).toBe(true); + expect(Object.isFrozen(descriptor.limitations)).toBe(true); + } + }); +}); diff --git a/src/ghidra/GhidraProvider.ts b/src/ghidra/GhidraProvider.ts index c1826c18dd..564e89f20a 100644 --- a/src/ghidra/GhidraProvider.ts +++ b/src/ghidra/GhidraProvider.ts @@ -104,7 +104,7 @@ export class GhidraProvider implements AnalysisProviderCandidate { const installation = this.#inspectInstallation(); const diagnostics = ghidraInstallationDiagnostics(installation); if ( - installation.available && + installation.status === "available" && installation.platform === "win32" && !hasWindowsNativeAuthority(installation.platform) ) @@ -119,7 +119,7 @@ export class GhidraProvider implements AnalysisProviderCandidate { ), }, }; - return installation.available + return installation.status === "available" ? { status: "available", code: null, @@ -128,9 +128,8 @@ export class GhidraProvider implements AnalysisProviderCandidate { } : { status: "unavailable", - code: installation.rejectionCode ?? "not_configured", - reason: - installation.reason ?? "Ghidra installation is not available.", + code: installation.rejection.code, + reason: installation.rejection.reason, diagnostics, }; } @@ -363,11 +362,7 @@ const ghidraClientPrerequisites = ( `Ghidra cannot import ${target.kind} targets through this adapter.`, ), ); - if ( - !installation.available || - installation.analyzeHeadlessPath === null || - installation.providerVersion === null - ) + if (installation.status === "unavailable") return err( new ProviderAdapterError("ghidra", "health", { diagnostics: ghidraInstallationDiagnostics(installation), diff --git a/src/hopper/HopperClient.ts b/src/hopper/HopperClient.ts index 8d5c00030d..cba58d7def 100644 --- a/src/hopper/HopperClient.ts +++ b/src/hopper/HopperClient.ts @@ -15,7 +15,7 @@ import { HopperStartError, hopperStartupFailure, HopperTimeoutError, - type HopperStartupDiagnostic, + type HopperStartupFailureDiagnostic, } from "../domain/errors.js"; import { err, ok, type Result } from "../domain/result.js"; import type { JsonValue } from "../domain/jsonValue.js"; @@ -90,7 +90,7 @@ export class HopperClient { #nextId = 1; #closing = false; #launcherExitCode: number | null | undefined; - #launcherFailureDiagnostic: HopperStartupDiagnostic | undefined; + #launcherFailureDiagnostic: HopperStartupFailureDiagnostic | undefined; #startupController: AbortController | undefined; #startPromise: Promise> | undefined; #closePromise: Promise> | undefined; diff --git a/src/hopper/HopperProcessDiagnostic.ts b/src/hopper/HopperProcessDiagnostic.ts index 2725b39ad1..21f9026aac 100644 --- a/src/hopper/HopperProcessDiagnostic.ts +++ b/src/hopper/HopperProcessDiagnostic.ts @@ -1,6 +1,6 @@ import { hopperStartupFailure, - type HopperStartupDiagnostic, + type HopperStartupFailureDiagnostic, } from "../domain/errors.js"; import type { ProviderProcessDiagnostic } from "../process/ProviderProcess.js"; import { parseLinuxPrivateDisplayDiagnostic } from "./LinuxPrivateDisplayDiagnostic.js"; @@ -8,7 +8,7 @@ import { parseLinuxPrivateDisplayDiagnostic } from "./LinuxPrivateDisplayDiagnos /** Extract only a matching, versioned Linux adapter failure record. */ export const hopperLauncherFailureDiagnostic = ( event: Extract, -): HopperStartupDiagnostic | undefined => { +): HopperStartupFailureDiagnostic | undefined => { const parsed = parseLinuxPrivateDisplayDiagnostic( event.snapshot.stderr.text, event.snapshot.stderr.truncated, diff --git a/src/hopper/HopperProvider.test.ts b/src/hopper/HopperProvider.test.ts new file mode 100644 index 0000000000..e0ec58b89f --- /dev/null +++ b/src/hopper/HopperProvider.test.ts @@ -0,0 +1,41 @@ +import { describe, expect, it } from "vitest"; + +import { parseConfig } from "../config.js"; +import { silentLogger } from "../logger.js"; +import { HopperProvider } from "./HopperProvider.js"; + +describe("Hopper provider capabilities", () => { + it("publishes deterministic immutable capability descriptors", () => { + const config = parseConfig({}); + expect(config.ok).toBe(true); + if (!config.ok) return; + const provider = new HopperProvider(config.value, silentLogger); + const capabilities = provider.capabilities(); + expect(capabilities).toHaveLength(37); + expect(new Set(capabilities.map(({ operation }) => operation)).size).toBe( + capabilities.length, + ); + expect(Object.isFrozen(capabilities)).toBe(true); + for (const descriptor of capabilities) { + expect(descriptor.provider).toEqual(provider.identity()); + expect(descriptor).toMatchObject({ + inputContractVersion: 1, + outputContractVersion: 1, + available: true, + reason: null, + }); + expect(Object.isFrozen(descriptor)).toBe(true); + expect(Object.isFrozen(descriptor.effects)).toBe(true); + expect(Object.isFrozen(descriptor.limits)).toBe(true); + expect(Object.isFrozen(descriptor.limitations)).toBe(true); + } + expect( + capabilities.find(({ operation }) => operation === "list_procedures"), + ).toMatchObject({ pagination: "offset" }); + expect( + capabilities.find(({ operation }) => operation === "set_comment"), + ).toMatchObject({ + effects: { mutatesArtifact: true, mayWriteFilesystem: true }, + }); + }); +}); diff --git a/src/hopper/LinuxPrivateDisplayDiagnostic.ts b/src/hopper/LinuxPrivateDisplayDiagnostic.ts index e53899dfa4..0506c1d470 100644 --- a/src/hopper/LinuxPrivateDisplayDiagnostic.ts +++ b/src/hopper/LinuxPrivateDisplayDiagnostic.ts @@ -7,39 +7,56 @@ import { export const LINUX_PRIVATE_DISPLAY_DIAGNOSTIC_PREFIX = "REA_X11_DIAGNOSTIC_V1="; -const diagnosticSchema = z - .object({ - schema_version: z.literal(1), - component: z.literal("hopper_private_display"), - operation: z.enum(["probe", "launch"]), - status: z.enum(["ready", "error"]), - failure_code: z.string().max(64).nullable(), - reason: z - .string() - .regex(/^[a-z0-9_]+$/u) - .max(64), - socket_directory: z.literal("/tmp/.X11-unix"), - socket_directory_mode: z - .string() - .regex(/^[0-7]{4}$/u) - .nullable(), - mount_read_only: z.boolean().nullable(), - effective_socket_directory_mode: z - .string() - .regex(/^[0-7]{4}$/u) - .nullable(), - effective_mount_read_only: z.boolean().nullable(), - wsl: z.boolean(), - strategy: z.enum(["direct", "user-mount-namespace", "unavailable"]), - fallback_reason: z - .string() - .regex(/^[a-z0-9_]+$/u) - .max(64) - .nullable(), - xvfb_stderr_bytes: z.number().int().nonnegative().safe(), - xvfb_stderr_truncated: z.boolean(), - }) - .strict(); +const diagnosticContextSchema = z.object({ + schema_version: z.literal(1), + component: z.literal("hopper_private_display"), + operation: z.enum(["probe", "launch"]), + reason: z + .string() + .regex(/^[a-z0-9_]+$/u) + .max(64), + socket_directory: z.literal("/tmp/.X11-unix"), + socket_directory_mode: z + .string() + .regex(/^[0-7]{4}$/u) + .nullable(), + mount_read_only: z.boolean().nullable(), + effective_socket_directory_mode: z + .string() + .regex(/^[0-7]{4}$/u) + .nullable(), + effective_mount_read_only: z.boolean().nullable(), + wsl: z.boolean(), + strategy: z.enum(["direct", "user-mount-namespace", "unavailable"]), + fallback_reason: z + .string() + .regex(/^[a-z0-9_]+$/u) + .max(64) + .nullable(), + xvfb_stderr_bytes: z.number().int().nonnegative().safe(), + xvfb_stderr_truncated: z.boolean(), +}); + +const failureCodeSchema = z + .string() + .max(64) + .transform((value, context) => { + if (isHopperStartupFailureCode(value)) return value; + context.addIssue({ + code: "custom", + message: "Unknown startup failure code", + }); + return z.NEVER; + }); + +const diagnosticSchema = z.discriminatedUnion("status", [ + diagnosticContextSchema + .extend({ status: z.literal("ready"), failure_code: z.null() }) + .strict(), + diagnosticContextSchema + .extend({ status: z.literal("error"), failure_code: failureCodeSchema }) + .strict(), +]); export type LinuxPrivateDisplayDiagnosticParse = | { readonly ok: true; readonly value: HopperStartupDiagnostic } @@ -70,21 +87,7 @@ export const parseLinuxPrivateDisplayDiagnostic = ( JSON.parse(record.slice(LINUX_PRIVATE_DISPLAY_DIAGNOSTIC_PREFIX.length)), ); if (!parsed.success) return { ok: false, reason: "diagnostic_malformed" }; - const code = parsed.data.failure_code; - if (code !== null && !isHopperStartupFailureCode(code)) - return { ok: false, reason: "diagnostic_malformed" }; - if ( - (parsed.data.status === "ready" && code !== null) || - (parsed.data.status === "error" && code === null) - ) - return { ok: false, reason: "diagnostic_malformed" }; - return { - ok: true, - value: { - ...parsed.data, - failure_code: code, - }, - }; + return { ok: true, value: parsed.data }; } catch { return { ok: false, reason: "diagnostic_malformed" }; } diff --git a/src/hopper/LinuxPrivateDisplayProbe.ts b/src/hopper/LinuxPrivateDisplayProbe.ts index 192c78d7c1..eeb0a60320 100644 --- a/src/hopper/LinuxPrivateDisplayProbe.ts +++ b/src/hopper/LinuxPrivateDisplayProbe.ts @@ -4,7 +4,9 @@ import { hopperStartupExitCode, type HopperPrivateDisplayStrategy, type HopperStartupDiagnostic, + type HopperStartupFailureDiagnostic, type HopperStartupFailureCode, + type HopperStartupReadyDiagnostic, } from "../domain/hopperStartupFailure.js"; import { cleanupOwnedProcessGroup } from "../process/ProcessOwnership.js"; import { @@ -46,13 +48,13 @@ export type LinuxPrivateDisplaySelection = | { readonly ok: true; readonly strategy: LinuxPrivateDisplayRunnableStrategy; - readonly diagnostic: HopperStartupDiagnostic; + readonly diagnostic: HopperStartupReadyDiagnostic; } | { readonly ok: false; readonly strategy: "unavailable"; readonly exitCode: number; - readonly diagnostic: HopperStartupDiagnostic; + readonly diagnostic: HopperStartupFailureDiagnostic; }; /** Probe the exact Xvfb boundary and select the least-privileged viable strategy. */ @@ -188,11 +190,11 @@ const evaluatedProbe = async ( | { readonly ok: true; readonly strategy: LinuxPrivateDisplayRunnableStrategy; - readonly diagnostic: HopperStartupDiagnostic; + readonly diagnostic: HopperStartupReadyDiagnostic; } | { readonly ok: false; - readonly diagnostic: HopperStartupDiagnostic; + readonly diagnostic: HopperStartupFailureDiagnostic; } > => { let processResult: LinuxPrivateDisplayProbeProcessResult; @@ -258,14 +260,13 @@ const exitMatchesDiagnostic = ( ): boolean => diagnostic.status === "ready" ? exitCode === 0 - : diagnostic.failure_code !== null && - hopperStartupExitCode(diagnostic.failure_code) === exitCode; + : hopperStartupExitCode(diagnostic.failure_code) === exitCode; const syntheticDiagnostic = ( strategy: LinuxPrivateDisplayRunnableStrategy, reason: string, failureCode: HopperStartupFailureCode = "private_display_unavailable", -): HopperStartupDiagnostic => ({ +): HopperStartupFailureDiagnostic => ({ schema_version: 1, component: "hopper_private_display", operation: "probe", @@ -285,14 +286,11 @@ const syntheticDiagnostic = ( }); const unavailable = ( - diagnostic: HopperStartupDiagnostic, + diagnostic: HopperStartupFailureDiagnostic, ): LinuxPrivateDisplaySelection => ({ ok: false, strategy: "unavailable", - exitCode: - diagnostic.failure_code === null - ? 70 - : (hopperStartupExitCode(diagnostic.failure_code) ?? 70), + exitCode: hopperStartupExitCode(diagnostic.failure_code) ?? 70, diagnostic: { ...diagnostic, strategy: "unavailable" }, }); diff --git a/src/server/ProcessCaptureElicitation.ts b/src/server/ProcessCaptureElicitation.ts index b44d7022b6..7d1e50b8cc 100644 --- a/src/server/ProcessCaptureElicitation.ts +++ b/src/server/ProcessCaptureElicitation.ts @@ -83,15 +83,14 @@ export const authorizeProcessCaptureWithElicitation = async ( context: ProcessCaptureElicitationContext, elicitation: ProcessCaptureElicitation, ): Promise => { - const supported = elicitation.supported(context); const initial = await authority.authorize(request, "read", { - elicitationSupported: supported, + remediation: elicitation.supported(context) ? "elicit" : "configure", }); if (initial.ok || !(initial.error instanceof PermissionRequiredError)) return initial; const denied = initial.error; if ( - !supported || + denied.remediation !== "elicit" || denied.requested.capability !== "process_capture" || denied.ceiling === null || !isPermissionRequestWithinCeiling(denied.requested, denied.ceiling) @@ -172,12 +171,12 @@ const grantAndAuthorize = async ( const granted = authority.grant(grant); if (!granted.ok) return authority.authorize(request, "read", { - elicitationSupported: true, + remediation: "elicit", }); let authorized: PermissionResult; try { authorized = await authority.authorize(request, "read", { - elicitationSupported: true, + remediation: "elicit", }); } catch (cause: unknown) { authority.revoke(grant.grant_id); diff --git a/src/server/promptCompletion.ts b/src/server/promptCompletion.ts index b94b24677d..b0a7afd7ce 100644 --- a/src/server/promptCompletion.ts +++ b/src/server/promptCompletion.ts @@ -5,10 +5,7 @@ import type { BinarySessionPort } from "../application/BinarySession.js"; import type { PromptCompletionKind } from "../contracts/promptContracts.js"; import { artifactInventoryResultSchema } from "../domain/artifactGraph.js"; import { parseAddressedPage } from "../domain/hopperValues.js"; -import { - processCaptureSchema, - validateProcessCapture, -} from "../domain/processCapture.js"; +import { processCaptureSchema } from "../domain/processCapture.js"; const COMPLETION_SCAN_LIMIT = 10_000; const PROCEDURE_PAGE_SIZE = 500; @@ -183,7 +180,7 @@ const evidenceValues = ( const isProcessCaptureEvidence = (evidence: LedgerEvidence): boolean => { if (evidence.operation !== "capture_process_scenario") return false; const capture = processCaptureSchema.safeParse(evidence.normalized_result); - return capture.success && validateProcessCapture(capture.data).length === 0; + return capture.success; }; const unknownCandidates = ( diff --git a/tests/acceptance/applications/applicationEvidenceMcp.test.ts b/tests/acceptance/applications/applicationEvidenceMcp.test.ts index a057473973..1e8bc1eeeb 100644 --- a/tests/acceptance/applications/applicationEvidenceMcp.test.ts +++ b/tests/acceptance/applications/applicationEvidenceMcp.test.ts @@ -1,7 +1,7 @@ import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { describe, expect, it } from "vitest"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { BinarySession } from "../../../src/application/BinarySession.js"; import { createServer } from "../../../src/server/createServer.js"; import { @@ -22,7 +22,7 @@ interface TestHarness { } async function createTestHarness(): Promise { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/acceptance/applications/applicationExportShapeMcp.test.ts b/tests/acceptance/applications/applicationExportShapeMcp.test.ts index d00b8fe588..1926be1430 100644 --- a/tests/acceptance/applications/applicationExportShapeMcp.test.ts +++ b/tests/acceptance/applications/applicationExportShapeMcp.test.ts @@ -5,7 +5,7 @@ import { join, resolve } from "node:path"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { createServer } from "../../../src/server/createServer.js"; import { observed } from "../../fixtures/analysisExecution.js"; import { analyzeJavaScriptApplication } from "../../../src/application/JavaScriptApplicationService.js"; @@ -45,7 +45,7 @@ describe("application workflow MCP parity", () => { ]); if (!left.ok) throw left.error; if (!right.ok) throw right.error; - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/acceptance/applications/applicationReplayMcp.test.ts b/tests/acceptance/applications/applicationReplayMcp.test.ts index 86e2e10ce9..06abef8a08 100644 --- a/tests/acceptance/applications/applicationReplayMcp.test.ts +++ b/tests/acceptance/applications/applicationReplayMcp.test.ts @@ -4,7 +4,7 @@ import { readFile, realpath } from "node:fs/promises"; import { resolve } from "node:path"; import { describe, expect, it } from "vitest"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { BinarySession } from "../../../src/application/BinarySession.js"; import type { EnabledJavaScriptReplayPolicy } from "../../../src/application/JavaScriptReplayPlanning.js"; import { PermissionAuthority } from "../../../src/application/PermissionAuthority.js"; @@ -59,7 +59,7 @@ function createReplayAuthority(policy: ReturnType) { function createReplayScenario(root: string) { const policy = createReplayPolicy(root); - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/acceptance/applications/javascriptApplicationWorkflows.test.ts b/tests/acceptance/applications/javascriptApplicationWorkflows.test.ts index 4f450fbfe2..8f562eebb4 100644 --- a/tests/acceptance/applications/javascriptApplicationWorkflows.test.ts +++ b/tests/acceptance/applications/javascriptApplicationWorkflows.test.ts @@ -15,7 +15,7 @@ import { applicationFeatureTraceResultSchema } from "../../../src/domain/javascr import { APPLICATION_GRAPH_DIGESTS, buildSyntheticJavaScriptApplicationGraph, -} from "../../fixtures/javascriptApplicationGraph.js"; +} from "../../../src/domain/javascriptApplicationGraph.fixture.js"; import { writeVersionedJavaScriptApplicationFixtures } from "../../fixtures/javascriptArtifactApplication.js"; import { permissionAuthorityForRoot } from "../../fixtures/permissionAuthority.js"; diff --git a/tests/boundary/browser/electronActiveActions.test.ts b/tests/boundary/browser/electronActiveActions.test.ts index 4b6becc782..2a0fb93748 100644 --- a/tests/boundary/browser/electronActiveActions.test.ts +++ b/tests/boundary/browser/electronActiveActions.test.ts @@ -1,7 +1,11 @@ import { expect, it } from "vitest"; -import { electronActiveObservationInputSchema } from "../../../src/domain/electronActiveObservation.js"; +import { + electronActiveObservationInputSchema, + electronActiveObservationResultSchema, +} from "../../../src/domain/electronActiveObservation.js"; import { runElectronActions } from "../../../src/browser/PlaywrightElectronActiveActions.js"; +import { createElectronActiveObservationFixtureResult } from "../../fixtures/electronActiveObservationResult.js"; it("parses bounded window, renderer, and deep-link actions for agents", () => { const input = electronActiveObservationInputSchema.parse({ @@ -133,3 +137,23 @@ it("runs an untargeted deep-link without requiring a BrowserWindow", async () => }, ]); }); + +it("rejects action outcomes that disagree with their error state", () => { + const result = createElectronActiveObservationFixtureResult("/opt/app"); + const action = result.actions[0]; + expect(action).toBeDefined(); + if (action === undefined) return; + + expect( + electronActiveObservationResultSchema.safeParse({ + ...result, + actions: [{ ...action, error: "unexpected failure" }], + }).success, + ).toBe(false); + expect( + electronActiveObservationResultSchema.safeParse({ + ...result, + actions: [{ ...action, status: "failed", error: null }], + }).success, + ).toBe(false); +}); diff --git a/tests/boundary/cli/cliOutput.test.ts b/tests/boundary/cli/cliOutput.test.ts index 7b60aed3c2..c1a980becd 100644 --- a/tests/boundary/cli/cliOutput.test.ts +++ b/tests/boundary/cli/cliOutput.test.ts @@ -4,7 +4,7 @@ import { join } from "node:path"; import { createPackageWithOptions } from "@electron/asar"; import { describe, expect, it } from "vitest"; -import { fixtureTest } from "../../support/fixtures.js"; +import { workspaceCliTest } from "../../support/cli/workspaceCliFixture.js"; import { renderCliOutputArgumentError, @@ -58,7 +58,7 @@ describe("CLI output argument and sanitization boundary", () => { ).toEqual({ ok: true }); }); - fixtureTest( + workspaceCliTest( "fails before emitting a truncated JSON document", async ({ cli }) => { const result = await cli.run({ @@ -125,7 +125,7 @@ describe("CLI output argument and sanitization boundary", () => { }); describe("compiled CLI output boundary", () => { - fixtureTest( + workspaceCliTest( "sanitizes a real missing-argument dispatcher failure", async ({ cli }) => { const ordinary = await cli.run({ arguments: ["analyze"] }); @@ -153,7 +153,7 @@ describe("compiled CLI output boundary", () => { CLI_INTEGRATION_TIMEOUT_MS, ); - fixtureTest( + workspaceCliTest( "preserves artifact diagnostics in ordinary and full JSON output", async ({ cli, workspace }) => { const source = workspace.path("source"); @@ -178,7 +178,7 @@ describe("compiled CLI output boundary", () => { CLI_INTEGRATION_TIMEOUT_MS, ); - fixtureTest( + workspaceCliTest( "keeps operation failure status independent of output controls", async ({ cli }) => { const variants = [ @@ -212,7 +212,7 @@ describe("compiled CLI output boundary", () => { CLI_VARIANT_TIMEOUT_MS, ); - fixtureTest( + workspaceCliTest( "keeps failure logs out of structured stdout", async ({ cli }) => { const result = await cli.run({ diff --git a/tests/boundary/cli/dispatcher.test.ts b/tests/boundary/cli/dispatcher.test.ts index f5e744ed7a..5236e9f86d 100644 --- a/tests/boundary/cli/dispatcher.test.ts +++ b/tests/boundary/cli/dispatcher.test.ts @@ -3,10 +3,10 @@ import { join } from "node:path"; import { describe, expect } from "vitest"; -import { fixtureTest } from "../../support/fixtures.js"; +import { workspaceCliTest } from "../../support/cli/workspaceCliFixture.js"; describe("executable dispatcher", () => { - fixtureTest( + workspaceCliTest( "reserves production MCP routing for bare mode arguments", async ({ processes, workspace }) => { const scripts = await workspace.mkdir("scripts"); @@ -62,7 +62,7 @@ describe("executable dispatcher", () => { }, ); - fixtureTest( + workspaceCliTest( "explains how to restore a missing compiled runtime", async ({ processes, workspace }) => { const scripts = await workspace.mkdir("scripts"); diff --git a/tests/boundary/cli/doctor.test.ts b/tests/boundary/cli/doctor.test.ts index 2c34411b88..2345bbd121 100644 --- a/tests/boundary/cli/doctor.test.ts +++ b/tests/boundary/cli/doctor.test.ts @@ -1,4 +1,5 @@ import { describe, expect, it } from "vitest"; +import type { ClientRegistrationStatus } from "../../../src/application/ClientRegistrationStatus.js"; import { runDoctor, type DoctorHost } from "../../../src/application/Doctor.js"; import { CATALOG_IDENTITY } from "../../../src/catalogIdentity.js"; import { PRODUCT_IDENTITY } from "../../../src/identity.js"; @@ -248,19 +249,19 @@ describe("doctor installation identity", () => { describe("doctor scoped readiness", () => { it("scopes effective readiness to selected clients without hiding drift", async () => { - const registrations = [ + const registrations: readonly ClientRegistrationStatus[] = [ { client: "codex", config_path: "/home/user/.codex/config.toml", command: ["/current/rea", "mcp"], - state: "aligned" as const, + state: "aligned", remediation: null, }, { client: "cursor", config_path: "/home/user/.cursor/mcp.json", command: ["/old/rea", "mcp"], - state: "stale" as const, + state: "stale", remediation: "Run rea setup to refresh this registration.", }, ]; diff --git a/tests/boundary/filesystem/analysisSnapshot.test.ts b/tests/boundary/filesystem/analysisSnapshot.test.ts new file mode 100644 index 0000000000..258dc36dd0 --- /dev/null +++ b/tests/boundary/filesystem/analysisSnapshot.test.ts @@ -0,0 +1,86 @@ +import { readFile, stat, writeFile } from "node:fs/promises"; +import { join } from "node:path"; + +import { describe, expect, it } from "vitest"; + +import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; + +import { createAnalysisExecution } from "../../../src/application/AnalysisProvider.js"; +import { + readAnalysisSnapshot, + writeAnalysisSnapshot, +} from "../../../src/application/AnalysisSnapshotFiles.js"; +import { + createAnalysisSnapshotEntry, + parseAnalysisSnapshot, + snapshotBinding, + snapshotTarget, + type AnalysisSnapshot, +} from "../../../src/domain/analysisSnapshot.js"; +import { + ANALYSIS_SNAPSHOT_PROFILE as PROFILE, + ANALYSIS_SNAPSHOT_PROVIDER as PROVIDER, + ANALYSIS_SNAPSHOT_TARGET as TARGET, +} from "../../../src/domain/analysisSnapshot.fixture.js"; +import { createEvidenceBundle } from "../../../src/domain/evidenceBundle.js"; + +describe("analysis snapshots: persistence", () => { + it("writes canonical private v2 JSON and rejects changed query identity", async () => { + const directory = await createTestTempDirectory("rea-snapshot-"); + const path = join(directory, "analysis.json"); + const target = snapshotTarget(TARGET); + const binding = snapshotBinding(PROFILE); + const entry = createAnalysisSnapshotEntry({ + target, + binding, + operation: "address_name", + parameters: { address: "0x1000" }, + execution: createAnalysisExecution("main", PROVIDER, { + analysisProfile: PROFILE, + }), + }); + const snapshot: AnalysisSnapshot = { + snapshot_version: 2, + target, + binding, + entries: [entry], + evidence_bundle: createEvidenceBundle([]), + }; + const policy = { + roots: [directory], + maxBytes: 1024 * 1024, + maxDepth: 64, + maxStringLength: 1024, + maxNodes: 10_000, + }; + const written = await writeAnalysisSnapshot(snapshot, path, false, policy); + expect(written.ok).toBe(true); + expect((await readFile(path, "utf8")).endsWith("\n")).toBe(true); + expect((await stat(path)).mode & 0o777).toBe(0o600); + expect((await readAnalysisSnapshot(path, policy)).ok).toBe(true); + + const altered: unknown = JSON.parse(await readFile(path, "utf8")); + if ( + typeof altered !== "object" || + altered === null || + !("entries" in altered) || + !Array.isArray(altered.entries) + ) + throw new TypeError("fixture snapshot is malformed"); + const first: unknown = altered.entries[0]; + if ( + typeof first !== "object" || + first === null || + !("parameters" in first) || + typeof first.parameters !== "object" || + first.parameters === null + ) + throw new TypeError("fixture entry is malformed"); + Reflect.set(first.parameters, "address", "0x2000"); + await writeFile(path, JSON.stringify(altered)); + const loaded = await readAnalysisSnapshot(path, policy); + expect(loaded.ok).toBe(false); + if (!loaded.ok) expect(loaded.error._tag).toBe("EvidenceIntegrityError"); + expect(() => parseAnalysisSnapshot(altered)).toThrow(/identifier/u); + }); +}); diff --git a/tests/composition/analysis-sessions/artifactInventorySnapshot.test.ts b/tests/boundary/filesystem/artifactInventorySnapshot.test.ts similarity index 100% rename from tests/composition/analysis-sessions/artifactInventorySnapshot.test.ts rename to tests/boundary/filesystem/artifactInventorySnapshot.test.ts diff --git a/tests/composition/analysis-sessions/authorizedArtifactInventory.test.ts b/tests/boundary/filesystem/authorizedArtifactInventory.test.ts similarity index 59% rename from tests/composition/analysis-sessions/authorizedArtifactInventory.test.ts rename to tests/boundary/filesystem/authorizedArtifactInventory.test.ts index b14dceb6f7..7b864132bb 100644 --- a/tests/composition/analysis-sessions/authorizedArtifactInventory.test.ts +++ b/tests/boundary/filesystem/authorizedArtifactInventory.test.ts @@ -1,4 +1,4 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; import { describe, expect, it } from "vitest"; @@ -19,17 +19,13 @@ const LIMITS = { describe("authorized artifact inventory", () => { it("uses a valid input root when another configured root is missing", async () => { const root = await createTestTempDirectory("rea-artifact-roots-"); - try { - const path = join(root, "artifact.js"); - await writeFile(path, "export const value = 1;\n"); - const inventory = await scanAuthorizedArtifactInventory( - path, - [join(root, "missing"), root], - LIMITS, - ); - expect(inventory.manifest.root_format).toBe("javascript-bundle"); - } finally { - await rm(root, { recursive: true, force: true }); - } + const path = join(root, "artifact.js"); + await writeFile(path, "export const value = 1;\n"); + const inventory = await scanAuthorizedArtifactInventory( + path, + [join(root, "missing"), root], + LIMITS, + ); + expect(inventory.manifest.root_format).toBe("javascript-bundle"); }); }); diff --git a/tests/composition/analysis-sessions/binaryTarget.test.ts b/tests/boundary/filesystem/binaryTarget.test.ts similarity index 50% rename from tests/composition/analysis-sessions/binaryTarget.test.ts rename to tests/boundary/filesystem/binaryTarget.test.ts index e2928208b5..ced6f9111f 100644 --- a/tests/composition/analysis-sessions/binaryTarget.test.ts +++ b/tests/boundary/filesystem/binaryTarget.test.ts @@ -1,99 +1,12 @@ -import { mkdir, realpath, rm, symlink, writeFile } from "node:fs/promises"; +import { mkdir, realpath, symlink, writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; + +import { parseBinaryTarget } from "../../../src/domain/binaryTarget.js"; +import { pe, thinMach } from "../../../src/domain/binaryTarget.fixture.js"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { - parseBinaryTarget, - parseExecutableHeader, -} from "../../../src/domain/binaryTarget.js"; - -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - -describe("executable header parsing", () => { - it.each([ - [elf(1, 1, 62), "elf", "x86_64"], - [elf(2, 2, 183), "elf", "arm64"], - [thinMach(0xfeedfacf, 0x0100000c), "mach-o", "arm64"], - [thinMach(0xcefaedfe, 0x01000007), "mach-o", "x86_64"], - [pe(0x8664), "pe", "x86_64"], - [pe(0xaa64), "pe", "arm64"], - ] as const)("parses metadata for %s", (bytes, format, architecture) => { - const result = parseExecutableHeader(bytes, "arm64"); - expect(result.ok && result.value).toMatchObject({ format, architecture }); - }); - - it("distinguishes native PE applications, DLLs, and managed assemblies", () => { - const application = parseExecutableHeader(pe(0x8664), "x64"); - const library = parseExecutableHeader(pe(0x8664, 64, 0x2002), "x64"); - const managed = parseExecutableHeader(pe(0x8664, 64, 0x0002, true), "x64"); - const nonExecutable = parseExecutableHeader(pe(0x8664, 64, 0), "x64"); - - expect(application.ok && application.value).toMatchObject({ - executableRole: "application", - managed: false, - }); - expect(library.ok && library.value).toMatchObject({ - executableRole: "shared-library", - managed: false, - }); - expect(managed.ok && managed.value).toMatchObject({ - executableRole: "application", - managed: true, - }); - expect(nonExecutable.ok && nonExecutable.value).toMatchObject({ - executableRole: "non-executable", - managed: false, - }); - }); - - it("selects the host architecture from a FAT table", () => { - const bytes = fat([0x01000007, 0x0100000c]); - const arm = parseExecutableHeader(bytes, "arm64"); - const intel = parseExecutableHeader(bytes, "x64"); - expect(arm.ok && arm.value).toMatchObject({ - architecture: "arm64", - availableArchitectures: ["x86_64", "arm64"], - }); - expect(intel.ok && intel.value).toMatchObject({ - architecture: "x86_64", - availableArchitectures: ["x86_64", "arm64"], - }); - }); - - it("rejects FAT files without a host-compatible slice", () => { - expect(parseExecutableHeader(fat([0x01000007]), "arm64")).toMatchObject({ - ok: false, - }); - }); - - it.each([ - Buffer.alloc(0), - Buffer.from([0x7f, 0x45, 0x4c, 0x46]), - fat([], 2), - pe(0xffff), - ])("rejects malformed, truncated, or unsupported metadata", (bytes) => { - expect(parseExecutableHeader(bytes, "arm64").ok).toBe(false); - }); - - it("rejects malformed PE optional-header commitments", () => { - const wrongMagic = pe(0x8664); - wrongMagic.writeUInt16LE(0x10b, 64 + 24); - const truncatedDirectories = pe(0x8664); - truncatedDirectories.writeUInt16LE(112, 64 + 20); - truncatedDirectories.writeUInt32LE(16, 64 + 24 + 108); - - expect(parseExecutableHeader(wrongMagic, "x64").ok).toBe(false); - expect(parseExecutableHeader(truncatedDirectories, "x64").ok).toBe(false); - }); -}); - describe("binary target I/O", () => { it("classifies ZIP package families and text artifacts without Hopper", async () => { const directory = await createTestTempDirectory("rea-artifact-target-"); @@ -142,7 +55,7 @@ describe("binary target I/O", () => { }); it("resolves relative Hopper databases and rejects unknown or unreadable paths", async () => { - directory = await createTestTempDirectory("rea-target-"); + const directory = await createTestTempDirectory("rea-target-"); await writeFile(join(directory, "sample.hop"), "database"); await writeFile(join(directory, "text"), "hello"); const database = await parseBinaryTarget("sample.hop", directory); @@ -154,12 +67,12 @@ describe("binary target I/O", () => { }); it("rejects non-regular targets before reading them", async () => { - directory = await createTestTempDirectory("rea-target-"); + const directory = await createTestTempDirectory("rea-target-"); expect((await parseBinaryTarget(directory)).ok).toBe(false); }); it("resolves a macOS app bundle to its declared program file", async () => { - directory = await createTestTempDirectory("rea-target-"); + const directory = await createTestTempDirectory("rea-target-"); const app = join(directory, "Example App.app"); const contents = join(app, "Contents"); const programs = join(contents, "MacOS"); @@ -191,7 +104,7 @@ describe("binary target I/O", () => { "CFBundleExecutableMissing", ], ])("rejects an app bundle with %s", async (_case, plist) => { - directory = await createTestTempDirectory("rea-target-"); + const directory = await createTestTempDirectory("rea-target-"); const app = join(directory, "Broken.app"); const contents = join(app, "Contents"); await mkdir(join(contents, "MacOS"), { recursive: true }); @@ -203,7 +116,7 @@ describe("binary target I/O", () => { it.skipIf(process.platform === "win32")( "rejects an app program symlink that leaves the bundle", async () => { - directory = await createTestTempDirectory("rea-target-"); + const directory = await createTestTempDirectory("rea-target-"); const app = join(directory, "Escaping.app"); const contents = join(app, "Contents"); const programs = join(contents, "MacOS"); @@ -220,7 +133,7 @@ describe("binary target I/O", () => { ); it("honors an explicit database kind without relying on the file suffix", async () => { - directory = await createTestTempDirectory("rea-target-"); + const directory = await createTestTempDirectory("rea-target-"); await writeFile(join(directory, "saved-analysis"), "database"); const result = await parseBinaryTarget( "saved-analysis", @@ -235,7 +148,7 @@ describe("binary target I/O", () => { }); it("reads a PE header beyond the initial probe", async () => { - directory = await createTestTempDirectory("rea-target-"); + const directory = await createTestTempDirectory("rea-target-"); const path = join(directory, "delayed.exe"); await writeFile(path, pe(0x8664, 8192)); const result = await parseBinaryTarget(path, directory, "x64"); @@ -245,51 +158,3 @@ describe("binary target I/O", () => { }); }); }); - -const elf = (class_: number, endian: number, machine: number): Buffer => { - const bytes = Buffer.alloc(20); - bytes.set([0x7f, 0x45, 0x4c, 0x46, class_, endian]); - if (endian === 1) bytes.writeUInt16LE(machine, 18); - else bytes.writeUInt16BE(machine, 18); - return bytes; -}; -const thinMach = (magic: number, cpu: number): Buffer => { - const bytes = Buffer.alloc(8); - bytes.writeUInt32BE(magic, 0); - if (magic === 0xcefaedfe || magic === 0xcffaedfe) bytes.writeUInt32LE(cpu, 4); - else bytes.writeUInt32BE(cpu, 4); - return bytes; -}; -const fat = (cpus: readonly number[], declared = cpus.length): Buffer => { - const bytes = Buffer.alloc(8 + cpus.length * 20); - bytes.writeUInt32BE(0xcafebabe, 0); - bytes.writeUInt32BE(declared, 4); - cpus.forEach((cpu, index) => bytes.writeUInt32BE(cpu, 8 + index * 20)); - return bytes; -}; -const pe = ( - machine: number, - offset = 64, - characteristics = 0x0002, - managed = false, -): Buffer => { - const optionalHeaderSize = - machine === 0x014c || machine === 0x01c0 ? 224 : 240; - const bytes = Buffer.alloc(Math.max(512, offset + 24 + optionalHeaderSize)); - bytes.write("MZ", 0, "ascii"); - bytes.writeUInt32LE(offset, 0x3c); - bytes.write("PE\0\0", offset, "binary"); - bytes.writeUInt16LE(machine, offset + 4); - bytes.writeUInt16LE(optionalHeaderSize, offset + 20); - bytes.writeUInt16LE(characteristics, offset + 22); - const optionalHeader = offset + 24; - const pe32 = machine === 0x014c || machine === 0x01c0; - bytes.writeUInt16LE(pe32 ? 0x10b : 0x20b, optionalHeader); - const directoryOffset = pe32 ? 96 : 112; - bytes.writeUInt32LE(16, optionalHeader + directoryOffset - 4); - if (managed) { - bytes.writeUInt32LE(0x2000, optionalHeader + directoryOffset + 14 * 8); - bytes.writeUInt32LE(72, optionalHeader + directoryOffset + 14 * 8 + 4); - } - return bytes; -}; diff --git a/tests/composition/setup-lifecycle/clientRegistrationStatus.test.ts b/tests/boundary/filesystem/clientRegistrationStatus.test.ts similarity index 81% rename from tests/composition/setup-lifecycle/clientRegistrationStatus.test.ts rename to tests/boundary/filesystem/clientRegistrationStatus.test.ts index 2f1a0ff08a..d868ba479d 100644 --- a/tests/composition/setup-lifecycle/clientRegistrationStatus.test.ts +++ b/tests/boundary/filesystem/clientRegistrationStatus.test.ts @@ -34,14 +34,29 @@ describe("client registration status", () => { const statuses = await readClientRegistrationStatuses(home, "/current/rea"); expect(statuses).toEqual( expect.arrayContaining([ - expect.objectContaining({ client: "codex", state: "aligned" }), + expect.objectContaining({ + client: "codex", + state: "aligned", + remediation: null, + }), expect.objectContaining({ client: "cursor", state: "stale", command: ["/old/rea", "mcp"], + remediation: expect.any(String), + }), + expect.objectContaining({ + client: "gemini_cli", + state: "invalid", + command: [], + remediation: expect.any(String), + }), + expect.objectContaining({ + client: "claude_code", + state: "missing", + command: [], + remediation: expect.any(String), }), - expect.objectContaining({ client: "gemini_cli", state: "invalid" }), - expect.objectContaining({ client: "claude_code", state: "missing" }), ]), ); expect(JSON.stringify(statuses)).not.toContain("SECRET"); diff --git a/tests/boundary/filesystem/dependencyInstall.test.ts b/tests/boundary/filesystem/dependencyInstall.test.ts index 8e3d59955d..cbe12b3056 100644 --- a/tests/boundary/filesystem/dependencyInstall.test.ts +++ b/tests/boundary/filesystem/dependencyInstall.test.ts @@ -1,26 +1,18 @@ -import { copyFile, mkdir, rm, writeFile } from "node:fs/promises"; +import { copyFile, mkdir, writeFile } from "node:fs/promises"; import { join } from "node:path"; import { spawnSync } from "node:child_process"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -const roots: string[] = []; const script = join(process.cwd(), "scripts", "check-dependency-install.mjs"); -afterEach(async () => { - await Promise.all( - roots.splice(0).map((root) => rm(root, { recursive: true })), - ); -}); - const fixture = async ( installedVersion?: string, omitDevDependency = false, ) => { const root = await createTestTempDirectory("rea-deps-"); - roots.push(root); await mkdir(join(root, "node_modules")); await writeFile( join(root, "package-lock.json"), diff --git a/tests/composition/runtime-observation/electronFileScope.test.ts b/tests/boundary/filesystem/electronFileScope.test.ts similarity index 80% rename from tests/composition/runtime-observation/electronFileScope.test.ts rename to tests/boundary/filesystem/electronFileScope.test.ts index bb5c0f991d..3281a87669 100644 --- a/tests/composition/runtime-observation/electronFileScope.test.ts +++ b/tests/boundary/filesystem/electronFileScope.test.ts @@ -1,8 +1,8 @@ -import { mkdir, rm, symlink, writeFile } from "node:fs/promises"; +import { mkdir, symlink, writeFile } from "node:fs/promises"; import { join } from "node:path"; import { pathToFileURL } from "node:url"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -12,19 +12,8 @@ import { } from "../../../src/browser/ElectronFileScope.js"; describe("Electron file scope", () => { - const temporary: string[] = []; - - afterEach(async () => { - await Promise.all( - temporary - .splice(0) - .map(async (path) => rm(path, { recursive: true, force: true })), - ); - }); - it("accepts canonical files within a root and rejects escape forms", async () => { const base = await createTestTempDirectory("rea-electron-scope-"); - temporary.push(base); const root = join(base, "root"); const outside = join(base, "outside"); await mkdir(root); diff --git a/tests/boundary/filesystem/evidenceBundleFiles.test.ts b/tests/boundary/filesystem/evidenceBundleFiles.test.ts index 34cfbee550..cea25c13c9 100644 --- a/tests/boundary/filesystem/evidenceBundleFiles.test.ts +++ b/tests/boundary/filesystem/evidenceBundleFiles.test.ts @@ -1,7 +1,7 @@ -import { mkdir, readFile, rm, symlink, writeFile } from "node:fs/promises"; +import { mkdir, readFile, symlink, writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -17,14 +17,6 @@ import { type EvidenceFilePolicy, } from "../../../src/domain/evidenceBundle.js"; -let directory: string | undefined; - -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const bundle = () => createEvidenceBundle([ createEvidence( @@ -44,7 +36,7 @@ const policy = (root: string): EvidenceFilePolicy => ({ describe("evidence bundle filesystem adapter", () => { it("round trips canonical bytes and requires explicit overwrite", async () => { - directory = await createTestTempDirectory("rea-evidence-"); + const directory = await createTestTempDirectory("rea-evidence-"); const path = join(directory, "bundle.json"); const evidenceBundle = bundle(); const first = await writeEvidenceBundle( @@ -88,7 +80,7 @@ describe("evidence bundle filesystem adapter", () => { }); it("uses valid evidence roots when another configured root is missing", async () => { - directory = await createTestTempDirectory("rea-evidence-roots-"); + const directory = await createTestTempDirectory("rea-evidence-roots-"); const path = join(directory, "bundle.json"); const configured = { ...policy(directory), @@ -103,7 +95,7 @@ describe("evidence bundle filesystem adapter", () => { }); it("rejects traversal and symlink escape from approved roots", async () => { - directory = await createTestTempDirectory("rea-evidence-"); + const directory = await createTestTempDirectory("rea-evidence-"); const root = join(directory, "approved"); const outside = join(directory, "outside"); await mkdir(root); @@ -125,7 +117,7 @@ describe("evidence bundle filesystem adapter", () => { }); it("rejects malformed, tampered, oversized, and deeply nested input", async () => { - directory = await createTestTempDirectory("rea-evidence-"); + const directory = await createTestTempDirectory("rea-evidence-"); const malformed = join(directory, "malformed.json"); await writeFile(malformed, "{"); expect( diff --git a/tests/boundary/filesystem/installScript.test.ts b/tests/boundary/filesystem/installScript.test.ts index 00722ddbdb..88ac76bd63 100644 --- a/tests/boundary/filesystem/installScript.test.ts +++ b/tests/boundary/filesystem/installScript.test.ts @@ -11,18 +11,11 @@ import { import { join } from "node:path"; import { promisify } from "node:util"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; const execFileAsync = promisify(execFile); -const roots: string[] = []; - -afterEach(async () => { - await Promise.all( - roots.splice(0).map((root) => rm(root, { recursive: true, force: true })), - ); -}); describe("curl installer scenarios", { timeout: 20_000 }, () => { it("installs only a pinned REA CLI with closed stdin", async () => { @@ -166,7 +159,6 @@ interface InstallerFixture { const createFixture = async (): Promise => { const root = await createTestTempDirectory("rea-install-test-"); - roots.push(root); const home = join(root, "home"); const bin = join(root, "bin"); const temporary = join(root, "tmp"); diff --git a/tests/composition/evidence-investigations/investigationWorkspaceHistory.test.ts b/tests/boundary/filesystem/investigationWorkspaceHistory.test.ts similarity index 91% rename from tests/composition/evidence-investigations/investigationWorkspaceHistory.test.ts rename to tests/boundary/filesystem/investigationWorkspaceHistory.test.ts index 0040608cf1..7738654a87 100644 --- a/tests/composition/evidence-investigations/investigationWorkspaceHistory.test.ts +++ b/tests/boundary/filesystem/investigationWorkspaceHistory.test.ts @@ -1,7 +1,7 @@ -import { mkdir, rm, writeFile } from "node:fs/promises"; +import { mkdir, writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it, vi } from "vitest"; +import { describe, expect, it, vi } from "vitest"; import { createPackageWithOptions } from "@electron/asar"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -20,14 +20,6 @@ import { } from "../../../src/domain/investigationWorkspace.js"; import { ok } from "../../../src/domain/result.js"; -let directory: string | undefined; - -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const policy = (root: string): EvidenceFilePolicy => ({ roots: [root], maxBytes: 64 * 1024 * 1024, @@ -37,7 +29,7 @@ const policy = (root: string): EvidenceFilePolicy => ({ }); const fixture = async () => { - directory = await createTestTempDirectory("rea-workspace-"); + const directory = await createTestTempDirectory("rea-workspace-"); const left = join(directory, "left"); const right = join(directory, "right"); await Promise.all([mkdir(left), mkdir(right)]); @@ -55,13 +47,12 @@ const fixture = async () => { right_path: right, options: { page_size: 2, change_limit: 100 }, }); - return { left, right, path, input }; + return { directory, left, right, path, input }; }; describe("persistent cross-version investigation workspace", () => { it("enforces shared JSON depth limits while reading workspaces", async () => { - const { path, input } = await fixture(); - if (directory === undefined) throw new Error("missing fixture root"); + const { directory, path, input } = await fixture(); const completed = await runCrossVersionInvestigation( input, policy(directory), @@ -81,8 +72,7 @@ describe("persistent cross-version investigation workspace", () => { }); it("resumes from a comparison checkpoint without recomputing its identity", async () => { - const { input } = await fixture(); - if (directory === undefined) throw new Error("missing fixture root"); + const { directory, input } = await fixture(); const completed = await runCrossVersionInvestigation( input, policy(directory), @@ -158,8 +148,7 @@ describe("persistent cross-version investigation workspace", () => { describe("persistent investigation workspace history", () => { it("appends a changed-content run without replacing earlier Evidence", async () => { - const { right, input } = await fixture(); - if (directory === undefined) throw new Error("missing fixture root"); + const { directory, right, input } = await fixture(); const first = await runCrossVersionInvestigation(input, policy(directory), { inputRoots: [directory], }); @@ -197,7 +186,7 @@ describe("persistent investigation workspace history", () => { }); it("checkpoints bounded integrity contradictions and safely reuses them", async () => { - directory = await createTestTempDirectory("rea-workspace-integrity-"); + const directory = await createTestTempDirectory("rea-workspace-integrity-"); const source = join(directory, "source"); await mkdir(source); await writeFile(join(source, "addon.node"), "verified native addon\n"); diff --git a/tests/composition/evidence-investigations/investigationWorkspaceIntegrity.test.ts b/tests/boundary/filesystem/investigationWorkspaceIntegrity.test.ts similarity index 88% rename from tests/composition/evidence-investigations/investigationWorkspaceIntegrity.test.ts rename to tests/boundary/filesystem/investigationWorkspaceIntegrity.test.ts index 147c6eba5c..8ffac0aae8 100644 --- a/tests/composition/evidence-investigations/investigationWorkspaceIntegrity.test.ts +++ b/tests/boundary/filesystem/investigationWorkspaceIntegrity.test.ts @@ -9,7 +9,7 @@ import { } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -18,14 +18,6 @@ import { readInvestigationWorkspace } from "../../../src/application/Investigati import type { EvidenceFilePolicy } from "../../../src/domain/evidenceBundle.js"; import { crossVersionInvestigationInputSchema } from "../../../src/domain/investigationWorkspace.js"; -let directory: string | undefined; - -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const policy = (root: string): EvidenceFilePolicy => ({ roots: [root], maxBytes: 64 * 1024 * 1024, @@ -35,7 +27,7 @@ const policy = (root: string): EvidenceFilePolicy => ({ }); const fixture = async () => { - directory = await createTestTempDirectory("rea-workspace-"); + const directory = await createTestTempDirectory("rea-workspace-"); const left = join(directory, "left"); const right = join(directory, "right"); await Promise.all([mkdir(left), mkdir(right)]); @@ -53,13 +45,12 @@ const fixture = async () => { right_path: right, options: { page_size: 2, change_limit: 100 }, }); - return { left, right, path, input }; + return { directory, left, right, path, input }; }; describe("persistent cross-version investigation workspace", () => { it("fails closed on locks, CAS conflicts, tampering, and cancellation", async () => { - const { path, input } = await fixture(); - if (directory === undefined) throw new Error("missing fixture root"); + const { directory, path, input } = await fixture(); await writeFile(`${path}.lock`, `${String(process.pid)}\n`, { mode: 0o600, }); @@ -134,8 +125,7 @@ describe("persistent cross-version investigation workspace", () => { }); it("rejects workspace paths and symlinks outside approved roots", async () => { - const { input } = await fixture(); - if (directory === undefined) throw new Error("missing fixture root"); + const { directory, input } = await fixture(); const approved = join(directory, "approved"); await mkdir(approved); expect( @@ -167,8 +157,7 @@ describe("persistent cross-version investigation workspace", () => { }); it("rejects artifact inputs outside independently approved roots", async () => { - const { input, path } = await fixture(); - if (directory === undefined) throw new Error("missing fixture root"); + const { directory, input, path } = await fixture(); const approvedInputs = join(directory, "approved-inputs"); await mkdir(approvedInputs); expect( diff --git a/tests/composition/evidence-investigations/investigationWorkspaceMigration.test.ts b/tests/boundary/filesystem/investigationWorkspaceMigration.test.ts similarity index 93% rename from tests/composition/evidence-investigations/investigationWorkspaceMigration.test.ts rename to tests/boundary/filesystem/investigationWorkspaceMigration.test.ts index f0915ed69f..3cda2217a8 100644 --- a/tests/composition/evidence-investigations/investigationWorkspaceMigration.test.ts +++ b/tests/boundary/filesystem/investigationWorkspaceMigration.test.ts @@ -2,7 +2,7 @@ import { mkdir, readFile, rm, stat, writeFile } from "node:fs/promises"; import { createHash } from "node:crypto"; import { join } from "node:path"; -import { afterEach, describe, expect, it, vi } from "vitest"; +import { describe, expect, it, vi } from "vitest"; import canonicalize from "canonicalize"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -29,14 +29,6 @@ const digestCanonical = (value: unknown): string => { return createHash("sha256").update(encoded).digest("hex"); }; -let directory: string | undefined; - -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const policy = (root: string): EvidenceFilePolicy => ({ roots: [root], maxBytes: 64 * 1024 * 1024, @@ -46,7 +38,7 @@ const policy = (root: string): EvidenceFilePolicy => ({ }); const fixture = async () => { - directory = await createTestTempDirectory("rea-workspace-"); + const directory = await createTestTempDirectory("rea-workspace-"); const left = join(directory, "left"); const right = join(directory, "right"); await Promise.all([mkdir(left), mkdir(right)]); @@ -64,13 +56,12 @@ const fixture = async () => { right_path: right, options: { page_size: 2, change_limit: 100 }, }); - return { left, right, path, input }; + return { directory, left, right, path, input }; }; describe("persistent cross-version investigation workspace", () => { it("migrates legacy v1 runs without losing their revision chain", async () => { - const { input } = await fixture(); - if (directory === undefined) throw new Error("missing fixture root"); + const { directory, input } = await fixture(); const completed = await runCrossVersionInvestigation( input, policy(directory), @@ -189,8 +180,7 @@ describe("persistent cross-version investigation workspace", () => { describe("persistent investigation workspace reuse", () => { it("checkpoints, validates, and reuses a completed deterministic run", async () => { - const { path, input } = await fixture(); - if (directory === undefined) throw new Error("missing fixture root"); + const { directory, path, input } = await fixture(); const first = await runCrossVersionInvestigation(input, policy(directory), { inputRoots: [directory], }); @@ -239,8 +229,7 @@ describe("persistent investigation workspace reuse", () => { }); it("produces stable multi-provider Evidence closure across independent version runs", async () => { - const { input } = await fixture(); - if (directory === undefined) throw new Error("missing fixture root"); + const { directory, input } = await fixture(); const repeatedInput = crossVersionInvestigationInputSchema.parse({ ...input, workspace_path: join(directory, "repeated-workspace.json"), @@ -300,8 +289,7 @@ describe("persistent investigation workspace reuse", () => { describe("persistent investigation workspace replay", () => { it("replays only an explicitly selected and fully verified complete run", async () => { - const { left, right, input } = await fixture(); - if (directory === undefined) throw new Error("missing fixture root"); + const { directory, left, right, input } = await fixture(); const completed = await runCrossVersionInvestigation( input, policy(directory), diff --git a/tests/composition/javascript-applications/javascriptArtifactReconstructionLimits.test.ts b/tests/boundary/filesystem/javascriptArtifactReconstructionLimits.test.ts similarity index 100% rename from tests/composition/javascript-applications/javascriptArtifactReconstructionLimits.test.ts rename to tests/boundary/filesystem/javascriptArtifactReconstructionLimits.test.ts diff --git a/tests/composition/javascript-applications/javascriptExportShapeComparison.test.ts b/tests/boundary/filesystem/javascriptExportShapeComparison.test.ts similarity index 88% rename from tests/composition/javascript-applications/javascriptExportShapeComparison.test.ts rename to tests/boundary/filesystem/javascriptExportShapeComparison.test.ts index 983925db5e..ea4406acc5 100644 --- a/tests/composition/javascript-applications/javascriptExportShapeComparison.test.ts +++ b/tests/boundary/filesystem/javascriptExportShapeComparison.test.ts @@ -1,7 +1,7 @@ -import { copyFile, mkdir, rm, writeFile } from "node:fs/promises"; +import { copyFile, mkdir, writeFile } from "node:fs/promises"; import { join, resolve } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -15,19 +15,9 @@ import { } from "../../../src/domain/javascriptApplicationGraph.js"; import { permissionAuthorityForRoot } from "../../fixtures/permissionAuthority.js"; -const temporary: string[] = []; - -afterEach(async () => { - await Promise.all( - temporary - .splice(0) - .map(async (path) => rm(path, { recursive: true, force: true })), - ); -}); - describe("JavaScript export return-shape comparison", () => { it("reports exactly the heading depth addition from source-owned parser fixtures", async () => { - const root = await temporaryRoot(temporary); + const root = await temporaryRoot(); const leftRoot = join(root, "left"); const rightRoot = join(root, "right"); await Promise.all([mkdir(leftRoot), mkdir(rightRoot)]); @@ -83,7 +73,7 @@ describe("JavaScript export return-shape comparison", () => { }); it("keeps additions unknown when spread coverage is incomplete", async () => { - const [left, right] = await analyzeSources(temporary, { + const [left, right] = await analyzeSources({ left: ` const dynamic = getDynamic(); export default () => ({ type: "heading", ...dynamic }); @@ -102,7 +92,7 @@ describe("JavaScript export return-shape comparison", () => { }); it("does not pair ambiguous variants or invent behavior for no-return exports", async () => { - const ambiguous = await analyzeSources(temporary, { + const ambiguous = await analyzeSources({ left: ` export default function parse(value) { if (value) return { type: "heading", text: render(value) }; @@ -120,7 +110,7 @@ describe("JavaScript export return-shape comparison", () => { unpaired_right_variants: 1, }); - const noReturn = await analyzeSources(temporary, { + const noReturn = await analyzeSources({ left: `export default function stop() { throw new Error("stop"); }`, right: `export default function stop() { throw new Error("stop"); }`, }); @@ -133,7 +123,7 @@ describe("JavaScript export return-shape comparison", () => { describe("JavaScript export return-shape selection", () => { it("reports selector candidates and enforces candidate, variant, and change limits", async () => { - const candidates = await analyzeSources(temporary, { + const candidates = await analyzeSources({ left: ` export const first = () => ({ type: "first" }); export const second = () => ({ type: "second" }); @@ -152,7 +142,7 @@ describe("JavaScript export return-shape selection", () => { }); expect(missing.coverage.status).toBe("truncated"); - const parsers = await sourceOwnedParsers(temporary); + const parsers = await sourceOwnedParsers(); const variantLimited = compare(parsers[0], parsers[1], { limits: { max_return_variants: 1 }, }); @@ -162,7 +152,7 @@ describe("JavaScript export return-shape selection", () => { omitted_right_variants: 2, }); - const changes = await analyzeSources(temporary, { + const changes = await analyzeSources({ left: `export default () => ({ type: "item" });`, right: `export default () => ({ type: "item", depth: 1, level: 2 });`, }); @@ -178,7 +168,7 @@ describe("JavaScript export return-shape selection", () => { }); it("refuses an exact selector that resolves to multiple graph nodes", async () => { - const [left, right] = await analyzeSources(temporary, { + const [left, right] = await analyzeSources({ left: `export default () => ({ type: "item" });`, right: `export default () => ({ type: "item" });`, }); @@ -233,7 +223,7 @@ describe("JavaScript export return-shape projection", () => { (_, index) => `field${String(index)}: ${String(index)}`, ), ].join(","); - const [left, right] = await analyzeSources(temporary, { + const [left, right] = await analyzeSources({ left: `export default () => ({ ${properties} });`, right: `export default () => ({ ${properties} });`, }); @@ -294,11 +284,11 @@ const analyzeGraph = async (root: string) => { return parseApplicationGraphEvidence(result.value); }; -const analyzeSources = async ( - temporary: string[], - sources: { readonly left: string; readonly right: string }, -): Promise<[GraphSource, GraphSource]> => { - const root = await temporaryRoot(temporary); +const analyzeSources = async (sources: { + readonly left: string; + readonly right: string; +}): Promise<[GraphSource, GraphSource]> => { + const root = await temporaryRoot(); const leftRoot = join(root, "left"); const rightRoot = join(root, "right"); await Promise.all([mkdir(leftRoot), mkdir(rightRoot)]); @@ -309,10 +299,8 @@ const analyzeSources = async ( return Promise.all([analyzeGraph(leftRoot), analyzeGraph(rightRoot)]); }; -const sourceOwnedParsers = async ( - temporary: string[], -): Promise<[GraphSource, GraphSource]> => { - const root = await temporaryRoot(temporary); +const sourceOwnedParsers = async (): Promise<[GraphSource, GraphSource]> => { + const root = await temporaryRoot(); const leftRoot = join(root, "left"); const rightRoot = join(root, "right"); await Promise.all([mkdir(leftRoot), mkdir(rightRoot)]); @@ -329,8 +317,5 @@ const sourceOwnedParsers = async ( return Promise.all([analyzeGraph(leftRoot), analyzeGraph(rightRoot)]); }; -const temporaryRoot = async (temporary: string[]): Promise => { - const root = await createTestTempDirectory("rea-export-shapes-"); - temporary.push(root); - return root; -}; +const temporaryRoot = (): Promise => + createTestTempDirectory("rea-export-shapes-"); diff --git a/tests/composition/runtime-observation/managedRuntimeCorrelation.test.ts b/tests/boundary/filesystem/managedRuntimeCorrelation.test.ts similarity index 100% rename from tests/composition/runtime-observation/managedRuntimeCorrelation.test.ts rename to tests/boundary/filesystem/managedRuntimeCorrelation.test.ts diff --git a/tests/composition/runtime-observation/nodeRuntimeCharacterization.test.ts b/tests/boundary/filesystem/nodeRuntimeCharacterization.test.ts similarity index 96% rename from tests/composition/runtime-observation/nodeRuntimeCharacterization.test.ts rename to tests/boundary/filesystem/nodeRuntimeCharacterization.test.ts index 0382b704aa..1b7fc02195 100644 --- a/tests/composition/runtime-observation/nodeRuntimeCharacterization.test.ts +++ b/tests/boundary/filesystem/nodeRuntimeCharacterization.test.ts @@ -1,8 +1,8 @@ import { createHash } from "node:crypto"; -import { readFile, realpath, rm, writeFile } from "node:fs/promises"; +import { readFile, realpath, writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -22,16 +22,9 @@ import { nodeCharacterizationPreparationOutputSchema, } from "../../../src/domain/nodeRuntimeCharacterization.js"; -const roots: string[] = []; const sha256 = (value: Uint8Array): string => createHash("sha256").update(value).digest("hex"); -afterEach(async () => { - await Promise.all( - roots.splice(0).map((root) => rm(root, { recursive: true, force: true })), - ); -}); - describe("Node runtime characterization", () => { it("prepares without execution, then executes only the approved exact plan", async () => { const fixture = await createFixture(); @@ -149,7 +142,6 @@ describe("Node runtime characterization", () => { const createFixture = async () => { const root = await createTestTempDirectory("rea-characterization-"); - roots.push(root); const path = join(root, "bundle.js"); const source = "const hidden = (value) => value.trim();"; const selected = "(value) => value.trim()"; diff --git a/tests/composition/setup-lifecycle/projectPermissionStore.test.ts b/tests/boundary/filesystem/projectPermissionStore.test.ts similarity index 100% rename from tests/composition/setup-lifecycle/projectPermissionStore.test.ts rename to tests/boundary/filesystem/projectPermissionStore.test.ts diff --git a/tests/boundary/filesystem/reconstructionCoverage.test.ts b/tests/boundary/filesystem/reconstructionCoverage.test.ts new file mode 100644 index 0000000000..bc5ed9e953 --- /dev/null +++ b/tests/boundary/filesystem/reconstructionCoverage.test.ts @@ -0,0 +1,99 @@ +import { join } from "node:path"; + +import { describe, expect, it } from "vitest"; + +import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; + +import { + commitReconstructionCoverage, + queryReconstructionCoverage, +} from "../../../src/application/ReconstructionCoverageService.js"; +import { + readReconstructionCoverageWorkspace, + writeReconstructionCoverageWorkspace, +} from "../../../src/application/ReconstructionCoverageWorkspaceStore.js"; +import type { EvidenceFilePolicy } from "../../../src/domain/evidenceBundle.js"; +import { + completeReconstructionCoverageWorkspace, + RECONSTRUCTION_COVERAGE_NOW, +} from "../../../src/domain/reconstructionCoverage.fixture.js"; + +const filePolicy = (root: string): EvidenceFilePolicy => ({ + roots: [root], + maxBytes: 64 * 1024 * 1024, + maxDepth: 64, + maxStringLength: 1024 * 1024, + maxNodes: 1_000_000, +}); + +describe("reconstruction coverage persistence", () => { + it("persists owner-only revisions with CAS and digest-chain enforcement", async () => { + const root = await createTestTempDirectory("rea-coverage-workspace-"); + const path = join(root, "coverage.json"); + const workspace = completeReconstructionCoverageWorkspace(); + const policy = filePolicy(root); + + const written = await writeReconstructionCoverageWorkspace( + workspace, + path, + null, + policy, + ); + expect(written.ok).toBe(true); + expect(await readReconstructionCoverageWorkspace(path, policy)).toEqual({ + ok: true, + value: workspace, + }); + expect( + await writeReconstructionCoverageWorkspace(workspace, path, null, policy), + ).toMatchObject({ + ok: false, + error: { + _tag: "InvestigationWorkspaceError", + reason: "revision-conflict", + }, + }); + }); + + it("shares commit and fail-closed query behavior across adapters", async () => { + const root = await createTestTempDirectory("rea-coverage-service-"); + const path = join(root, "coverage.json"); + const workspace = completeReconstructionCoverageWorkspace(); + const policy = filePolicy(root); + + const committed = await commitReconstructionCoverage( + { + approved: true, + workspace_path: path, + expected_revision: null, + workspace, + }, + policy, + ); + expect(committed.ok && committed.value).toMatchObject({ + revision: 1, + revision_sha256: workspace.revision_sha256, + evidence_records: 5, + }); + const queried = await queryReconstructionCoverage( + { workspace_path: path, boundary_id: "replacement.cli" }, + policy, + RECONSTRUCTION_COVERAGE_NOW, + ); + expect(queried.ok && queried.value).toMatchObject({ status: "ready" }); + + const controller = new AbortController(); + controller.abort(); + expect( + await queryReconstructionCoverage( + { workspace_path: path, boundary_id: "replacement.cli" }, + policy, + RECONSTRUCTION_COVERAGE_NOW, + { signal: controller.signal }, + ), + ).toMatchObject({ + ok: false, + error: { _tag: "AnalysisCancelledError" }, + }); + }); +}); diff --git a/tests/composition/runtime-observation/runtimeIdentification.test.ts b/tests/boundary/filesystem/runtimeIdentification.test.ts similarity index 92% rename from tests/composition/runtime-observation/runtimeIdentification.test.ts rename to tests/boundary/filesystem/runtimeIdentification.test.ts index a7e96e36c5..473662d9df 100644 --- a/tests/composition/runtime-observation/runtimeIdentification.test.ts +++ b/tests/boundary/filesystem/runtimeIdentification.test.ts @@ -106,6 +106,17 @@ describe("runtime identification", () => { }), ]), ); + const available = first.runtimes.find( + ({ inspection }) => inspection === "available", + ); + if (available === undefined) + throw new TypeError("Expected an available runtime provider"); + expect( + runtimeIdentificationResultSchema.safeParse({ + ...first, + runtimes: [{ ...available, provider_id: null, reason: "Missing." }], + }).success, + ).toBe(false); }); it("reports bounded runtime-observation truncation", async () => { diff --git a/tests/composition/setup-lifecycle/setupConfig.test.ts b/tests/boundary/filesystem/setupConfig.test.ts similarity index 90% rename from tests/composition/setup-lifecycle/setupConfig.test.ts rename to tests/boundary/filesystem/setupConfig.test.ts index 39830275e4..4be3313800 100644 --- a/tests/composition/setup-lifecycle/setupConfig.test.ts +++ b/tests/boundary/filesystem/setupConfig.test.ts @@ -1,6 +1,6 @@ -import { lstat, readFile, rm, symlink, writeFile } from "node:fs/promises"; +import { lstat, readFile, symlink, writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -10,13 +10,6 @@ import { PRODUCT_IDENTITY } from "../../../src/identity.js"; const pinnedPackage = PRODUCT_IDENTITY.registrationPackageSpecifier; -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - describe("JSON client configuration transaction", () => { it("rejects a symlink target not owned by the current user", async () => { if (typeof process.getuid !== "function") return; @@ -38,7 +31,7 @@ describe("JSON client configuration transaction", () => { }); it("preserves existing keys, creates a backup, and reads back the MCP entry", async () => { - directory = await createTestTempDirectory("rea-setup-"); + const directory = await createTestTempDirectory("rea-setup-"); const configPath = join(directory, "mcp.json"); const original = '{"theme":"dark","mcpServers":{"other":{"command":"other"}}}\n'; @@ -59,7 +52,7 @@ describe("JSON client configuration transaction", () => { }); it("updates a symlink target without replacing the JSON config symlink", async () => { - directory = await createTestTempDirectory("rea-setup-"); + const directory = await createTestTempDirectory("rea-setup-"); const targetPath = join(directory, "managed.json"); const configPath = join(directory, "mcp.json"); const original = '{"theme":"dark"}\n'; @@ -86,7 +79,7 @@ describe("JSON client configuration transaction", () => { }); it("fails before mutation when a JSON config symlink is dangling", async () => { - directory = await createTestTempDirectory("rea-setup-"); + const directory = await createTestTempDirectory("rea-setup-"); const configPath = join(directory, "mcp.json"); await symlink(join(directory, "missing.json"), configPath); @@ -101,7 +94,7 @@ describe("JSON client configuration transaction", () => { }); it("performs no write or second backup when configuration already matches", async () => { - directory = await createTestTempDirectory("rea-setup-"); + const directory = await createTestTempDirectory("rea-setup-"); const configPath = join(directory, "mcp.json"); await writeFile( configPath, @@ -116,7 +109,7 @@ describe("JSON client configuration transaction", () => { }); it("does not rewrite an equivalent configuration with reordered environment keys", async () => { - directory = await createTestTempDirectory("rea-setup-"); + const directory = await createTestTempDirectory("rea-setup-"); const configPath = join(directory, "mcp.json"); await writeFile( configPath, @@ -151,7 +144,7 @@ describe("JSON client configuration transaction", () => { describe("JSON client configuration migration and provider paths", () => { it("migrates an unversioned npx registration and preserves sibling configuration", async () => { - directory = await createTestTempDirectory("rea-setup-"); + const directory = await createTestTempDirectory("rea-setup-"); const configPath = join(directory, "mcp.json"); const original = '{"theme":"dark","mcpServers":{"rea":{"command":"npx","args":["-y","rea-agents","mcp"]},"other":{"command":"other"}}}\n'; @@ -175,7 +168,7 @@ describe("JSON client configuration migration and provider paths", () => { }); it("persists a custom Hopper launcher and remains idempotent", async () => { - directory = await createTestTempDirectory("rea-setup-"); + const directory = await createTestTempDirectory("rea-setup-"); const configPath = join(directory, "mcp.json"); const hopperPath = "/Applications/Hopper v6.app/Contents/MacOS/hopper"; const client = { name: "cursor", configPath }; @@ -203,7 +196,7 @@ describe("JSON client configuration migration and provider paths", () => { }); it("adds exact BYO Ghidra and Java paths without installing dependencies", async () => { - directory = await createTestTempDirectory("rea-setup-"); + const directory = await createTestTempDirectory("rea-setup-"); const configPath = join(directory, "mcp.json"); const client = { name: "cursor", configPath }; const environment = { @@ -230,7 +223,7 @@ describe("JSON client configuration migration and provider paths", () => { }); it("refuses malformed existing JSON without overwriting it", async () => { - directory = await createTestTempDirectory("rea-setup-"); + const directory = await createTestTempDirectory("rea-setup-"); const configPath = join(directory, "mcp.json"); await writeFile(configPath, "not-json"); expect(await configureJsonClient({ name: "cursor", configPath })).toEqual({ @@ -243,7 +236,7 @@ describe("JSON client configuration migration and provider paths", () => { it.each(["null", "[]", '"value"'])( "refuses a non-object JSON root without overwriting %s", async (original) => { - directory = await createTestTempDirectory("rea-setup-"); + const directory = await createTestTempDirectory("rea-setup-"); const configPath = join(directory, "mcp.json"); await writeFile(configPath, original); expect(await configureJsonClient({ name: "cursor", configPath })).toEqual( @@ -259,7 +252,7 @@ describe("JSON client configuration migration and provider paths", () => { it.each(["null", "[]", '"value"'])( "preserves a non-object mcpServers value %s", async (servers) => { - directory = await createTestTempDirectory("rea-setup-"); + const directory = await createTestTempDirectory("rea-setup-"); const configPath = join(directory, "mcp.json"); const original = `{"mcpServers":${servers}}`; await writeFile(configPath, original); diff --git a/tests/composition/setup-lifecycle/setupSkill.test.ts b/tests/boundary/filesystem/setupSkill.test.ts similarity index 86% rename from tests/composition/setup-lifecycle/setupSkill.test.ts rename to tests/boundary/filesystem/setupSkill.test.ts index e862c2a9fd..160a731942 100644 --- a/tests/composition/setup-lifecycle/setupSkill.test.ts +++ b/tests/boundary/filesystem/setupSkill.test.ts @@ -1,6 +1,6 @@ -import { mkdir, readFile, rm, writeFile } from "node:fs/promises"; +import { mkdir, readFile, writeFile } from "node:fs/promises"; import { dirname, join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; import { @@ -9,17 +9,9 @@ import { } from "../../../src/application/Setup.js"; import { TOOL_CONTRACTS } from "../../../src/contracts/toolContracts.js"; -const roots: string[] = []; -afterEach(async () => { - await Promise.all( - roots.splice(0).map((root) => rm(root, { recursive: true })), - ); -}); - describe("canonical skill transaction", () => { it("backs up and upgrades a stale managed skill without touching siblings", async () => { const home = await createTestTempDirectory("rea-skill-test-"); - roots.push(home); const destination = join( home, ".agents/skills/reverse-engineer-anything/SKILL.md", diff --git a/tests/boundary/mcp/artifactMcp.test.ts b/tests/boundary/mcp/artifactMcp.test.ts index 9de365ac5b..6c6290dc96 100644 --- a/tests/boundary/mcp/artifactMcp.test.ts +++ b/tests/boundary/mcp/artifactMcp.test.ts @@ -9,10 +9,7 @@ import { z } from "zod"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { - composeBinarySessionFromFactory, - composeBinarySessionFromProvider, -} from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { ArtifactProvider } from "../../../src/artifacts/ArtifactProvider.js"; import { ARTIFACT_COMPARISON_EXAMPLE } from "../../../src/contracts/artifactComparisonExample.js"; import { evidenceBundleSchema } from "../../../src/domain/evidenceBundle.js"; @@ -47,7 +44,7 @@ it.each([ await writeFile(archive, bytes); } - const session = composeBinarySessionFromProvider(new ArtifactProvider()); + const session = createTestBinarySession(new ArtifactProvider()); const server = createServer(session, session); const client = new Client({ name: "asar-integrity-test", version: "1" }); const [clientTransport, serverTransport] = @@ -135,9 +132,7 @@ it("records an approved mismatch, preserves verified siblings, and never reports bytes.write(secondChanged, secondOffset, "utf8"); await writeFile(archive, bytes); - const session = composeBinarySessionFromProvider( - new ArtifactProvider(false, true), - ); + const session = createTestBinarySession(new ArtifactProvider(false, true)); const server = createServer(session, session); const client = new Client({ name: "asar-continue-test", version: "1" }); const [clientTransport, serverTransport] = @@ -252,7 +247,7 @@ it("records an approved mismatch, preserves verified siblings, and never reports }); it("rejects altered payloads that reuse session Evidence IDs", async () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), @@ -287,7 +282,7 @@ it("rejects altered payloads that reuse session Evidence IDs", async () => { }); it("rejects comparison Evidence that is not owned by the session", async () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), @@ -326,7 +321,7 @@ it("opens archives without Hopper, compares them, and exports linked evidence", new TextReader("changed();"), ); await writeFile(changedArchive, await changedWriter.close()); - const session = composeBinarySessionFromProvider(new ArtifactProvider()); + const session = createTestBinarySession(new ArtifactProvider()); const server = createServer(session, session); const client = new Client({ name: "artifact-mcp-test", version: "1" }); const [clientTransport, serverTransport] = diff --git a/tests/boundary/mcp/browserMcp.test.ts b/tests/boundary/mcp/browserMcp.test.ts index 93db452801..9b45c4ed6b 100644 --- a/tests/boundary/mcp/browserMcp.test.ts +++ b/tests/boundary/mcp/browserMcp.test.ts @@ -1,7 +1,7 @@ import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { afterEach, expect, it } from "vitest"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { BinarySession } from "../../../src/application/BinarySession.js"; import { loadConfiguredPermissionAuthority } from "../../../src/application/PermissionConfiguration.js"; import { CdpBrowserProvider } from "../../../src/browser/CdpBrowserProvider.js"; @@ -289,7 +289,7 @@ const connectBrowser = async (browser: FakeCdpBrowser) => { if (!config.ok) throw config.error; const authority = await loadConfiguredPermissionAuthority(config.value); if (!authority.ok) throw authority.error; - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/boundary/mcp/browserScenarioMcp.test.ts b/tests/boundary/mcp/browserScenarioMcp.test.ts index 9431b67ffa..ce5a698639 100644 --- a/tests/boundary/mcp/browserScenarioMcp.test.ts +++ b/tests/boundary/mcp/browserScenarioMcp.test.ts @@ -3,7 +3,7 @@ import { dirname } from "node:path"; import { afterEach, describe, expect, test } from "vitest"; import type { BrowserScenarioCapturePort } from "../../../src/application/BrowserScenarioCapturePort.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { loadConfiguredPermissionAuthority } from "../../../src/application/PermissionConfiguration.js"; import type { ExecutionOptions, @@ -189,7 +189,7 @@ describe("browser scenario MCP tool", () => { const authority = await loadConfiguredPermissionAuthority(configured.value); if (!authority.ok) throw authority.error; const provider = new FakeBrowserScenarioProvider(); - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/boundary/mcp/bundleComparisonMcp.test.ts b/tests/boundary/mcp/bundleComparisonMcp.test.ts index cbedd3753d..c358374320 100644 --- a/tests/boundary/mcp/bundleComparisonMcp.test.ts +++ b/tests/boundary/mcp/bundleComparisonMcp.test.ts @@ -6,7 +6,7 @@ import { afterEach, describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { createEvidence } from "../../../src/domain/evidence.js"; import { createEvidenceBundle, @@ -137,7 +137,7 @@ describe("bundle comparison MCP integration", () => { }); const connect = async (root: string, maxBytes = 1024 * 1024) => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), diff --git a/tests/boundary/mcp/createServer.test.ts b/tests/boundary/mcp/createServer.test.ts index 5abaee2c63..eec8ae4ed7 100644 --- a/tests/boundary/mcp/createServer.test.ts +++ b/tests/boundary/mcp/createServer.test.ts @@ -1,4 +1,4 @@ -import { describe, expect, it } from "vitest"; +import { describe, expect } from "vitest"; import { observed as ok } from "../../fixtures/analysisExecution.js"; import { mcpTest } from "../../support/mcp/mcpFixture.js"; @@ -9,10 +9,6 @@ const analysis = { }; describe("MCP server composition", () => { - it("constructs independent MCP server instances", () => { - expect(createServer(analysis)).not.toBe(createServer(analysis)); - }); - mcpTest("does not advertise unavailable session tools", async ({ mcp }) => { const server = createServer(analysis); const client = await mcp.connect(server, { diff --git a/tests/boundary/mcp/electronMcp.test.ts b/tests/boundary/mcp/electronMcp.test.ts index 72fbadac99..eba3c30205 100644 --- a/tests/boundary/mcp/electronMcp.test.ts +++ b/tests/boundary/mcp/electronMcp.test.ts @@ -8,7 +8,7 @@ import { z } from "zod"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { BinarySession } from "../../../src/application/BinarySession.js"; import type { ElectronActiveObservationPort } from "../../../src/application/ElectronActiveObservationPort.js"; import { loadConfiguredPermissionAuthority } from "../../../src/application/PermissionConfiguration.js"; @@ -63,7 +63,7 @@ it("exposes root-confined Electron discovery and inspection as Evidence v2", asy if (!config.ok) throw config.error; const authority = await loadConfiguredPermissionAuthority(config.value); if (!authority.ok) throw authority.error; - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); @@ -218,7 +218,7 @@ it("exposes active Electron scenarios through the separately granted MCP boundar if (!config.ok) throw config.error; const authority = await loadConfiguredPermissionAuthority(config.value); if (!authority.ok) throw authority.error; - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); @@ -298,7 +298,7 @@ it("exposes the target-free static JavaScript application workflow", async () => if (!config.ok) throw config.error; const authority = await loadConfiguredPermissionAuthority(config.value); if (!authority.ok) throw authority.error; - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); @@ -391,7 +391,7 @@ it("reports an unconfigured investigation ceiling before static analysis", async if (!config.ok) throw config.error; const authority = await loadConfiguredPermissionAuthority(config.value); if (!authority.ok) throw authority.error; - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/boundary/mcp/evidenceBundleRelease.test.ts b/tests/boundary/mcp/evidenceBundleRelease.test.ts index f5b423b74e..591edb3892 100644 --- a/tests/boundary/mcp/evidenceBundleRelease.test.ts +++ b/tests/boundary/mcp/evidenceBundleRelease.test.ts @@ -4,7 +4,7 @@ import { describe, expect, it, vi } from "vitest"; import { z } from "zod"; import { PermissionAuthority } from "../../../src/application/PermissionAuthority.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { createPermissionPolicy } from "../../../src/domain/permissionPolicy.js"; import { observed } from "../../fixtures/analysisExecution.js"; import { createServer } from "../../../src/server/createServer.js"; @@ -16,7 +16,7 @@ const structured = (result: CallToolResult): Record => { }; const createSession = () => - composeBinarySessionFromFactory(() => ({ + createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), diff --git a/tests/boundary/mcp/evidenceResources.test.ts b/tests/boundary/mcp/evidenceResources.test.ts index 6d9fa3f527..79fa11dd59 100644 --- a/tests/boundary/mcp/evidenceResources.test.ts +++ b/tests/boundary/mcp/evidenceResources.test.ts @@ -2,7 +2,7 @@ import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { describe, expect, it } from "vitest"; import { z } from "zod"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { BinarySession } from "../../../src/application/BinarySession.js"; import { createEvidence } from "../../../src/domain/evidence.js"; import { observed } from "../../fixtures/analysisExecution.js"; @@ -161,7 +161,7 @@ async function verifyResourceProtocol( describe("evidence MCP resources", () => { it("publishes mutable snapshot changes for every Evidence mutation", () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), @@ -229,7 +229,7 @@ describe("evidence MCP resources", () => { }); it("contains observer failures after committing a mutation", () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), @@ -251,7 +251,7 @@ describe("evidence MCP resources", () => { describe("evidence bundle resources", () => { it("retains bundles without eviction and rejects a seventeenth digest", () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), @@ -294,7 +294,7 @@ describe("evidence bundle resources", () => { }); it("lists and reads only evidence owned by the current session", async () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), diff --git a/tests/boundary/mcp/functionComparisonMcp.test.ts b/tests/boundary/mcp/functionComparisonMcp.test.ts index f4d4fcabda..2ea6ab1ec8 100644 --- a/tests/boundary/mcp/functionComparisonMcp.test.ts +++ b/tests/boundary/mcp/functionComparisonMcp.test.ts @@ -1,7 +1,7 @@ import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { describe, expect, it } from "vitest"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { FUNCTION_COMPARISON_EXAMPLE } from "../../../src/contracts/functionComparisonExample.js"; import { createEvidence } from "../../../src/domain/evidence.js"; import { createServer } from "../../../src/server/createServer.js"; @@ -9,7 +9,7 @@ import { observed } from "../../fixtures/analysisExecution.js"; describe("function comparison MCP integration", () => { it("records linked comparison Evidence and an approved residual unknown", async () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), @@ -75,7 +75,7 @@ describe("function comparison MCP integration", () => { }); it("rejects dangling Evidence links before recording output", async () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), @@ -106,7 +106,7 @@ describe("function comparison MCP integration", () => { }); it("rejects Evidence IDs with the wrong operation", async () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), diff --git a/tests/boundary/mcp/ghidraMcpHarness.ts b/tests/boundary/mcp/ghidraMcpHarness.ts index 6a718cafc3..39f8c59b42 100644 --- a/tests/boundary/mcp/ghidraMcpHarness.ts +++ b/tests/boundary/mcp/ghidraMcpHarness.ts @@ -106,7 +106,7 @@ const installationHost = (): GhidraInstallationHost => ({ major: 21, home: "/usr/lib/jvm/jdk-21", bits: 64, - jdk: true, + runtime: "jdk", }), }); diff --git a/tests/boundary/mcp/investigationAnalysisMcp.test.ts b/tests/boundary/mcp/investigationAnalysisMcp.test.ts index b1f266e5a9..97f78ff5e1 100644 --- a/tests/boundary/mcp/investigationAnalysisMcp.test.ts +++ b/tests/boundary/mcp/investigationAnalysisMcp.test.ts @@ -2,7 +2,7 @@ import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { expect, it } from "vitest"; import { z } from "zod"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { BinarySession } from "../../../src/application/BinarySession.js"; import { FUNCTION_COMPARISON_EXAMPLE } from "../../../src/contracts/functionComparisonExample.js"; import { INVESTIGATION_EXAMPLES } from "../../../src/contracts/investigationExamples.js"; @@ -308,7 +308,7 @@ const connected = async ( investigationInputRoots: readonly string[] = evidenceFilePolicy?.roots ?? [], permissionAuthority?: PermissionAuthority, ) => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), diff --git a/tests/boundary/mcp/investigationWorkspaceMcp.test.ts b/tests/boundary/mcp/investigationWorkspaceMcp.test.ts index ecc733be26..52d9c45c86 100644 --- a/tests/boundary/mcp/investigationWorkspaceMcp.test.ts +++ b/tests/boundary/mcp/investigationWorkspaceMcp.test.ts @@ -6,7 +6,7 @@ import { z } from "zod"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { BinarySession } from "../../../src/application/BinarySession.js"; import { FUNCTION_COMPARISON_EXAMPLE } from "../../../src/contracts/functionComparisonExample.js"; import { INVESTIGATION_EXAMPLES } from "../../../src/contracts/investigationExamples.js"; @@ -329,7 +329,7 @@ const connected = async ( investigationInputRoots: readonly string[] = evidenceFilePolicy?.roots ?? [], permissionAuthority?: PermissionAuthority, ) => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ health: () => Promise.resolve(), execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), diff --git a/tests/boundary/mcp/javascriptRuntimeObservationMcp.test.ts b/tests/boundary/mcp/javascriptRuntimeObservationMcp.test.ts index ffa53b3c4b..370c0c068d 100644 --- a/tests/boundary/mcp/javascriptRuntimeObservationMcp.test.ts +++ b/tests/boundary/mcp/javascriptRuntimeObservationMcp.test.ts @@ -5,7 +5,7 @@ import { pathToFileURL } from "node:url"; import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { afterEach, describe, expect, test } from "vitest"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { loadConfiguredPermissionAuthority } from "../../../src/application/PermissionConfiguration.js"; import { observeJavaScriptRuntime } from "../../../src/application/JavaScriptRuntimeObservationService.js"; import { V8InspectorProvider } from "../../../src/browser/V8InspectorProvider.js"; @@ -45,7 +45,7 @@ describe("JavaScript runtime observation MCP tools", () => { if (!config.ok) throw config.error; const authority = await loadConfiguredPermissionAuthority(config.value); if (!authority.ok) throw authority.error; - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/boundary/mcp/processCaptureElicitation.test.ts b/tests/boundary/mcp/processCaptureElicitation.test.ts index 25a4c36740..a421ec9d63 100644 --- a/tests/boundary/mcp/processCaptureElicitation.test.ts +++ b/tests/boundary/mcp/processCaptureElicitation.test.ts @@ -4,7 +4,7 @@ import { rm } from "node:fs/promises"; import { dirname } from "node:path"; import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { PermissionAuthority } from "../../../src/application/PermissionAuthority.js"; import { createPermissionPolicy } from "../../../src/domain/permissionPolicy.js"; import { silentLogger } from "../../../src/logger.js"; @@ -26,7 +26,7 @@ describe("process-capture MCP elicitation handshake", () => { }, ]), ); - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/boundary/mcp/processCaptureElicitationGrantsPart3.test.ts b/tests/boundary/mcp/processCaptureElicitationGrantsPart3.test.ts index 24866f7bec..ab8257cec8 100644 --- a/tests/boundary/mcp/processCaptureElicitationGrantsPart3.test.ts +++ b/tests/boundary/mcp/processCaptureElicitationGrantsPart3.test.ts @@ -175,7 +175,7 @@ describe("process-capture MCP elicitation grants", () => { await mkdir(root); } const retry = await authority.authorize(scoped, "read", { - elicitationSupported: true, + remediation: "elicit", }); expect(retry.ok).toBe(false); }, diff --git a/tests/boundary/mcp/processCaptureElicitationPart2.test.ts b/tests/boundary/mcp/processCaptureElicitationPart2.test.ts index 9b0d8da394..619964b159 100644 --- a/tests/boundary/mcp/processCaptureElicitationPart2.test.ts +++ b/tests/boundary/mcp/processCaptureElicitationPart2.test.ts @@ -6,7 +6,7 @@ import { dirname } from "node:path"; import { describe, expect, it, vi } from "vitest"; import { z } from "zod"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { PermissionAuthority } from "../../../src/application/PermissionAuthority.js"; import { createPermissionPolicy } from "../../../src/domain/permissionPolicy.js"; import { silentLogger } from "../../../src/logger.js"; @@ -33,7 +33,7 @@ describe("process-capture MCP elicitation handshake", () => { }, ]), ); - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/boundary/mcp/processTraceAdaptersParity.test.ts b/tests/boundary/mcp/processTraceAdaptersParity.test.ts index ee2fc62cb5..3c10814953 100644 --- a/tests/boundary/mcp/processTraceAdaptersParity.test.ts +++ b/tests/boundary/mcp/processTraceAdaptersParity.test.ts @@ -4,7 +4,7 @@ import { join } from "node:path"; import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { afterEach, describe, expect, it } from "vitest"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { AnalysisClient } from "../../../src/application/AnalysisProvider.js"; import { compareProcessEvidenceFiles } from "../../../src/application/ProcessCli.js"; import { PROCESS_PROVIDER } from "../../../src/application/ProcessEvidence.js"; @@ -117,7 +117,7 @@ describe("declared trace adapter parity", () => { const cliEvidence = parseEvidence( await compareProcessEvidenceFiles(leftPath, rightPath, specificationPath), ); - const session = composeBinarySessionFromFactory( + const session = createTestBinarySession( (_path) => ({ execute: () => Promise.resolve(ok(null)), diff --git a/tests/boundary/mcp/promptCompletion.test.ts b/tests/boundary/mcp/promptCompletion.test.ts index f8f890b42a..1697e8791f 100644 --- a/tests/boundary/mcp/promptCompletion.test.ts +++ b/tests/boundary/mcp/promptCompletion.test.ts @@ -5,7 +5,7 @@ import { afterEach, describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; import type { AnalysisClient } from "../../../src/application/AnalysisProvider.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { ARTIFACT_COMPARISON_EXAMPLE } from "../../../src/contracts/artifactComparisonExample.js"; import { PROCESS_CAPTURE_REFERENCE } from "../../../src/contracts/investigationExamples.js"; import { createEvidence } from "../../../src/domain/evidence.js"; @@ -23,7 +23,7 @@ afterEach(async () => { describe("guided prompt completion from live analysis", () => { it("reads live documents and paged procedures without ambiguous names", async () => { const requests: Array>> = []; - const session = composeBinarySessionFromFactory(() => client(requests)); + const session = createTestBinarySession(() => client(requests)); directory = await createTestTempDirectory("rea-prompt-completion-"); const target = join(directory, "fixture.hop"); await writeFile(target, "fixture"); @@ -58,7 +58,7 @@ describe("guided prompt completion from live analysis", () => { describe("guided prompt completion from investigation records", () => { it("projects only validated typed identifiers from the evidence ledger", async () => { - const session = composeBinarySessionFromFactory(() => client([])); + const session = createTestBinarySession(() => client([])); const invalidCapture = createEvidence(undefined, fixtureProvider, { operation: "capture_process_scenario", parameters: {}, @@ -137,7 +137,7 @@ describe("guided prompt completion from investigation records", () => { }); it("deduplicates, case-folds, and returns deterministic live evidence IDs", async () => { - const session = composeBinarySessionFromFactory(() => client([])); + const session = createTestBinarySession(() => client([])); for (let index = 149; index >= 0; index -= 1) { const evidence = createEvidence(undefined, fixtureProvider, { operation: `fixture-${String(index)}`, diff --git a/tests/boundary/mcp/promptMcp.test.ts b/tests/boundary/mcp/promptMcp.test.ts index 018fd671a0..0b42fb5a24 100644 --- a/tests/boundary/mcp/promptMcp.test.ts +++ b/tests/boundary/mcp/promptMcp.test.ts @@ -8,7 +8,7 @@ import { afterEach, describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; import type { AnalysisClient } from "../../../src/application/AnalysisProvider.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { BinarySession } from "../../../src/application/BinarySession.js"; import { PROMPT_CONTRACTS } from "../../../src/contracts/promptContracts.js"; import { createEvidence } from "../../../src/domain/evidence.js"; @@ -284,7 +284,7 @@ describe("guided prompt completion lifecycle", () => { const second = join(directory, "second.hop"); await Promise.all([writeFile(first, "first"), writeFile(second, "second")]); const procedureRequests: Array>> = []; - const session = composeBinarySessionFromFactory((target) => + const session = createTestBinarySession((target) => lifecycleClient(basename(target.path, ".hop"), procedureRequests), ); const client = await connect(createServer(session, session)); @@ -340,7 +340,7 @@ const fixtureProvider = { id: "fixture", name: "Fixture", version: "1" }; const fixtureSession = ( onExecute: () => void = () => undefined, ): BinarySession => - composeBinarySessionFromFactory(() => ({ + createTestBinarySession(() => ({ execute: () => { onExecute(); return Promise.resolve(observed(null)); diff --git a/tests/boundary/mcp/reconstructionCoverageMcp.test.ts b/tests/boundary/mcp/reconstructionCoverageMcp.test.ts index 695207985d..48919022f1 100644 --- a/tests/boundary/mcp/reconstructionCoverageMcp.test.ts +++ b/tests/boundary/mcp/reconstructionCoverageMcp.test.ts @@ -6,7 +6,7 @@ import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { INVESTIGATION_EXAMPLES } from "../../../src/contracts/investigationExamples.js"; import { createEvidence } from "../../../src/domain/evidence.js"; import { createEvidenceBundle } from "../../../src/domain/evidenceBundle.js"; @@ -36,7 +36,7 @@ describe("reconstruction coverage MCP parity", () => { ["investigation_workspace_read", "investigation_workspace_write"], ["investigation_workspace_read", "investigation_workspace_write"], ); - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/boundary/mcp/reconstructionObligationLedgerMcp.test.ts b/tests/boundary/mcp/reconstructionObligationLedgerMcp.test.ts index 7bc5592099..679cd427bd 100644 --- a/tests/boundary/mcp/reconstructionObligationLedgerMcp.test.ts +++ b/tests/boundary/mcp/reconstructionObligationLedgerMcp.test.ts @@ -1,14 +1,14 @@ import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { describe, expect, it } from "vitest"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { createEvidenceBundle } from "../../../src/domain/evidenceBundle.js"; import { createServer } from "../../../src/server/createServer.js"; import { observed } from "../../fixtures/analysisExecution.js"; describe("reconstruction obligation ledger MCP parity", () => { it("builds an Evidence-backed page and exposes the retained resource", async () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/boundary/mcp/reconstructionReadinessMcp.test.ts b/tests/boundary/mcp/reconstructionReadinessMcp.test.ts index 79601691b4..f9f5f0f4ca 100644 --- a/tests/boundary/mcp/reconstructionReadinessMcp.test.ts +++ b/tests/boundary/mcp/reconstructionReadinessMcp.test.ts @@ -1,14 +1,14 @@ import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { describe, expect, it } from "vitest"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { RECONSTRUCTION_READINESS_EXAMPLE } from "../../../src/contracts/reconstructionReadinessExample.js"; import { createServer } from "../../../src/server/createServer.js"; import { observed } from "../../fixtures/analysisExecution.js"; describe("reconstruction readiness MCP parity", () => { it("returns a passing compact result and retains the full report resource", async () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/boundary/mcp/replayMachineMcp.test.ts b/tests/boundary/mcp/replayMachineMcp.test.ts index 20ca107977..a09c6e9fe4 100644 --- a/tests/boundary/mcp/replayMachineMcp.test.ts +++ b/tests/boundary/mcp/replayMachineMcp.test.ts @@ -1,14 +1,14 @@ import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { describe, expect, it } from "vitest"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { REPLAY_MACHINE_RUN_EXAMPLE } from "../../../src/contracts/replayMachineExample.js"; import { createServer } from "../../../src/server/createServer.js"; import { observed } from "../../fixtures/analysisExecution.js"; describe("direct replay machine MCP parity", () => { it("returns typed journal output and safe validation failures", async () => { - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(observed(null)), close: () => Promise.resolve(), })); diff --git a/tests/boundary/mcp/serverIdentity.test.ts b/tests/boundary/mcp/serverIdentity.test.ts index 773fcecd63..04b13fccc8 100644 --- a/tests/boundary/mcp/serverIdentity.test.ts +++ b/tests/boundary/mcp/serverIdentity.test.ts @@ -3,7 +3,7 @@ import { readFile } from "node:fs/promises"; import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { describe, expect, it } from "vitest"; -import { composeBinarySessionFromProvider } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { CATALOG_IDENTITY, CLI_COMMAND_NAMES, @@ -217,7 +217,7 @@ describe("server and catalog identity", () => { describe("live server identity over MCP", () => { it("exposes live identity, a stable catalog, and changing availability", async () => { - const session = composeBinarySessionFromProvider(availabilityProvider()); + const session = createTestBinarySession(availabilityProvider()); const server = createServer(session, session); const client = new Client( { name: "identity-test", version: "9" }, diff --git a/tests/boundary/mcp/serverUnknownsMcp.test.ts b/tests/boundary/mcp/serverUnknownsMcp.test.ts index 4ba7b00bc1..03711c3f6b 100644 --- a/tests/boundary/mcp/serverUnknownsMcp.test.ts +++ b/tests/boundary/mcp/serverUnknownsMcp.test.ts @@ -2,10 +2,7 @@ import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import type { CallToolResult } from "@modelcontextprotocol/server"; import { afterEach, expect, it } from "vitest"; -import { - composeBinarySessionFromFactory, - composeBinarySessionFromProvider, -} from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { AnalysisClient, AnalysisOperationPort, @@ -94,7 +91,7 @@ it("records approved trace truncation as a deduplicated residual unknown", async }), ), }; - const session = composeBinarySessionFromProvider( + const session = createTestBinarySession( providerWithCapabilities([ "list_strings", "list_procedures", @@ -159,7 +156,7 @@ it("records approved typed capability unavailability without forwarding the flag ); }, }; - const session = composeBinarySessionFromProvider( + const session = createTestBinarySession( providerWithCapabilities(["procedure_pseudo_code"]), ); const server = createServer(analysis, session); @@ -212,7 +209,7 @@ it("records approved typed capability unavailability without forwarding the flag }); it("records approved capture disagreement as a contradicted unknown", async () => { - const session = composeBinarySessionFromFactory( + const session = createTestBinarySession( () => ({ execute: () => Promise.resolve(ok(null)), diff --git a/tests/boundary/mcp/serverWorkflowMcp.test.ts b/tests/boundary/mcp/serverWorkflowMcp.test.ts index 52ba3ea90f..0079ee2b5c 100644 --- a/tests/boundary/mcp/serverWorkflowMcp.test.ts +++ b/tests/boundary/mcp/serverWorkflowMcp.test.ts @@ -3,7 +3,7 @@ import type { CallToolResult } from "@modelcontextprotocol/server"; import { afterEach, expect, it } from "vitest"; import { z } from "zod"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { AnalysisClient, AnalysisOperationPort, @@ -107,7 +107,7 @@ it("executes a realistic workflow: list methods, decompile selected, get xrefs", }); it("advertises the complete currently available inventory with a session", async () => { - const session = composeBinarySessionFromFactory( + const session = createTestBinarySession( (_path) => ({ execute: () => Promise.resolve(ok(null)), diff --git a/tests/boundary/mcp/sessionMcp.test.ts b/tests/boundary/mcp/sessionMcp.test.ts index a7761a2682..9b9eba77f4 100644 --- a/tests/boundary/mcp/sessionMcp.test.ts +++ b/tests/boundary/mcp/sessionMcp.test.ts @@ -8,10 +8,7 @@ import { z } from "zod"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { - composeBinarySessionFromFactory, - composeBinarySessionFromProvider, -} from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import type { AnalysisClient, AnalysisProvider, @@ -52,7 +49,7 @@ describe("target-free MCP lifecycle", () => { const targetPath = join(directory, "mutable.hop"); await writeFile(targetPath, "first"); const closed: string[] = []; - const session = composeBinarySessionFromProvider(provider(closed), { + const session = createTestBinarySession(provider(closed), { resolveAnalysisProfile: () => Promise.resolve( resultOk({ profile: SNAPSHOT_PROFILE, compatibility: {} }), @@ -230,9 +227,7 @@ describe("target-free MCP workflow", () => { describe("process residuals over MCP", () => { it("records approved process residuals in the unknown registry", async () => { if (!(await probeProcessCaptureCapability()).available) return; - const session = composeBinarySessionFromFactory(() => - client("fixture", []), - ); + const session = createTestBinarySession(() => client("fixture", [])); const server = createServer(session, session, { logger: silentLogger, processPolicy: () => ({ diff --git a/tests/boundary/mcp/sessionMcpHarness.ts b/tests/boundary/mcp/sessionMcpHarness.ts index 21ad59b195..e631115761 100644 --- a/tests/boundary/mcp/sessionMcpHarness.ts +++ b/tests/boundary/mcp/sessionMcpHarness.ts @@ -6,7 +6,7 @@ import type { CallToolResult } from "@modelcontextprotocol/server"; import { expect } from "vitest"; import { z } from "zod"; -import { composeBinarySessionFromProvider } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { createAnalysisProfile } from "../../../src/domain/analysisProfile.js"; import { createEvidence } from "../../../src/domain/evidence.js"; import { @@ -42,7 +42,7 @@ export const createSessionMcpHarness = async ( const second = join(root, "second.hop"); await Promise.all([writeFile(first, "one"), writeFile(second, "two")]); const closed: string[] = []; - const session = composeBinarySessionFromProvider(provider(closed), { + const session = createTestBinarySession(provider(closed), { resolveAnalysisProfile: () => Promise.resolve(ok({ profile: SNAPSHOT_PROFILE, compatibility: {} })), }); diff --git a/tests/boundary/mcp/toolRegistrationOptions.test.ts b/tests/boundary/mcp/toolRegistrationOptions.test.ts index 6dc084ae44..17dbc45499 100644 --- a/tests/boundary/mcp/toolRegistrationOptions.test.ts +++ b/tests/boundary/mcp/toolRegistrationOptions.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from "vitest"; import { Client, InMemoryTransport } from "@modelcontextprotocol/client"; import { McpServer } from "@modelcontextprotocol/server"; -import { z } from "zod"; import { TOOL_CONTRACTS } from "../../../src/contracts/toolContracts.js"; import { GENERATED_MCP_TOOL_CATALOG } from "../../../src/generatedMcpToolCatalog.js"; @@ -21,17 +20,6 @@ describe("tool registration options", () => { } }); - it("retains the canonical parser as the SDK validation boundary", async () => { - const contract = TOOL_CONTRACTS.find( - ({ name }) => name === "analyze_function", - ); - expect(contract).toBeDefined(); - if (contract === undefined) return; - - const result = await contract.inputSchema["~standard"].validate({}); - expect("issues" in result).toBe(true); - }); - it("generates the checked-in catalog from the SDK wire projection", async () => { const server = new McpServer({ name: "catalog-test", version: "0" }); for (const contract of TOOL_CONTRACTS) @@ -95,39 +83,6 @@ describe("tool registration options", () => { await Promise.allSettled([client.close(), server.close()]); } }); - - it("delegates output validation to the SDK boundary", async () => { - const server = new McpServer({ name: "output-test", version: "0" }); - server.registerTool( - "invalid_output", - { - inputSchema: z.object({}), - outputSchema: z.object({ value: z.string() }), - }, - async () => ({ - content: [{ type: "text", text: "invalid" }], - structuredContent: { value: 42 }, - }), - ); - const client = new Client({ name: "output-test", version: "0" }); - const [clientTransport, serverTransport] = - InMemoryTransport.createLinkedPair(); - try { - await server.connect(serverTransport); - await client.connect(clientTransport); - const result = await client.callTool({ name: "invalid_output" }); - expect(result.isError).toBe(true); - expect(result.content).toContainEqual( - expect.objectContaining({ - type: "text", - text: expect.stringContaining("Output validation error"), - }), - ); - expect(result.structuredContent).toBeUndefined(); - } finally { - await Promise.allSettled([client.close(), server.close()]); - } - }); }); const missingPropertyDescriptions = ( diff --git a/tests/boundary/process/processCaptureComparison.test.ts b/tests/boundary/process/processCaptureComparison.test.ts index cb59760861..d53e1e148d 100644 --- a/tests/boundary/process/processCaptureComparison.test.ts +++ b/tests/boundary/process/processCaptureComparison.test.ts @@ -1,82 +1,9 @@ import { expect, it } from "vitest"; import { - compareProcessCaptures, - digestProcessCommitment, - type ProcessCapture, -} from "../../../src/domain/processCapture.js"; - -const emptyCapture = (): ProcessCapture => { - const normalization = { - paths: true, - pids: true, - ports: true, - time_bucket_ms: 10, - patterns: [], - }; - const scenario = { executable_sha256: "0".repeat(64) }; - const comparisonContract = {}; - const shimPlan: readonly unknown[] = []; - const replayPlan = {}; - return { - schema_version: 4, - manifest: { - rea_version: "test", - provider_version: "3", - platform: process.platform, - architecture: process.arch, - pty_backend: "node-pty", - started_at: "2026-01-01T00:00:00.000Z", - completed_at: "2026-01-01T00:00:00.001Z", - scenario, - comparison_contract: comparisonContract, - shim_plan: shimPlan, - replay_plan: replayPlan, - full_scenario_sha256: digestProcessCommitment(scenario), - comparison_contract_sha256: digestProcessCommitment(comparisonContract), - executable_sha256: "0".repeat(64), - normalization_sha256: digestProcessCommitment(normalization), - shim_plan_sha256: digestProcessCommitment(shimPlan), - replay_plan_sha256: digestProcessCommitment(replayPlan), - }, - normalization, - frames: [], - rendered_frames: [], - interaction_events: [], - exit: { code: 0, signal: null, reason: "exited" }, - settlement: { - state: "quiesced", - elapsed_ms: 50, - cleanup_outcome: "not_required", - }, - process_samples: [], - filesystem_checkpoints: [ - { name: "before", at_ms: 0, files: [], effects: [], truncated: false }, - { - name: "after_settlement", - at_ms: 50, - files: [], - effects: [], - truncated: false, - }, - ], - shim_events: [], - protocol_events: [], - replay_transitions: [], - reactive_run: null, - event_journal: [], - files_before: [], - files_after: [], - filesystem_effects: [], - truncated: false, - limitations: [], - residual_unknowns: [], - cleanup: { - owned_process_group: "verified", - temporary_root: "removed", - }, - }; -}; + compareUnverifiedProcessCaptures as compareProcessCaptures, + emptyProcessCapture as emptyCapture, +} from "../../fixtures/processCapture.js"; it("classifies missing observations as unknown and one-sided evidence as added", () => { const base = { diff --git a/tests/boundary/process/processCaptureMultisource.test.ts b/tests/boundary/process/processCaptureMultisource.test.ts index 35a3b336fe..050af18a53 100644 --- a/tests/boundary/process/processCaptureMultisource.test.ts +++ b/tests/boundary/process/processCaptureMultisource.test.ts @@ -10,9 +10,9 @@ import { } from "../../../src/application/ProcessHarness.js"; import { parseProcessScenario, - validateProcessCapture, type ProcessCapture, } from "../../../src/domain/processCapture.js"; +import { processCaptureIssues } from "../../fixtures/processCapture.js"; type EventSource = "process" | "filesystem" | "http" | "websocket" | "shim"; @@ -257,7 +257,7 @@ it("runs the committed multi-source reactive fixture deterministically", async ( }, }; expect( - validateProcessCapture(failedActionCapture).filter(({ path }) => + processCaptureIssues(failedActionCapture).filter(({ path }) => path.startsWith("reactive_run"), ), ).toEqual([]); diff --git a/tests/boundary/process/processCaptureObservation.test.ts b/tests/boundary/process/processCaptureObservation.test.ts index 498c71751e..0f272ffd0a 100644 --- a/tests/boundary/process/processCaptureObservation.test.ts +++ b/tests/boundary/process/processCaptureObservation.test.ts @@ -16,11 +16,11 @@ import { TerminalRenderer } from "../../../src/application/TerminalRenderer.js"; import { authorizeProcessScenario, compareProcessCaptures, - digestProcessCommitment, parseProcessCapture, parseProcessScenario, type ProcessCapture, } from "../../../src/domain/processCapture.js"; +import { emptyProcessCapture as emptyCapture } from "../../fixtures/processCapture.js"; const base = { approved: true as const, @@ -28,78 +28,6 @@ const base = { working_directory: "/tmp", }; -const emptyCapture = (): ProcessCapture => { - const normalization = { - paths: true, - pids: true, - ports: true, - time_bucket_ms: 10, - patterns: [], - }; - const scenario = { executable_sha256: "0".repeat(64) }; - const comparisonContract = {}; - const shimPlan: readonly unknown[] = []; - const replayPlan = {}; - return { - schema_version: 4, - manifest: { - rea_version: "test", - provider_version: "3", - platform: process.platform, - architecture: process.arch, - pty_backend: "node-pty", - started_at: "2026-01-01T00:00:00.000Z", - completed_at: "2026-01-01T00:00:00.001Z", - scenario, - comparison_contract: comparisonContract, - shim_plan: shimPlan, - replay_plan: replayPlan, - full_scenario_sha256: digestProcessCommitment(scenario), - comparison_contract_sha256: digestProcessCommitment(comparisonContract), - executable_sha256: "0".repeat(64), - normalization_sha256: digestProcessCommitment(normalization), - shim_plan_sha256: digestProcessCommitment(shimPlan), - replay_plan_sha256: digestProcessCommitment(replayPlan), - }, - normalization, - frames: [], - rendered_frames: [], - interaction_events: [], - exit: { code: 0, signal: null, reason: "exited" }, - settlement: { - state: "quiesced", - elapsed_ms: 50, - cleanup_outcome: "not_required", - }, - process_samples: [], - filesystem_checkpoints: [ - { name: "before", at_ms: 0, files: [], effects: [], truncated: false }, - { - name: "after_settlement", - at_ms: 50, - files: [], - effects: [], - truncated: false, - }, - ], - shim_events: [], - protocol_events: [], - replay_transitions: [], - reactive_run: null, - event_journal: [], - files_before: [], - files_after: [], - filesystem_effects: [], - truncated: false, - limitations: [], - residual_unknowns: [], - cleanup: { - owned_process_group: "verified", - temporary_root: "removed", - }, - }; -}; - it("returns detached terminal and filesystem checkpoint observations", async () => { const observed: string[] = []; const renderer = new TerminalRenderer({ @@ -163,7 +91,6 @@ it("preserves rendered observation order instead of timestamp sorting", () => { ]; const result = buildCaptureResult({ frames: [], - reactiveRun: null, exit: { exitCode: 0, reason: "exited" }, samples: [], replay: { @@ -184,7 +111,10 @@ it("preserves rendered observation order instead of timestamp sorting", () => { interactions: [], checkpoints: capture.filesystem_checkpoints, shimEvents: [], - settlement: capture.settlement, + settlement: { + state: capture.settlement.state, + elapsed_ms: capture.settlement.elapsed_ms, + }, manifest: capture.manifest, eventJournal: [], }); diff --git a/tests/boundary/process/processCaptureReactive.test.ts b/tests/boundary/process/processCaptureReactive.test.ts index 142d9fe68a..51b7f371db 100644 --- a/tests/boundary/process/processCaptureReactive.test.ts +++ b/tests/boundary/process/processCaptureReactive.test.ts @@ -9,9 +9,9 @@ import { } from "../../../src/application/ProcessHarness.js"; import { parseProcessScenario, - validateProcessCapture, type ProcessCapture, } from "../../../src/domain/processCapture.js"; +import { processCaptureIssues } from "../../fixtures/processCapture.js"; function createInteractiveScenario(root: string, script: string) { return parseProcessScenario({ @@ -129,7 +129,7 @@ function assertControlAndTransitionValidation(capture: ProcessCapture): void { if (lastOrder === undefined) throw new Error("reactive observation order missing"); expect( - validateProcessCapture({ + processCaptureIssues({ ...capture, reactive_run: { ...reactiveRun, @@ -150,7 +150,7 @@ function assertControlAndTransitionValidation(capture: ProcessCapture): void { }), ); expect( - validateProcessCapture({ + processCaptureIssues({ ...capture, reactive_run: { ...reactiveRun, @@ -169,7 +169,7 @@ function assertControlAndTransitionValidation(capture: ProcessCapture): void { }), ); expect( - validateProcessCapture({ + processCaptureIssues({ ...capture, reactive_run: { status: "finished", @@ -192,7 +192,7 @@ function assertControlAndTransitionValidation(capture: ProcessCapture): void { sequence, })); expect( - validateProcessCapture({ + processCaptureIssues({ ...capture, reactive_run: { ...reactiveRun, transitions: suffix }, }), @@ -209,7 +209,7 @@ function assertReplayValidation(capture: ProcessCapture): void { const reactiveRun = capture.reactive_run; if (reactiveRun === null) throw new Error("reactive result missing"); expect( - validateProcessCapture({ + processCaptureIssues({ ...capture, reactive_run: { ...reactiveRun, @@ -237,7 +237,7 @@ function assertReplayValidation(capture: ProcessCapture): void { ]), ); expect( - validateProcessCapture({ + processCaptureIssues({ ...capture, reactive_run: { ...reactiveRun, status: "running", outcome: null }, }), @@ -247,7 +247,7 @@ function assertReplayValidation(capture: ProcessCapture): void { }), ); expect( - validateProcessCapture({ + processCaptureIssues({ ...capture, reactive_run: { ...reactiveRun, @@ -397,12 +397,12 @@ it("records target loss before post-exit settlement can win the deadline race", ], }; expect( - validateProcessCapture(withLaterMatch).filter(({ path }) => + processCaptureIssues(withLaterMatch).filter(({ path }) => path.startsWith("reactive_run"), ), ).toEqual([]); expect( - validateProcessCapture({ + processCaptureIssues({ ...withLaterMatch, reactive_run: { ...reactiveRun, diff --git a/tests/boundary/process/processCaptureTraceProjection.test.ts b/tests/boundary/process/processCaptureTraceProjection.test.ts index bf695b3907..73717fd93f 100644 --- a/tests/boundary/process/processCaptureTraceProjection.test.ts +++ b/tests/boundary/process/processCaptureTraceProjection.test.ts @@ -1,82 +1,10 @@ import { expect, it } from "vitest"; +import { digestProcessCommitment } from "../../../src/domain/processCapture.js"; import { - compareProcessCaptures, - digestProcessCommitment, - type ProcessCapture, -} from "../../../src/domain/processCapture.js"; - -const emptyCapture = (): ProcessCapture => { - const normalization = { - paths: true, - pids: true, - ports: true, - time_bucket_ms: 10, - patterns: [], - }; - const scenario = { executable_sha256: "0".repeat(64) }; - const comparisonContract = {}; - const shimPlan: readonly unknown[] = []; - const replayPlan = {}; - return { - schema_version: 4, - manifest: { - rea_version: "test", - provider_version: "3", - platform: process.platform, - architecture: process.arch, - pty_backend: "node-pty", - started_at: "2026-01-01T00:00:00.000Z", - completed_at: "2026-01-01T00:00:00.001Z", - scenario, - comparison_contract: comparisonContract, - shim_plan: shimPlan, - replay_plan: replayPlan, - full_scenario_sha256: digestProcessCommitment(scenario), - comparison_contract_sha256: digestProcessCommitment(comparisonContract), - executable_sha256: "0".repeat(64), - normalization_sha256: digestProcessCommitment(normalization), - shim_plan_sha256: digestProcessCommitment(shimPlan), - replay_plan_sha256: digestProcessCommitment(replayPlan), - }, - normalization, - frames: [], - rendered_frames: [], - interaction_events: [], - exit: { code: 0, signal: null, reason: "exited" }, - settlement: { - state: "quiesced", - elapsed_ms: 50, - cleanup_outcome: "not_required", - }, - process_samples: [], - filesystem_checkpoints: [ - { name: "before", at_ms: 0, files: [], effects: [], truncated: false }, - { - name: "after_settlement", - at_ms: 50, - files: [], - effects: [], - truncated: false, - }, - ], - shim_events: [], - protocol_events: [], - replay_transitions: [], - reactive_run: null, - event_journal: [], - files_before: [], - files_after: [], - filesystem_effects: [], - truncated: false, - limitations: [], - residual_unknowns: [], - cleanup: { - owned_process_group: "verified", - temporary_root: "removed", - }, - }; -}; + compareUnverifiedProcessCaptures as compareProcessCaptures, + emptyProcessCapture as emptyCapture, +} from "../../fixtures/processCapture.js"; it("detects changes in normalized process sample metadata", () => { const capture = { diff --git a/tests/boundary/process/processCaptureValidation.test.ts b/tests/boundary/process/processCaptureValidation.test.ts index 853dfefacf..19391ac30a 100644 --- a/tests/boundary/process/processCaptureValidation.test.ts +++ b/tests/boundary/process/processCaptureValidation.test.ts @@ -2,87 +2,18 @@ import { expect, it } from "vitest"; import { createProcessCaptureJournal } from "../../../src/application/ProcessCaptureJournal.js"; import { - compareProcessCaptures, digestProcessCommitment, LEGACY_PROCESS_CAPTURE_MESSAGE, parseProcessCapture, processCaptureSchema, - validateProcessCapture, - type ProcessCapture, type ProcessCaptureEventJournalEntry, + type UnverifiedProcessCapture, } from "../../../src/domain/processCapture.js"; - -const emptyCapture = (): ProcessCapture => { - const normalization = { - paths: true, - pids: true, - ports: true, - time_bucket_ms: 10, - patterns: [], - }; - const scenario = { executable_sha256: "0".repeat(64) }; - const comparisonContract = {}; - const shimPlan: readonly unknown[] = []; - const replayPlan = {}; - return { - schema_version: 4, - manifest: { - rea_version: "test", - provider_version: "3", - platform: process.platform, - architecture: process.arch, - pty_backend: "node-pty", - started_at: "2026-01-01T00:00:00.000Z", - completed_at: "2026-01-01T00:00:00.001Z", - scenario, - comparison_contract: comparisonContract, - shim_plan: shimPlan, - replay_plan: replayPlan, - full_scenario_sha256: digestProcessCommitment(scenario), - comparison_contract_sha256: digestProcessCommitment(comparisonContract), - executable_sha256: "0".repeat(64), - normalization_sha256: digestProcessCommitment(normalization), - shim_plan_sha256: digestProcessCommitment(shimPlan), - replay_plan_sha256: digestProcessCommitment(replayPlan), - }, - normalization, - frames: [], - rendered_frames: [], - interaction_events: [], - exit: { code: 0, signal: null, reason: "exited" }, - settlement: { - state: "quiesced", - elapsed_ms: 50, - cleanup_outcome: "not_required", - }, - process_samples: [], - filesystem_checkpoints: [ - { name: "before", at_ms: 0, files: [], effects: [], truncated: false }, - { - name: "after_settlement", - at_ms: 50, - files: [], - effects: [], - truncated: false, - }, - ], - shim_events: [], - protocol_events: [], - replay_transitions: [], - reactive_run: null, - event_journal: [], - files_before: [], - files_after: [], - filesystem_effects: [], - truncated: false, - limitations: [], - residual_unknowns: [], - cleanup: { - owned_process_group: "verified", - temporary_root: "removed", - }, - }; -}; +import { + compareUnverifiedProcessCaptures as compareProcessCaptures, + emptyUnverifiedProcessCapture as emptyCapture, + processCaptureIssues, +} from "../../fixtures/processCapture.js"; it("never considers truncated captures equivalent", () => { const capture = { @@ -146,6 +77,30 @@ it("rejects altered v4 commitments and accepts canonical key reordering", () => ).toThrow("executable_sha256"); }); +it("rejects settlement and cleanup combinations that cannot occur", () => { + const capture = emptyCapture(); + expect(() => + parseProcessCapture({ + ...capture, + settlement: { + state: "quiesced", + elapsed_ms: 0, + cleanup_outcome: "cleaned", + }, + }), + ).toThrow("cleanup_outcome"); + expect(() => + parseProcessCapture({ + ...capture, + settlement: { + state: "alive_at_deadline", + elapsed_ms: 1, + cleanup_outcome: "not_required", + }, + }), + ).toThrow("cleanup_outcome"); +}); + it("accepts old captures without a journal and validates complete journals", () => { const journal = createProcessCaptureJournal(); const observed: ProcessCaptureEventJournalEntry[] = []; @@ -185,7 +140,7 @@ it("accepts old captures without a journal and validates complete journals", () { capture_order: 3, collection: "filesystem_checkpoints", index: 1 }, ] as const; expect( - validateProcessCapture({ ...capture, event_journal: eventJournal }), + processCaptureIssues({ ...capture, event_journal: eventJournal }), ).toEqual([]); for (const [candidate, message] of [ @@ -212,7 +167,7 @@ it("accepts old captures without a journal and validates complete journals", () ], ] as const) { expect( - validateProcessCapture({ ...capture, event_journal: candidate }), + processCaptureIssues({ ...capture, event_journal: candidate }), ).toEqual( expect.arrayContaining([ expect.objectContaining({ @@ -267,7 +222,7 @@ it.each([ }, }; const capture = emptyCapture(); - const candidate: ProcessCapture = { + const candidate: UnverifiedProcessCapture = { ...capture, manifest: { ...capture.manifest, @@ -284,7 +239,7 @@ it.each([ })), }; - expect(validateProcessCapture(candidate)).toEqual( + expect(processCaptureIssues(candidate)).toEqual( expect.arrayContaining([ expect.objectContaining({ message: expect.stringContaining("limit"), diff --git a/tests/boundary/process/processObservation.test.ts b/tests/boundary/process/processObservation.test.ts index 781bb17458..f62f97da7c 100644 --- a/tests/boundary/process/processObservation.test.ts +++ b/tests/boundary/process/processObservation.test.ts @@ -3,7 +3,7 @@ import { describe, expect, it } from "vitest"; import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../../../src/contracts/processCaptureExample.js"; import { processCaptureSchema, - type ProcessCapture, + type UnverifiedProcessCapture, } from "../../../src/domain/processCapture.js"; import { createProcessObservation, @@ -12,7 +12,7 @@ import { const emptyCapture = processCaptureSchema.parse(EMPTY_PROCESS_CAPTURE_EXAMPLE); -const capture: ProcessCapture = { +const capture: UnverifiedProcessCapture = { ...emptyCapture, frames: [{ sequence: 0, at_ms: 1, data: "Ready" }], rendered_frames: [ diff --git a/tests/boundary/providers/ghidra/ghidraDoctor.test.ts b/tests/boundary/providers/ghidra/ghidraDoctor.test.ts index 8d51d96db8..efcd71c75a 100644 --- a/tests/boundary/providers/ghidra/ghidraDoctor.test.ts +++ b/tests/boundary/providers/ghidra/ghidraDoctor.test.ts @@ -24,7 +24,7 @@ const installationHost = ( major: 21, home: "/usr/lib/jvm/jdk-21", bits: 64, - jdk: true, + runtime: "jdk", }), ...overrides, }); @@ -159,7 +159,7 @@ describe("Ghidra doctor integration", () => { major: 17, home: "/usr/lib/jvm/jdk-17", bits: 64, - jdk: true, + runtime: "jdk", }), }, ), diff --git a/tests/boundary/providers/ghidra/ghidraInstallation.test.ts b/tests/boundary/providers/ghidra/ghidraInstallation.test.ts index 63362e68fd..cddcd17f57 100644 --- a/tests/boundary/providers/ghidra/ghidraInstallation.test.ts +++ b/tests/boundary/providers/ghidra/ghidraInstallation.test.ts @@ -20,7 +20,7 @@ const JAVA: GhidraJavaObservation = { major: SUPPORTED_GHIDRA_JAVA_MAJOR, home: "/usr/lib/jvm/jdk-21", bits: 64, - jdk: true, + runtime: "jdk", }; const host = ( @@ -66,11 +66,10 @@ describe("Ghidra installation inspection", () => { host(), ), ).toMatchObject({ - available: true, + status: "available", providerVersion: SUPPORTED_GHIDRA_VERSION, analyzeHeadlessPath: HEADLESS, javaVersion: "21.0.11", - rejectionCode: null, }); }); @@ -104,13 +103,12 @@ describe("Ghidra installation inspection", () => { windowsHost, ), ).toMatchObject({ - available: true, + status: "available", platform: "win32", architecture: "x64", analyzeHeadlessPath: WINDOWS_HEADLESS, javaCommand: "C:\\Java\\jdk-21\\bin\\java.exe", providerVersion: SUPPORTED_GHIDRA_VERSION, - rejectionCode: null, }); }); }); @@ -208,14 +206,16 @@ describe("Ghidra installation rejection diagnostics", () => { platform: "linux" as const, architecture: "x64" as const, }, - override: { probeJava: () => ({ ...JAVA, jdk: false }) }, + override: { probeJava: () => ({ ...JAVA, runtime: "jre" as const }) }, failed: "java", code: "unsupported_version", }, ])("distinguishes $name", ({ options, override, failed, code }) => { const result = inspectGhidraInstallation(options, host(override)); - expect(result.available).toBe(false); - expect(result.checks.find(({ ok }) => !ok)).toMatchObject({ + expect(result.status).toBe("unavailable"); + expect( + result.checks.find(({ status }) => status === "failed"), + ).toMatchObject({ name: failed, code, }); diff --git a/tests/boundary/providers/ghidra/ghidraProvider.test.ts b/tests/boundary/providers/ghidra/ghidraProvider.test.ts index 1a6d9d5a3c..7830be7000 100644 --- a/tests/boundary/providers/ghidra/ghidraProvider.test.ts +++ b/tests/boundary/providers/ghidra/ghidraProvider.test.ts @@ -25,7 +25,7 @@ const installationHost = (): GhidraInstallationHost => ({ major: 21, home: "/usr/lib/jvm/jdk-21", bits: 64, - jdk: true, + runtime: "jdk", }), }); @@ -50,7 +50,7 @@ describe("Ghidra provider", () => { major: 21, home: "/usr/lib/jvm/jdk-21", bits: 64, - jdk: true, + runtime: "jdk", }; }, }; diff --git a/tests/boundary/providers/hopper/linuxPrivateDisplay.test.ts b/tests/boundary/providers/hopper/linuxPrivateDisplay.test.ts index 38a784d4fd..e8b175c621 100644 --- a/tests/boundary/providers/hopper/linuxPrivateDisplay.test.ts +++ b/tests/boundary/providers/hopper/linuxPrivateDisplay.test.ts @@ -3,7 +3,10 @@ import { fileURLToPath } from "node:url"; import { describe, expect, it } from "vitest"; -import type { HopperStartupDiagnostic } from "../../../../src/domain/hopperStartupFailure.js"; +import type { + HopperStartupDiagnostic, + HopperStartupFailureCode, +} from "../../../../src/domain/hopperStartupFailure.js"; import { runLinuxPrivateDisplayProbe, selectLinuxPrivateDisplayStrategy, @@ -23,27 +26,43 @@ const hangingHelperPath = fileURLToPath( new URL("../../../fixtures/x11ProbeHang.py", import.meta.url), ); -const diagnostic = ( - overrides: Partial = {}, -): HopperStartupDiagnostic => ({ - schema_version: 1, - component: "hopper_private_display", - operation: "probe", - status: "ready", - failure_code: null, - reason: "ready", - socket_directory: "/tmp/.X11-unix", - socket_directory_mode: "1777", - mount_read_only: false, - effective_socket_directory_mode: "1777", - effective_mount_read_only: false, - wsl: false, - strategy: "direct", - fallback_reason: null, - xvfb_stderr_bytes: 0, - xvfb_stderr_truncated: false, - ...overrides, -}); +type DiagnosticOverrides = Partial< + Omit +> & + ( + | { readonly status?: "ready"; readonly failure_code?: null } + | { + readonly status: "error"; + readonly failure_code: HopperStartupFailureCode; + } + ); + +const diagnostic = (overrides: DiagnosticOverrides = {}) => { + const common = { + schema_version: 1, + component: "hopper_private_display", + operation: "probe", + reason: "ready", + socket_directory: "/tmp/.X11-unix", + socket_directory_mode: "1777", + mount_read_only: false, + effective_socket_directory_mode: "1777", + effective_mount_read_only: false, + wsl: false, + strategy: "direct", + fallback_reason: null, + xvfb_stderr_bytes: 0, + xvfb_stderr_truncated: false, + } as const; + return overrides.status === "error" + ? ({ ...common, ...overrides } satisfies HopperStartupDiagnostic) + : ({ + ...common, + ...overrides, + status: "ready", + failure_code: null, + } satisfies HopperStartupDiagnostic); +}; const processResult = ( value: HopperStartupDiagnostic, @@ -58,7 +77,7 @@ const processResult = ( ...overrides, }); -const failureExit = (code: HopperStartupDiagnostic["failure_code"]): number => +const failureExit = (code: HopperStartupFailureCode): number => code === "x11_socket_directory_unusable" ? 80 : code === "runtime_dependency_unavailable" diff --git a/tests/boundary/providers/managed/managedMemberComparison.test.ts b/tests/boundary/providers/managed/managedMemberComparison.test.ts index b2cdb67577..73d9df9795 100644 --- a/tests/boundary/providers/managed/managedMemberComparison.test.ts +++ b/tests/boundary/providers/managed/managedMemberComparison.test.ts @@ -112,6 +112,41 @@ describe("managed member comparison", () => { }); }); + it("rejects member states that disagree with their observed sides or match", () => { + const left = inspect(buildManagedPeFixture(), "/tmp/left.dll"); + const right = inspect(buildManagedPeFixture(), "/tmp/right.dll"); + const result = compareManagedMembers( + { evidenceId: left.evidence.evidence_id, result: left.result }, + { evidenceId: right.evidence.evidence_id, result: right.result }, + comparisonLimits, + ); + const method = result.methods[0]; + expect(method).toBeDefined(); + if (method === undefined) return; + + expect( + managedMemberComparisonResultSchema.safeParse({ + ...result, + methods: [{ ...method, status: "unchanged", right: null }], + }).success, + ).toBe(false); + expect( + managedMemberComparisonResultSchema.safeParse({ + ...result, + methods: [ + { + ...method, + match: { + ...method.match, + basis: "none", + confidence: "unknown", + }, + }, + ], + }).success, + ).toBe(false); + }); + it("does not match identical instruction-limited method prefixes", () => { const limited = { ...memberLimits, maxMethodInstructions: 1 }; const left = inspect( diff --git a/tests/composition/analysis-sessions/analysisSnapshot.test.ts b/tests/composition/analysis-sessions/analysisSnapshot.test.ts deleted file mode 100644 index 48484338d6..0000000000 --- a/tests/composition/analysis-sessions/analysisSnapshot.test.ts +++ /dev/null @@ -1,213 +0,0 @@ -import { readFile, rm, stat, writeFile } from "node:fs/promises"; -import { join } from "node:path"; - -import { afterEach, describe, expect, it } from "vitest"; - -import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; - -import { createAnalysisExecution } from "../../../src/application/AnalysisProvider.js"; -import { AnalysisSnapshotCache } from "../../../src/application/AnalysisSnapshotCache.js"; -import { - readAnalysisSnapshot, - writeAnalysisSnapshot, -} from "../../../src/application/AnalysisSnapshotFiles.js"; -import { createAnalysisProfile } from "../../../src/domain/analysisProfile.js"; -import { - createAnalysisSnapshotEntry, - parseAnalysisSnapshot, - snapshotBinding, - snapshotEvidenceForQuery, - snapshotTarget, - type AnalysisSnapshot, -} from "../../../src/domain/analysisSnapshot.js"; -import type { BinaryTarget } from "../../../src/domain/binaryTarget.js"; -import { createEvidence } from "../../../src/domain/evidence.js"; -import { createEvidenceBundle } from "../../../src/domain/evidenceBundle.js"; - -let directory: string | undefined; - -const TARGET: BinaryTarget = { - path: "/tmp/app", - sha256: "a".repeat(64), - kind: "executable", - format: "mach-o", - architecture: "arm64", - availableArchitectures: ["arm64"], -}; -const PROVIDER = { id: "fixture", name: "Fixture", version: "1" } as const; -const PROFILE = createAnalysisProfile(PROVIDER, 1, { - loader: "mach-o-arm64", -}); - -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - -describe("analysis snapshots: partitioning", () => { - it("returns detached cache data only from the exact provider/profile partition", () => { - const cache = new AnalysisSnapshotCache(); - const execution = createAnalysisExecution("main", PROVIDER, { - analysisProfile: PROFILE, - }); - cache.record({ - target: TARGET, - profile: PROFILE, - operation: "address_name", - parameters: { address: "0x1000", document: "fixture" }, - execution, - }); - const exported = cache.export(TARGET, PROFILE, createEvidenceBundle([])); - expect(exported.ok).toBe(true); - if (!exported.ok) return; - const entry = exported.value.entries[0]; - if (entry !== undefined) { - Reflect.set(entry.execution, "provider", { - id: "forged", - name: "Forged", - version: "9", - }); - entry.execution.limitations.push("forged"); - } - - expect( - cache.lookup(TARGET, PROFILE, "address_name", { - address: "0x1000", - document: "fixture", - }), - ).toMatchObject({ - provider: PROVIDER, - analysisProfile: PROFILE, - limitations: [expect.stringContaining("local REA analysis snapshot")], - }); - const changedProfile = createAnalysisProfile(PROVIDER, 1, { - loader: "configured-override", - }); - expect( - cache.lookup(TARGET, changedProfile, "address_name", { - address: "0x1000", - document: "fixture", - }), - ).toBeUndefined(); - const changedProviderProfile = createAnalysisProfile( - { id: "other", name: "Other", version: "1" }, - 1, - { loader: "mach-o-arm64" }, - ); - expect( - cache.lookup(TARGET, changedProviderProfile, "address_name", { - address: "0x1000", - document: "fixture", - }), - ).toBeUndefined(); - }); - - it("finds only Evidence committed to the exact binding and evidence profile", () => { - const evidence = createEvidence(TARGET, PROVIDER, { - operation: "analyze_function", - parameters: { procedure: "main" }, - result: { summary: "cached" }, - analysisProfile: PROFILE, - }); - const legacy = createEvidence(TARGET, PROVIDER, { - operation: "legacy_query", - parameters: {}, - result: { summary: "legacy" }, - }); - const snapshot: AnalysisSnapshot = { - snapshot_version: 2, - target: snapshotTarget(TARGET), - binding: snapshotBinding(PROFILE), - entries: [], - evidence_bundle: createEvidenceBundle([evidence, legacy]), - }; - expect( - snapshotEvidenceForQuery(snapshot, { - target: TARGET, - bindingProfile: PROFILE, - operation: "analyze_function", - parameters: { procedure: "main" }, - provider: PROVIDER, - evidenceProfile: PROFILE, - }), - ).toEqual(evidence); - expect( - snapshotEvidenceForQuery(snapshot, { - target: TARGET, - bindingProfile: PROFILE, - operation: "legacy_query", - parameters: {}, - provider: PROVIDER, - evidenceProfile: PROFILE, - }), - ).toBeUndefined(); - }); -}); - -describe("analysis snapshots: persistence", () => { - it("writes canonical private v2 JSON and rejects changed query identity", async () => { - directory = await createTestTempDirectory("rea-snapshot-"); - const path = join(directory, "analysis.json"); - const target = snapshotTarget(TARGET); - const binding = snapshotBinding(PROFILE); - const entry = createAnalysisSnapshotEntry({ - target, - binding, - operation: "address_name", - parameters: { address: "0x1000" }, - execution: createAnalysisExecution("main", PROVIDER, { - analysisProfile: PROFILE, - }), - }); - const snapshot: AnalysisSnapshot = { - snapshot_version: 2, - target, - binding, - entries: [entry], - evidence_bundle: createEvidenceBundle([]), - }; - const policy = { - roots: [directory], - maxBytes: 1024 * 1024, - maxDepth: 64, - maxStringLength: 1024, - maxNodes: 10_000, - }; - const written = await writeAnalysisSnapshot(snapshot, path, false, policy); - expect(written.ok).toBe(true); - expect((await readFile(path, "utf8")).endsWith("\n")).toBe(true); - expect((await stat(path)).mode & 0o777).toBe(0o600); - expect((await readAnalysisSnapshot(path, policy)).ok).toBe(true); - - const altered: unknown = JSON.parse(await readFile(path, "utf8")); - if ( - typeof altered !== "object" || - altered === null || - !("entries" in altered) || - !Array.isArray(altered.entries) - ) - throw new TypeError("fixture snapshot is malformed"); - const first: unknown = altered.entries[0]; - if ( - typeof first !== "object" || - first === null || - !("parameters" in first) || - typeof first.parameters !== "object" || - first.parameters === null - ) - throw new TypeError("fixture entry is malformed"); - Reflect.set(first.parameters, "address", "0x2000"); - await writeFile(path, JSON.stringify(altered)); - const loaded = await readAnalysisSnapshot(path, policy); - expect(loaded.ok).toBe(false); - if (!loaded.ok) expect(loaded.error._tag).toBe("EvidenceIntegrityError"); - expect(() => parseAnalysisSnapshot(altered)).toThrow(/identifier/u); - }); - - it("rejects snapshot v1 with explicit recapture guidance", () => { - expect(() => parseAnalysisSnapshot({ snapshot_version: 1 })).toThrow( - /v1.*recapture.*v2/iu, - ); - }); -}); diff --git a/tests/composition/analysis-sessions/binarySession.01-returns-detached-provider-target-and.test.ts b/tests/composition/analysis-sessions/binarySession.01-returns-detached-provider-target-and.test.ts index f7e4507176..d77b356d51 100644 --- a/tests/composition/analysis-sessions/binarySession.01-returns-detached-provider-target-and.test.ts +++ b/tests/composition/analysis-sessions/binarySession.01-returns-detached-provider-target-and.test.ts @@ -1,6 +1,6 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -8,20 +8,13 @@ import type { AnalysisProvider, CapabilityDescriptor, } from "../../../src/application/AnalysisProvider.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { createAnalysisProfile } from "../../../src/domain/analysisProfile.js"; import { createEvidenceBundle } from "../../../src/domain/evidenceBundle.js"; import { createInvestigationWorkspace } from "../../../src/domain/investigationWorkspace.js"; import { ok as resultOk } from "../../../src/domain/result.js"; import { observed as ok } from "../../fixtures/analysisExecution.js"; -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const cacheProvider = ( calls: string[], mayWriteFilesystem = false, @@ -86,7 +79,7 @@ const cacheCapability = ( }); const targets = async (): Promise => { - directory ??= await createTestTempDirectory("bb-session-"); + const directory = await createTestTempDirectory("bb-session-"); const first = join(directory, "first.hop"); const second = join(directory, "second.hop"); await writeFile(first, "one"); @@ -97,7 +90,7 @@ const targets = async (): Promise => { describe("binary session", () => { it("returns detached provider, target, and workspace metadata", async () => { const [first] = await targets(); - const session = composeBinarySessionFromFactory(cacheProvider([])); + const session = createTestBinarySession(cacheProvider([])); expect((await session.open(first)).ok).toBe(true); expect(session.status()).toMatchObject({ analysis_run: { diff --git a/tests/composition/analysis-sessions/binarySession.02-runs-through-a-non-hopper.test.ts b/tests/composition/analysis-sessions/binarySession.02-runs-through-a-non-hopper.test.ts index 3c48d8dae8..7f486a05b6 100644 --- a/tests/composition/analysis-sessions/binarySession.02-runs-through-a-non-hopper.test.ts +++ b/tests/composition/analysis-sessions/binarySession.02-runs-through-a-non-hopper.test.ts @@ -1,22 +1,15 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; import type { AnalysisProvider } from "../../../src/application/AnalysisProvider.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { observed as ok } from "../../fixtures/analysisExecution.js"; -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const targets = async (): Promise => { - directory ??= await createTestTempDirectory("bb-session-"); + const directory = await createTestTempDirectory("bb-session-"); const first = join(directory, "first.hop"); const second = join(directory, "second.hop"); await writeFile(first, "one"); @@ -106,7 +99,7 @@ describe("binary session", () => { const [first] = await targets(); const operations: string[] = []; const provider = nonHopperProvider(operations); - const session = composeBinarySessionFromFactory(provider); + const session = createTestBinarySession(provider); expect((await session.open(first)).ok).toBe(true); expect(await session.execute("address_name", {})).toEqual({ ok: true, diff --git a/tests/composition/analysis-sessions/binarySession.03-allocates-one-fresh-run-identity.test.ts b/tests/composition/analysis-sessions/binarySession.03-allocates-one-fresh-run-identity.test.ts index 528dd8355b..9507212b48 100644 --- a/tests/composition/analysis-sessions/binarySession.03-allocates-one-fresh-run-identity.test.ts +++ b/tests/composition/analysis-sessions/binarySession.03-allocates-one-fresh-run-identity.test.ts @@ -1,6 +1,6 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -8,18 +8,11 @@ import type { AnalysisProvider, CapabilityDescriptor, } from "../../../src/application/AnalysisProvider.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { createAnalysisProfile } from "../../../src/domain/analysisProfile.js"; import { ok as resultOk } from "../../../src/domain/result.js"; import { observed as ok } from "../../fixtures/analysisExecution.js"; -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const cacheProvider = ( calls: string[], mayWriteFilesystem = false, @@ -84,7 +77,7 @@ const cacheCapability = ( }); const targets = async (): Promise => { - directory ??= await createTestTempDirectory("bb-session-"); + const directory = await createTestTempDirectory("bb-session-"); const first = join(directory, "first.hop"); const second = join(directory, "second.hop"); await writeFile(first, "one"); @@ -104,7 +97,7 @@ describe("binary session", () => { runIds.push(context.runId); return createClient(target, profile, context); }; - const session = composeBinarySessionFromFactory(provider); + const session = createTestBinarySession(provider); expect((await session.open(first)).ok).toBe(true); expect((await session.open(first)).ok).toBe(true); diff --git a/tests/composition/analysis-sessions/binarySession.04-replays-exact-immutable-calls-from.test.ts b/tests/composition/analysis-sessions/binarySession.04-replays-exact-immutable-calls-from.test.ts index f702e727c4..d91b91a071 100644 --- a/tests/composition/analysis-sessions/binarySession.04-replays-exact-immutable-calls-from.test.ts +++ b/tests/composition/analysis-sessions/binarySession.04-replays-exact-immutable-calls-from.test.ts @@ -1,6 +1,6 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -8,18 +8,11 @@ import type { AnalysisProvider, CapabilityDescriptor, } from "../../../src/application/AnalysisProvider.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { createAnalysisProfile } from "../../../src/domain/analysisProfile.js"; import { ok as resultOk } from "../../../src/domain/result.js"; import { observed as ok } from "../../fixtures/analysisExecution.js"; -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const cacheProvider = ( calls: string[], mayWriteFilesystem = false, @@ -84,7 +77,7 @@ const cacheCapability = ( }); const targets = async (): Promise => { - directory ??= await createTestTempDirectory("bb-session-"); + const directory = await createTestTempDirectory("bb-session-"); const first = join(directory, "first.hop"); const second = join(directory, "second.hop"); await writeFile(first, "one"); @@ -96,9 +89,7 @@ describe("binary session", () => { it("replays exact immutable calls from a matching provider-neutral snapshot", async () => { const [first, second] = await targets(); const initialCalls: string[] = []; - const initial = composeBinarySessionFromFactory( - cacheProvider(initialCalls), - ); + const initial = createTestBinarySession(cacheProvider(initialCalls)); expect((await initial.open(first)).ok).toBe(true); expect( ( @@ -115,7 +106,7 @@ describe("binary session", () => { await initial.close(); const replayCalls: string[] = []; - const replay = composeBinarySessionFromFactory(cacheProvider(replayCalls)); + const replay = createTestBinarySession(cacheProvider(replayCalls)); expect(replay.importAnalysisSnapshot(snapshot.value)).toEqual({ ok: true, value: 1, @@ -156,7 +147,7 @@ describe("binary session", () => { }); await replay.close(); - const mismatch = composeBinarySessionFromFactory(cacheProvider([])); + const mismatch = createTestBinarySession(cacheProvider([])); expect(mismatch.importAnalysisSnapshot(snapshot.value).ok).toBe(true); const opened = await mismatch.open(second); expect(opened.ok).toBe(false); @@ -181,9 +172,7 @@ describe("binary session", () => { compatibility: {}, }), ); - const profileMismatch = composeBinarySessionFromFactory( - profileMismatchProvider, - ); + const profileMismatch = createTestBinarySession(profileMismatchProvider); expect(profileMismatch.importAnalysisSnapshot(snapshot.value).ok).toBe( true, ); @@ -196,7 +185,7 @@ describe("binary session", () => { expect(profileMismatchCalls).toEqual([]); await profileMismatch.close(); - const activeProfileMismatch = composeBinarySessionFromFactory( + const activeProfileMismatch = createTestBinarySession( profileMismatchProvider, ); expect((await activeProfileMismatch.open(first)).ok).toBe(true); @@ -212,7 +201,7 @@ describe("binary session", () => { it("does not snapshot reads that depend on the provider cursor", async () => { const [first] = await targets(); const calls: string[] = []; - const session = composeBinarySessionFromFactory(cacheProvider(calls)); + const session = createTestBinarySession(cacheProvider(calls)); expect((await session.open(first)).ok).toBe(true); expect((await session.execute("address_name", {})).ok).toBe(true); expect((await session.execute("address_name", {})).ok).toBe(true); diff --git a/tests/composition/analysis-sessions/binarySession.05-publishes-provider-health-availability-changes.test.ts b/tests/composition/analysis-sessions/binarySession.05-publishes-provider-health-availability-changes.test.ts index 5c87d80386..a652b129e0 100644 --- a/tests/composition/analysis-sessions/binarySession.05-publishes-provider-health-availability-changes.test.ts +++ b/tests/composition/analysis-sessions/binarySession.05-publishes-provider-health-availability-changes.test.ts @@ -1,6 +1,6 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -8,19 +8,12 @@ import type { AnalysisProvider, CapabilityDescriptor, } from "../../../src/application/AnalysisProvider.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { createAnalysisProfile } from "../../../src/domain/analysisProfile.js"; import { ProviderAdapterError } from "../../../src/domain/errors.js"; import { err, ok as resultOk } from "../../../src/domain/result.js"; import { observed as ok } from "../../fixtures/analysisExecution.js"; -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const cacheProvider = ( calls: string[], mayWriteFilesystem = false, @@ -85,7 +78,7 @@ const cacheCapability = ( }); const targets = async (): Promise => { - directory ??= await createTestTempDirectory("bb-session-"); + const directory = await createTestTempDirectory("bb-session-"); const first = join(directory, "first.hop"); const second = join(directory, "second.hop"); await writeFile(first, "one"); @@ -106,7 +99,7 @@ describe("binary session", () => { ), close: () => Promise.resolve(), }); - const session = composeBinarySessionFromFactory(provider); + const session = createTestBinarySession(provider); let changes = 0; session.onAvailabilityChanged(() => { changes += 1; @@ -152,7 +145,7 @@ describe("binary session", () => { }, close: () => Promise.resolve(), }); - const session = composeBinarySessionFromFactory(provider); + const session = createTestBinarySession(provider); expect((await session.open(first)).ok).toBe(true); const input = { address: "0x1000", document: "first" }; expect((await session.execute("address_name", input)).ok).toBe(false); @@ -188,7 +181,7 @@ describe("binary session", () => { it("does not replay operations with filesystem side effects", async () => { const [first] = await targets(); const calls: string[] = []; - const session = composeBinarySessionFromFactory(cacheProvider(calls, true)); + const session = createTestBinarySession(cacheProvider(calls, true)); expect((await session.open(first)).ok).toBe(true); const input = { address: "0x1000", document: "first" }; expect((await session.execute("address_name", input)).ok).toBe(true); diff --git a/tests/composition/analysis-sessions/binarySession.06-returns-typed-unavailability-without-dispatching.test.ts b/tests/composition/analysis-sessions/binarySession.06-returns-typed-unavailability-without-dispatching.test.ts index 45a6641534..0534ccd25c 100644 --- a/tests/composition/analysis-sessions/binarySession.06-returns-typed-unavailability-without-dispatching.test.ts +++ b/tests/composition/analysis-sessions/binarySession.06-returns-typed-unavailability-without-dispatching.test.ts @@ -1,6 +1,6 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -8,18 +8,11 @@ import type { AnalysisClient, AnalysisProvider, } from "../../../src/application/AnalysisProvider.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { HopperStartError } from "../../../src/domain/errors.js"; import { err } from "../../../src/domain/result.js"; import { observed as ok } from "../../fixtures/analysisExecution.js"; -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const client = (fail = false): AnalysisClient => ({ execute: () => Promise.resolve(fail ? err(new HopperStartError()) : ok(null)), close: () => Promise.resolve(), @@ -46,7 +39,7 @@ class TestClient implements AnalysisClient { } const targets = async (): Promise => { - directory ??= await createTestTempDirectory("bb-session-"); + const directory = await createTestTempDirectory("bb-session-"); const first = join(directory, "first.hop"); const second = join(directory, "second.hop"); await writeFile(first, "one"); @@ -95,7 +88,7 @@ describe("binary session", () => { close: () => Promise.resolve(), }), }; - const session = composeBinarySessionFromFactory(provider); + const session = createTestBinarySession(provider); expect((await session.open(first)).ok).toBe(true); const result = await session.execute("address_name", {}); expect(result.ok).toBe(false); @@ -112,21 +105,19 @@ describe("binary session", () => { }); it("requires an open binary and closes idempotently", async () => { - const session = composeBinarySessionFromFactory(() => client()); + const session = createTestBinarySession(() => client()); expect((await session.execute("binary_overview", {})).ok).toBe(false); expect(await session.close()).toEqual({ ok: true, value: null }); }); it("keeps the active client when a switch fails", async () => { - directory = await createTestTempDirectory("bb-session-"); + const directory = await createTestTempDirectory("bb-session-"); const first = join(directory, "first.hop"); const second = join(directory, "second.hop"); await writeFile(first, "one"); await writeFile(second, "two"); let created = 0; - const session = composeBinarySessionFromFactory(() => - client(created++ === 1), - ); + const session = createTestBinarySession(() => client(created++ === 1)); expect((await session.open(first)).ok).toBe(true); expect((await session.open(second)).ok).toBe(false); expect(session.status()).toMatchObject({ @@ -142,7 +133,7 @@ describe("binary session", () => { it("serializes concurrent opens and leaves the last target active", async () => { const [first, second] = await targets(); const clients: TestClient[] = []; - const session = composeBinarySessionFromFactory(() => { + const session = createTestBinarySession(() => { const value = new TestClient(); clients.push(value); return value; diff --git a/tests/composition/analysis-sessions/binarySession.07-replaces-the-active-client-when.test.ts b/tests/composition/analysis-sessions/binarySession.07-replaces-the-active-client-when.test.ts index 4b078d47fa..8b9290b4a4 100644 --- a/tests/composition/analysis-sessions/binarySession.07-replaces-the-active-client-when.test.ts +++ b/tests/composition/analysis-sessions/binarySession.07-replaces-the-active-client-when.test.ts @@ -1,22 +1,15 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; import type { AnalysisClient } from "../../../src/application/AnalysisProvider.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { HopperStartError } from "../../../src/domain/errors.js"; import { err } from "../../../src/domain/result.js"; import { observed as ok } from "../../fixtures/analysisExecution.js"; -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - class TestClient implements AnalysisClient { closed = 0; constructor( @@ -38,7 +31,7 @@ class TestClient implements AnalysisClient { } const targets = async (): Promise => { - directory ??= await createTestTempDirectory("bb-session-"); + const directory = await createTestTempDirectory("bb-session-"); const first = join(directory, "first.hop"); const second = join(directory, "second.hop"); await writeFile(first, "one"); @@ -64,7 +57,7 @@ const deferred = (): { describe("binary session", () => { it("replaces the active client when a canonical path changes contents", async () => { - directory = await createTestTempDirectory("bb-session-"); + const directory = await createTestTempDirectory("bb-session-"); const path = join(directory, "mutable.hop"); await writeFile(path, "one"); const clients: Array<{ @@ -72,7 +65,7 @@ describe("binary session", () => { readonly calls: string[]; closed: number; }> = []; - const session = composeBinarySessionFromFactory((target) => { + const session = createTestBinarySession((target) => { const state = { targetSha256: target.sha256, calls: [] as string[], @@ -125,7 +118,7 @@ describe("binary session", () => { const [first, second] = await targets(); const active = deferred>(); const clients: TestClient[] = []; - const session = composeBinarySessionFromFactory(() => { + const session = createTestBinarySession(() => { const value = new TestClient( undefined, false, @@ -149,7 +142,7 @@ describe("binary session", () => { const [first, second] = await targets(); const health = deferred>(); let created = 0; - const session = composeBinarySessionFromFactory(() => { + const session = createTestBinarySession(() => { created += 1; return new TestClient(created === 1 ? health.promise : undefined); }); diff --git a/tests/composition/analysis-sessions/binarySession.08-cancels-legacy-profile-resolution-even.test.ts b/tests/composition/analysis-sessions/binarySession.08-cancels-legacy-profile-resolution-even.test.ts index fc9007c7ea..654b35c49c 100644 --- a/tests/composition/analysis-sessions/binarySession.08-cancels-legacy-profile-resolution-even.test.ts +++ b/tests/composition/analysis-sessions/binarySession.08-cancels-legacy-profile-resolution-even.test.ts @@ -1,6 +1,6 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -9,20 +9,13 @@ import type { AnalysisProvider, CapabilityDescriptor, } from "../../../src/application/AnalysisProvider.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { createAnalysisProfile } from "../../../src/domain/analysisProfile.js"; import { HopperStartError } from "../../../src/domain/errors.js"; import { ProviderCleanupError } from "../../../src/domain/providerCleanupError.js"; import { err, ok as resultOk } from "../../../src/domain/result.js"; import { observed as ok } from "../../fixtures/analysisExecution.js"; -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const cacheProvider = ( calls: string[], mayWriteFilesystem = false, @@ -107,7 +100,7 @@ class TestClient implements AnalysisClient { } const targets = async (): Promise => { - directory ??= await createTestTempDirectory("bb-session-"); + const directory = await createTestTempDirectory("bb-session-"); const first = join(directory, "first.hop"); const second = join(directory, "second.hop"); await writeFile(first, "one"); @@ -145,7 +138,7 @@ describe("binary session", () => { created += 1; return new TestClient(); }; - const session = composeBinarySessionFromFactory(provider); + const session = createTestBinarySession(provider); const controller = new AbortController(); const opening = session.open(first, { signal: controller.signal }); while (observedSignal === undefined) @@ -164,7 +157,7 @@ describe("binary session", () => { it("cancels a call while it waits for a transition", async () => { const [first] = await targets(); const health = deferred>(); - const session = composeBinarySessionFromFactory( + const session = createTestBinarySession( () => new TestClient(health.promise), ); const opening = session.open(first); @@ -187,7 +180,7 @@ describe("binary session", () => { it("closes a failed candidate and reopens the previous target", async () => { const [first, second] = await targets(); const clients: TestClient[] = []; - const session = composeBinarySessionFromFactory(() => { + const session = createTestBinarySession(() => { const value = new TestClient(undefined, clients.length === 1); clients.push(value); return value; @@ -207,7 +200,7 @@ describe("binary session", () => { const [first, second] = await targets(); let liveClients = 0; let overlapped = false; - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => { if (liveClients > 0) overlapped = true; liveClients += 1; @@ -231,7 +224,7 @@ describe("binary session", () => { ["fixture-document"], { reason: "shutdown acknowledgement missing" }, ); - const session = composeBinarySessionFromFactory(() => ({ + const session = createTestBinarySession(() => ({ execute: () => Promise.resolve(ok(null)), closeWithOutcome: () => Promise.resolve(err(cleanupError)), close: () => Promise.resolve(), diff --git a/tests/composition/analysis-sessions/binarySession.09-does-not-start-a-replacement.test.ts b/tests/composition/analysis-sessions/binarySession.09-does-not-start-a-replacement.test.ts index 8e829e2297..dd30ad6cd9 100644 --- a/tests/composition/analysis-sessions/binarySession.09-does-not-start-a-replacement.test.ts +++ b/tests/composition/analysis-sessions/binarySession.09-does-not-start-a-replacement.test.ts @@ -1,23 +1,16 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; -import { composeBinarySessionFromFactory } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { ProviderCleanupError } from "../../../src/domain/providerCleanupError.js"; import { err } from "../../../src/domain/result.js"; import { observed as ok } from "../../fixtures/analysisExecution.js"; -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - const targets = async (): Promise => { - directory ??= await createTestTempDirectory("bb-session-"); + const directory = await createTestTempDirectory("bb-session-"); const first = join(directory, "first.hop"); const second = join(directory, "second.hop"); await writeFile(first, "one"); @@ -34,7 +27,7 @@ describe("binary session", () => { { reason: "shutdown acknowledgement missing" }, ); let created = 0; - const session = composeBinarySessionFromFactory(() => { + const session = createTestBinarySession(() => { created += 1; return { execute: () => Promise.resolve(ok(null)), diff --git a/tests/composition/analysis-sessions/compositeProvider.test.ts b/tests/composition/analysis-sessions/compositeProvider.test.ts index 4f79f85077..4ba2b2d7ab 100644 --- a/tests/composition/analysis-sessions/compositeProvider.test.ts +++ b/tests/composition/analysis-sessions/compositeProvider.test.ts @@ -2,7 +2,7 @@ import { writeFile } from "node:fs/promises"; import { join } from "node:path"; import { describe, expect, it } from "vitest"; -import { composeBinarySessionFromProvider } from "../../../src/application/BinarySessionComposition.js"; +import { createTestBinarySession } from "../../fixtures/binarySession.js"; import { CompositeProvider } from "../../../src/application/CompositeProvider.js"; import type { AnalysisOperation, @@ -70,7 +70,7 @@ describe("composite analysis provider", () => { it("publishes exact operation provenance and rejects ambiguous routes", () => { const hopper = provider("hopper", "address_name", []); const native = provider("native", "analyze_function", []); - const session = composeBinarySessionFromProvider( + const session = createTestBinarySession( new CompositeProvider([hopper, native]), ); expect(session.providerIdentity("address_name").id).toBe("hopper"); @@ -92,7 +92,7 @@ describe("composite analysis provider", () => { await writeFile(targetPath, "fixture"); const first = dynamicProvider("first", "address_name", 100); const second = dynamicProvider("second", "analyze_function", 200); - const session = composeBinarySessionFromProvider( + const session = createTestBinarySession( new CompositeProvider([second, first]), ); diff --git a/tests/composition/analysis-sessions/crossVersionInventory.test.ts b/tests/composition/analysis-sessions/crossVersionInventory.test.ts index 99754f4b89..ff59ebff45 100644 --- a/tests/composition/analysis-sessions/crossVersionInventory.test.ts +++ b/tests/composition/analysis-sessions/crossVersionInventory.test.ts @@ -1,4 +1,4 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; import { describe, expect, it } from "vitest"; @@ -37,47 +37,43 @@ const deferred = () => { describe("cross-version inventory", () => { it("starts both scans together and preserves left/right result order", async () => { const root = await createTestTempDirectory("rea-version-inventory-"); - try { - const artifact = join(root, "artifact.js"); - await writeFile(artifact, "export const value = 1;\n"); - const snapshot = await scanArtifactInventory(artifact, LIMITS); - const left = deferred(); - const right = deferred(); - const calls: string[] = []; - const controller = new AbortController(); - const scanner: VersionInventoryScanner = (...arguments_) => { - const [path, roots, limits, options] = arguments_; - if (options === undefined) throw new Error("Expected scanner options"); - calls.push(path); - expect(roots).toEqual([root]); - expect(limits).toBe(LIMITS); - expect(options.signal).toBe(controller.signal); - expect(options.integrity).toBe(INTEGRITY); - return path === "left" ? left.promise : right.promise; - }; + const artifact = join(root, "artifact.js"); + await writeFile(artifact, "export const value = 1;\n"); + const snapshot = await scanArtifactInventory(artifact, LIMITS); + const left = deferred(); + const right = deferred(); + const calls: string[] = []; + const controller = new AbortController(); + const scanner: VersionInventoryScanner = (...arguments_) => { + const [path, roots, limits, options] = arguments_; + if (options === undefined) throw new Error("Expected scanner options"); + calls.push(path); + expect(roots).toEqual([root]); + expect(limits).toBe(LIMITS); + expect(options.signal).toBe(controller.signal); + expect(options.integrity).toBe(INTEGRITY); + return path === "left" ? left.promise : right.promise; + }; - const result = scanVersionInventories( - { - leftPath: "left", - rightPath: "right", - inputRoots: [root], - limits: LIMITS, - signal: controller.signal, - integrity: INTEGRITY, - }, - scanner, - ); + const result = scanVersionInventories( + { + leftPath: "left", + rightPath: "right", + inputRoots: [root], + limits: LIMITS, + signal: controller.signal, + integrity: INTEGRITY, + }, + scanner, + ); - expect(calls).toEqual(["left", "right"]); - right.resolve(snapshot); - left.resolve(snapshot); - await expect(result).resolves.toEqual({ - left: snapshot, - right: snapshot, - }); - } finally { - await rm(root, { recursive: true, force: true }); - } + expect(calls).toEqual(["left", "right"]); + right.resolve(snapshot); + left.resolve(snapshot); + await expect(result).resolves.toEqual({ + left: snapshot, + right: snapshot, + }); }); it("rejects promptly when either parallel scan fails", async () => { diff --git a/tests/composition/analysis-sessions/errors.test.ts b/tests/composition/analysis-sessions/errors.test.ts index e15694f145..3ad152b879 100644 --- a/tests/composition/analysis-sessions/errors.test.ts +++ b/tests/composition/analysis-sessions/errors.test.ts @@ -168,8 +168,8 @@ describe("analysis error projection: typed failures", () => { cause: secretCause, }, ), - PermissionRequiredError: new PermissionRequiredError( - { + PermissionRequiredError: new PermissionRequiredError({ + requested: { capability: "evidence_read", roots: ["/workspace/evidence.json"], executables: [], @@ -178,11 +178,10 @@ describe("analysis error projection: typed failures", () => { mount: false, operation_identity: "read:evidence", }, - { environment_names: ["TOKEN_NAME"] }, - null, - false, - true, - ), + missing: { environment_names: ["TOKEN_NAME"] }, + ceiling: null, + remediation: "restart", + }), ReplayPlanStaleError: new ReplayPlanStaleError( "a".repeat(64), "b".repeat(64), @@ -250,6 +249,53 @@ describe("analysis error projection: typed failures", () => { }); describe("analysis error projection: remediation", () => { + it.each([ + [ + "configure", + false, + false, + "Add the exact missing scope beneath the administrator ceiling, then retry.", + ], + [ + "elicit", + false, + true, + "Approve the exact missing scope, then retry the operation.", + ], + [ + "restart", + true, + false, + "Add the exact missing scope to the administrator configuration, then restart the registered MCP server or client.", + ], + ] as const)( + "projects %s permission remediation into the stable protocol fields", + (remediation, restartRequired, elicitationSupported, action) => { + const projected = projectAnalysisError( + new PermissionRequiredError({ + requested: { + capability: "evidence_read", + roots: ["/workspace/evidence.json"], + executables: [], + environment_names: [], + network: "none", + mount: false, + operation_identity: "read:evidence", + }, + missing: { roots: ["/workspace/evidence.json"] }, + ceiling: null, + remediation, + }), + ); + + expect(projected.remediation).toEqual({ + action, + restart_required: restartRequired, + elicitation_supported: elicitationSupported, + }); + }, + ); + it("gives missing residual unknowns a lookup-specific remediation", () => { expect( projectAnalysisError(new UnknownRegistryError("not-found")), diff --git a/tests/composition/analysis-sessions/identity.test.ts b/tests/composition/analysis-sessions/identity.test.ts deleted file mode 100644 index 7d07a6eb75..0000000000 --- a/tests/composition/analysis-sessions/identity.test.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { readFile } from "node:fs/promises"; -import { fileURLToPath } from "node:url"; -import { describe, expect, it } from "vitest"; -import { z } from "zod"; - -import { PRODUCT_IDENTITY } from "../../../src/identity.js"; - -describe("package identity", () => { - it("keeps the manifest, executable, and pinned MCP command aligned", async () => { - const packageJson = z - .object({ - name: z.string(), - bin: z.record(z.string(), z.string()), - scripts: z.object({ - start: z.string(), - "metadata:check": z.string(), - prebuild: z.string(), - "precheck:fast": z.string(), - "check:fast": z.string(), - prepare: z.string(), - prepack: z.string(), - }), - }) - .parse( - JSON.parse( - await readFile( - fileURLToPath(new URL("../../../package.json", import.meta.url)), - "utf8", - ), - ), - ); - expect(packageJson.name).toBe(PRODUCT_IDENTITY.packageName); - expect(packageJson.bin).toEqual({ - [PRODUCT_IDENTITY.cliBinary]: "scripts/rea.mjs", - [PRODUCT_IDENTITY.packageName]: "scripts/rea.mjs", - }); - expect(PRODUCT_IDENTITY.packageSpecifier).toBe( - `${packageJson.name}@latest`, - ); - expect(PRODUCT_IDENTITY.registrationPackageSpecifier).toBe( - `${packageJson.name}@${PRODUCT_IDENTITY.packageVersion}`, - ); - expect(PRODUCT_IDENTITY.mcpCommand).toBe( - `npx -y ${packageJson.name}@${PRODUCT_IDENTITY.packageVersion} mcp`, - ); - expect(packageJson.scripts.start).toBe("node scripts/rea.mjs mcp"); - expect(packageJson.scripts["metadata:check"]).toBe( - "node scripts/generate-package-metadata.mjs --check", - ); - expect(packageJson.scripts.prebuild).toBe( - "npm run deps:check && npm run metadata:check && node scripts/clean-build-output.mjs", - ); - expect(packageJson.scripts["precheck:fast"]).toBe("npm run deps:check"); - expect(packageJson.scripts["check:fast"]).toBe("turbo run typecheck lint"); - expect(packageJson.scripts.prepare).toBe("node scripts/prepare.mjs"); - expect(packageJson.scripts.prepack).toBe("node scripts/prepack.mjs"); - }); -}); diff --git a/tests/composition/analysis-sessions/providerArchitecture.test.ts b/tests/composition/analysis-sessions/providerArchitecture.test.ts deleted file mode 100644 index a6957e3bc4..0000000000 --- a/tests/composition/analysis-sessions/providerArchitecture.test.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { readdir, readFile } from "node:fs/promises"; -import { join, relative } from "node:path"; -import { fileURLToPath } from "node:url"; - -import { describe, expect, it } from "vitest"; - -import { parseConfig } from "../../../src/config.js"; -import { HopperProvider } from "../../../src/hopper/HopperProvider.js"; -import { GhidraProvider } from "../../../src/ghidra/GhidraProvider.js"; -import { GHIDRA_INVENTORY_OPERATIONS } from "../../../src/ghidra/GhidraInventoryValues.js"; -import { GHIDRA_FUNCTION_OPERATIONS } from "../../../src/ghidra/GhidraFunctionValues.js"; -import { silentLogger } from "../../../src/logger.js"; - -const sourceRoot = new URL("../../../src/", import.meta.url); - -describe("provider-neutral architecture", () => { - it("keeps deep-provider imports behind adapters and the composition root", async () => { - const forbiddenRoots = ["domain", "contracts", "server", "application"]; - const inspected = await Promise.all( - forbiddenRoots.map(async (root) => { - const files = await typescriptFiles( - fileURLToPath(new URL(`${root}/`, sourceRoot)), - ); - return Promise.all( - files.map(async (file) => { - if (root === "application" && file.endsWith("/runtime.ts")) - return undefined; - const source = await readFile(file, "utf8"); - return /from\s+["'][^"']*\/(?:hopper|ghidra)\//u.test(source) - ? relative(fileURLToPath(sourceRoot), file) - : undefined; - }), - ); - }), - ); - const violations = inspected - .flat() - .filter((violation) => violation !== undefined); - expect(violations).toEqual([]); - }); - - it("publishes only admitted immutable Ghidra read-only capabilities", () => { - const config = parseConfig({}); - expect(config.ok).toBe(true); - if (!config.ok) return; - const provider = new GhidraProvider(config.value, silentLogger, { - readText: () => undefined, - executable: () => false, - probeJava: () => undefined, - }); - const capabilities = provider.capabilities(); - expect(capabilities.map(({ operation }) => operation).sort()).toEqual( - [...GHIDRA_INVENTORY_OPERATIONS, ...GHIDRA_FUNCTION_OPERATIONS].sort(), - ); - expect(Object.isFrozen(capabilities)).toBe(true); - for (const descriptor of capabilities) { - expect(descriptor).toMatchObject({ - available: true, - reason: null, - effects: { - mutatesArtifact: false, - mayShowUi: false, - mayAccessNetwork: false, - changesPermissions: false, - requiresRoot: false, - }, - }); - expect(Object.isFrozen(descriptor)).toBe(true); - expect(Object.isFrozen(descriptor.effects)).toBe(true); - expect(Object.isFrozen(descriptor.limits)).toBe(true); - expect(Object.isFrozen(descriptor.limitations)).toBe(true); - } - }); - - it("publishes deterministic immutable Hopper capability descriptors", () => { - const config = parseConfig({}); - expect(config.ok).toBe(true); - if (!config.ok) return; - const provider = new HopperProvider(config.value, silentLogger); - const capabilities = provider.capabilities(); - expect(capabilities).toHaveLength(37); - expect(new Set(capabilities.map(({ operation }) => operation)).size).toBe( - capabilities.length, - ); - expect(Object.isFrozen(capabilities)).toBe(true); - for (const descriptor of capabilities) { - expect(descriptor.provider).toEqual(provider.identity()); - expect(descriptor).toMatchObject({ - inputContractVersion: 1, - outputContractVersion: 1, - available: true, - reason: null, - }); - expect(Object.isFrozen(descriptor)).toBe(true); - expect(Object.isFrozen(descriptor.effects)).toBe(true); - expect(Object.isFrozen(descriptor.limits)).toBe(true); - expect(Object.isFrozen(descriptor.limitations)).toBe(true); - } - expect( - capabilities.find(({ operation }) => operation === "list_procedures"), - ).toMatchObject({ pagination: "offset" }); - expect( - capabilities.find(({ operation }) => operation === "set_comment"), - ).toMatchObject({ - effects: { mutatesArtifact: true, mayWriteFilesystem: true }, - }); - }); -}); - -const typescriptFiles = async ( - directory: string, -): Promise => { - const entries = await readdir(directory, { withFileTypes: true }); - const nested = await Promise.all( - entries.map(async (entry) => { - const path = join(directory, entry.name); - if (entry.isDirectory()) return typescriptFiles(path); - return entry.isFile() && entry.name.endsWith(".ts") ? [path] : []; - }), - ); - return nested.flat(); -}; diff --git a/tests/composition/analysis-sessions/providerBinding.test.ts b/tests/composition/analysis-sessions/providerBinding.test.ts index e241fd3892..b7c1b673bd 100644 --- a/tests/composition/analysis-sessions/providerBinding.test.ts +++ b/tests/composition/analysis-sessions/providerBinding.test.ts @@ -1,7 +1,7 @@ -import { rm, writeFile } from "node:fs/promises"; +import { writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, describe, expect, it } from "vitest"; +import { describe, expect, it } from "vitest"; import { z } from "zod"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -25,13 +25,6 @@ import { } from "../../../src/domain/errors.js"; import { err, ok } from "../../../src/domain/result.js"; -let directory: string | undefined; -afterEach(async () => { - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; -}); - describe("target-bound provider routing", () => { it("rejects provider identity and operation-family collisions at composition", () => { const alpha = deepProvider("alpha"); @@ -322,7 +315,7 @@ const capability = ( }); const databaseTarget = async (): Promise => { - directory = await createTestTempDirectory("rea-provider-binding-"); + const directory = await createTestTempDirectory("rea-provider-binding-"); const path = join(directory, "fixture.hop"); await writeFile(path, "fixture"); return path; diff --git a/tests/composition/evidence-investigations/evidence.test.ts b/tests/composition/evidence-investigations/evidence.test.ts deleted file mode 100644 index a75106bbf1..0000000000 --- a/tests/composition/evidence-investigations/evidence.test.ts +++ /dev/null @@ -1,393 +0,0 @@ -import { fc, it } from "@fast-check/vitest"; -import { describe, expect } from "vitest"; - -import { EvidenceLedger } from "../../../src/application/EvidenceLedger.js"; -import type { BinaryTarget } from "../../../src/domain/binaryTarget.js"; -import { - createEvidence, - evidenceSchema, - parseEvidence, -} from "../../../src/domain/evidence.js"; -import { createEvidenceBundle } from "../../../src/domain/evidenceBundle.js"; -import { recordUnknownInputSchema } from "../../../src/domain/residualUnknown.js"; -import { createAnalysisProfile } from "../../../src/domain/analysisProfile.js"; - -const TARGET: BinaryTarget = { - path: "/tmp/fixture", - sha256: "a".repeat(64), - kind: "executable", - format: "mach-o", - architecture: "arm64", - availableArchitectures: ["arm64"], -}; -const PROVIDER = { id: "fixture", name: "Fixture provider", version: "1" }; -const PROFILE = createAnalysisProfile(PROVIDER, 1, { loader: "default" }); - -describe("analysis evidence", () => { - it("keeps the public object schema extensible for typed consumers", () => { - expect(evidenceSchema.shape.analysis_profile).toBeDefined(); - expect(evidenceSchema.shape.provider).toBeDefined(); - }); - - it("derives identity after normalizing prototype-named parameter keys", () => { - const evidence = createEvidence(TARGET, PROVIDER, { - operation: "health", - parameters: Object.fromEntries([["__proto__", false]]), - result: true, - }); - expect(parseEvidence(evidence)).toEqual(evidence); - }); - - it.prop([ - fc.dictionary( - fc.string({ minLength: 1, maxLength: 12 }), - fc.oneof(fc.string(), fc.integer(), fc.boolean(), fc.constant(null)), - ), - ])("canonicalizes parameter key order", (parameters) => { - const reversed = Object.fromEntries(Object.entries(parameters).reverse()); - const first = createEvidence(TARGET, PROVIDER, { - operation: "health", - parameters, - result: true, - }); - const second = createEvidence(TARGET, PROVIDER, { - operation: "health", - parameters: reversed, - result: true, - }); - expect(second.evidence_id).toBe(first.evidence_id); - }); - - it.prop([fc.string({ minLength: 1 }), fc.string({ minLength: 1 })])( - "keeps identity path-independent and provider-sensitive", - (firstPath, secondPath) => { - const first = createEvidence( - { ...TARGET, path: `/first/${firstPath}/artifact` }, - PROVIDER, - { operation: "health", parameters: {}, result: true }, - ); - const moved = createEvidence( - { ...TARGET, path: `/second/${secondPath}/artifact` }, - PROVIDER, - { operation: "health", parameters: {}, result: true }, - ); - const changedProvider = createEvidence( - { ...TARGET, path: `/second/${secondPath}/artifact` }, - { ...PROVIDER, id: `${PROVIDER.id}-other` }, - { operation: "health", parameters: {}, result: true }, - ); - expect(moved.evidence_id).toBe(first.evidence_id); - expect(changedProvider.evidence_id).not.toBe(first.evidence_id); - }, - ); - - it("creates provider-neutral, deterministic Evidence v2", () => { - const observation = { - operation: "procedure_info", - parameters: { document: null, procedure: "0x1000" }, - result: { name: "main" }, - rawResult: { token: "" }, - } as const; - const evidence = createEvidence(TARGET, PROVIDER, observation); - expect(evidenceSchema.parse(evidence)).toEqual(evidence); - expect(parseEvidence(evidence)).toEqual(evidence); - expect(evidence).toMatchObject({ - schema_version: 2, - provider: PROVIDER, - subject: { digest: { sha256: "a".repeat(64) } }, - confidence: "observed", - authority: "shipped-artifact", - raw_result: { token: "" }, - normalized_result: { name: "main" }, - }); - expect(evidence.evidence_id).toMatch(/^ev_[a-f0-9]{64}$/u); - expect(createEvidence(TARGET, PROVIDER, observation)).toEqual(evidence); - }); -}); - -describe("analysis evidence validation", () => { - it("preserves legacy IDs while committing profiles on new observations", () => { - const legacy = createEvidence(TARGET, PROVIDER, { - operation: "procedure_info", - parameters: { procedure: "main" }, - result: { name: "main" }, - }); - expect("analysis_profile" in legacy).toBe(false); - expect(parseEvidence(legacy)).toEqual(legacy); - - const profiled = createEvidence(TARGET, PROVIDER, { - operation: "procedure_info", - parameters: { procedure: "main" }, - result: { name: "main" }, - analysisProfile: PROFILE, - }); - expect(profiled).toMatchObject({ analysis_profile: PROFILE }); - expect(profiled.evidence_id).not.toBe(legacy.evidence_id); - expect(() => - createEvidence( - TARGET, - { ...PROVIDER, id: "other" }, - { - operation: "procedure_info", - parameters: {}, - result: null, - analysisProfile: PROFILE, - }, - ), - ).toThrow(/profile provider/u); - }); - - it("excludes local paths but includes redacted raw results in identity", () => { - const observation = { - operation: "health", - parameters: {}, - result: true, - rawResult: { pid: 100 }, - } as const; - const first = createEvidence(TARGET, PROVIDER, observation); - const moved = createEvidence( - { ...TARGET, path: "/other/renamed-fixture" }, - PROVIDER, - observation, - ); - expect(moved.evidence_id).toBe(first.evidence_id); - const changedRaw = createEvidence(TARGET, PROVIDER, { - ...observation, - rawResult: { pid: 200 }, - }); - expect(changedRaw.evidence_id).not.toBe(first.evidence_id); - }); - - it("rejects semantic tampering", () => { - const evidence = createEvidence(TARGET, PROVIDER, { - operation: "health", - parameters: {}, - result: true, - }); - expect(() => - parseEvidence({ ...evidence, normalized_result: false }), - ).toThrow("semantic identifier"); - }); - - it("rejects Evidence v1 with actionable upgrade guidance", () => { - expect(() => parseEvidence({ schema_version: 1 })).toThrow( - "Evidence v1 is not accepted. Produce Evidence v2.", - ); - }); -}); - -describe("evidence ledger recording", () => { - it("deduplicates and atomically imports bounded bundles", () => { - const evidence = createEvidence(TARGET, PROVIDER, { - operation: "health", - parameters: {}, - result: true, - }); - const ledger = new EvidenceLedger({ maxRecords: 1, maxBytes: 1_000_000 }); - expect(ledger.record(evidence)).toEqual({ ok: true, value: "added" }); - expect(ledger.record(evidence)).toEqual({ ok: true, value: "duplicate" }); - const relocated = createEvidence( - { ...TARGET, path: "/relocated/different-name" }, - PROVIDER, - { operation: "health", parameters: {}, result: true }, - ); - expect(relocated.evidence_id).toBe(evidence.evidence_id); - expect(ledger.record(relocated)).toEqual({ - ok: true, - value: "duplicate", - }); - expect(ledger.import(createEvidenceBundle([evidence]))).toEqual({ - ok: true, - value: { recordsAdded: 0, unknownsAdded: 0, changed: false }, - }); - expect(ledger.export().records).toEqual([evidence]); - ledger.clear(); - expect(ledger.export().records).toEqual([]); - }); - - it("treats canonical JSON key order as semantically irrelevant", () => { - const evidence = createEvidence(TARGET, PROVIDER, { - operation: "health", - parameters: { alpha: 1, beta: 2 }, - result: { alpha: 1, beta: 2 }, - }); - const reordered = evidenceSchema.parse({ - ...evidence, - parameters: { beta: 2, alpha: 1 }, - normalized_result: { beta: 2, alpha: 1 }, - }); - const ledger = new EvidenceLedger({ maxRecords: 1, maxBytes: 1_000_000 }); - expect(ledger.record(evidence)).toEqual({ ok: true, value: "added" }); - expect(ledger.record(reordered)).toEqual({ - ok: true, - value: "duplicate", - }); - }); - - it("returns typed record and byte limit failures without eviction", () => { - const first = createEvidence(TARGET, PROVIDER, { - operation: "health", - parameters: {}, - result: true, - }); - const second = createEvidence(TARGET, PROVIDER, { - operation: "health", - parameters: { changed: true }, - result: true, - }); - const recordBound = new EvidenceLedger({ - maxRecords: 1, - maxBytes: 1_000_000, - }); - expect(recordBound.record(first).ok).toBe(true); - expect(recordBound.record(second)).toMatchObject({ - ok: false, - error: { _tag: "EvidenceLimitError", limit: "records", maximum: 1 }, - }); - expect(recordBound.export().records).toEqual([first]); - - const byteBound = new EvidenceLedger({ maxRecords: 10, maxBytes: 1 }); - expect(byteBound.record(first)).toMatchObject({ - ok: false, - error: { _tag: "EvidenceLimitError", limit: "bytes", maximum: 1 }, - }); - expect(byteBound.export().records).toEqual([]); - }); - - it("counts unknown revisions when enforcing direct record limits", () => { - const ledger = new EvidenceLedger({ - maxRecords: 2, - maxBytes: 1_000_000, - }); - const mutation = createEvidence(undefined, PROVIDER, { - predicateType: "rea.residual-unknown-mutation/v1", - operation: "record_unknown", - parameters: {}, - result: { action: "record" }, - }); - const unknown = recordUnknownInputSchema.parse({ - approved: true, - question: "What remains unresolved?", - severity: "high", - domain: "record-limit-test", - supporting_evidence_ids: [], - contradicting_evidence_ids: [], - required_authority: "shipped-artifact", - required_confidence: "observed", - required_environment: null, - recommended_probes: [], - relationships: [], - }); - expect(ledger.recordUnknown(unknown, mutation).ok).toBe(true); - - const direct = createEvidence(TARGET, PROVIDER, { - operation: "health", - parameters: {}, - result: true, - }); - expect(ledger.record(direct)).toMatchObject({ - ok: false, - error: { _tag: "EvidenceLimitError", limit: "records", maximum: 2 }, - }); - expect(ledger.export()).toMatchObject({ - records: [mutation], - unknowns: [expect.objectContaining({ domain: "record-limit-test" })], - }); - }); -}); - -describe("evidence bundle imports", () => { - it("derives byte-stable manifests independent of record insertion order", () => { - const artifactEvidence = createEvidence(TARGET, PROVIDER, { - operation: "health", - parameters: {}, - result: true, - }); - const captureEvidence = createEvidence( - undefined, - { - id: "process", - name: "Process capture", - version: "1", - }, - { - predicateType: "rea.process-capture/v1", - operation: "capture_process_scenario", - parameters: {}, - result: { exit: 0 }, - authority: "controlled-replay", - environment: { - id: "linux-x64", - platform: "linux", - architecture: "x64", - isolation: "process", - }, - }, - ); - const forward = createEvidenceBundle([artifactEvidence, captureEvidence]); - const reverse = createEvidenceBundle([captureEvidence, artifactEvidence]); - expect(JSON.stringify(reverse)).toBe(JSON.stringify(forward)); - expect(forward).toMatchObject({ - artifacts: [{ digest: { sha256: TARGET.sha256 }, format: "mach-o" }], - providers: [{ id: "fixture" }, { id: "process" }], - environments: [{ id: "linux-x64" }], - scenarios: [{ evidence_id: captureEvidence.evidence_id }], - captures: [{ evidence_id: captureEvidence.evidence_id }], - }); - }); - - it("rejects conflicting duplicate IDs without mutating the ledger", () => { - const ledger = new EvidenceLedger({ maxRecords: 2, maxBytes: 1_000_000 }); - const first = createEvidence(TARGET, PROVIDER, { - operation: "health", - parameters: {}, - result: true, - rawResult: { pid: 1 }, - }); - expect(ledger.record(first).ok).toBe(true); - const bundle = createEvidenceBundle([first]); - expect( - ledger.import({ - ...bundle, - records: [{ ...first, normalized_result: false }], - }), - ).toMatchObject({ - ok: false, - error: { _tag: "EvidenceIntegrityError" }, - }); - expect(ledger.export().records).toEqual([first]); - }); - - it("atomically rejects Evidence plus unknown when the batch exceeds limits", () => { - const ledger = new EvidenceLedger({ maxRecords: 2, maxBytes: 1_000_000 }); - const output = createEvidence(undefined, PROVIDER, { - operation: "derived", - parameters: {}, - result: { status: "unknown" }, - }); - const mutation = createEvidence(undefined, PROVIDER, { - predicateType: "rea.residual-unknown-mutation/v1", - operation: "record_unknown", - parameters: {}, - result: { action: "record" }, - }); - const unknown = recordUnknownInputSchema.parse({ - approved: true, - question: "What remains unresolved?", - severity: "high", - domain: "atomic-test", - supporting_evidence_ids: [], - contradicting_evidence_ids: [], - required_authority: "shipped-artifact", - required_confidence: "observed", - required_environment: null, - recommended_probes: [], - relationships: [], - }); - expect(ledger.recordWithUnknown(output, unknown, mutation)).toMatchObject({ - ok: false, - error: { _tag: "EvidenceLimitError" }, - }); - expect(ledger.export()).toMatchObject({ records: [], unknowns: [] }); - }); -}); diff --git a/tests/composition/evidence-investigations/reconstructionCoverage.test.ts b/tests/composition/evidence-investigations/reconstructionCoverage.test.ts deleted file mode 100644 index 42522696f0..0000000000 --- a/tests/composition/evidence-investigations/reconstructionCoverage.test.ts +++ /dev/null @@ -1,482 +0,0 @@ -import { rm } from "node:fs/promises"; -import { join } from "node:path"; - -import { describe, expect, it } from "vitest"; - -import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; - -import { - readReconstructionCoverageWorkspace, - writeReconstructionCoverageWorkspace, -} from "../../../src/application/ReconstructionCoverageWorkspaceStore.js"; -import { - commitReconstructionCoverage, - queryReconstructionCoverage, -} from "../../../src/application/ReconstructionCoverageService.js"; -import type { EvidenceFilePolicy } from "../../../src/domain/evidenceBundle.js"; -import { - createReconstructionCoverageWorkspace, - createReconstructionVerifierContract, - evaluateReconstructionClosure, - parseReconstructionCoverageWorkspace, -} from "../../../src/domain/reconstructionCoverage.js"; -import { createEvidence } from "../../../src/domain/evidence.js"; -import { createEvidenceBundle } from "../../../src/domain/evidenceBundle.js"; - -const digest = (character: string): string => character.repeat(64); -const evidenceRecords = ["1", "2", "3", "4", "5"].map((character) => - createEvidence( - undefined, - { id: "fixture", name: "Fixture", version: "1" }, - { - predicateType: "rea.coverage-fixture/v1", - operation: `fixture-${character}`, - parameters: {}, - result: { character }, - }, - ), -); -const evidence = (character: string): string => { - const record = evidenceRecords.find( - ({ operation }) => operation === `fixture-${character}`, - ); - if (record === undefined) throw new Error("Missing fixture Evidence"); - return record.evidence_id; -}; -const now = Date.parse("2026-07-16T12:00:00.000Z"); - -const completeWorkspace = () => { - const contract = createReconstructionVerifierContract({ - verifier_id: "verify.cli.help", - claim_ids: ["claim.cli.help"], - dimensions: ["output", "exit"], - authority: "controlled-replay", - max_age_ms: 86_400_000, - minimum_repeats: 2, - normalization_sha256: digest("4"), - normalization_removes_dimensions: false, - }); - return createReconstructionCoverageWorkspace({ - name: "fixture", - revision: 1, - previous_revision_sha256: null, - evidence_bundle: createEvidenceBundle(evidenceRecords), - artifacts: [ - { - artifact_id: "authority.v1", - artifact_sha256: digest("1"), - version: "1.0.0", - environment_sha256: digest("2"), - evidence_ids: [evidence("1")], - }, - ], - surfaces: [ - { - surface_id: "cli.help", - family: "cli-command", - artifact_id: "authority.v1", - occurrence_id: "occ-help", - location: "bin/app --help", - authority: "observed", - dependency_surface_ids: [], - evidence_ids: [evidence("2")], - }, - ], - owners: [ - { - surface_id: "cli.help", - ownership: { - disposition: "implemented", - owner_path: "src/cli.ts", - owner_export: "registerHelp", - owner_sha256: digest("3"), - path_state: "present", - package_state: "distributed", - authority_route: "none", - }, - }, - ], - claims: [ - { - claim_id: "claim.cli.help", - title: "Help output and exit behavior match", - kind: "behavioral", - surface_ids: ["cli.help"], - required_dimensions: ["output", "exit"], - required_authority: "controlled-replay", - }, - ], - verifier_contracts: [contract], - verifier_results: [ - { - verifier_id: contract.verifier_id, - contract_sha256: contract.contract_sha256, - observed_at: "2026-07-16T11:00:00.000Z", - status: "pass", - covered_claim_ids: ["claim.cli.help"], - covered_dimensions: ["output", "exit"], - artifact_sha256s: [digest("1")], - owner_sha256s: [digest("3")], - normalization_sha256: digest("4"), - repeats: 2, - evidence_ids: [evidence("3")], - }, - ], - residual_unknown_ids: [], - contradictions: [], - package_proofs: [ - { - proof_id: "proof.clean-install", - kind: "clean-install", - status: "pass", - artifact_sha256s: [digest("1")], - evidence_ids: [evidence("4")], - }, - { - proof_id: "proof.authority-independence", - kind: "authority-independence", - status: "pass", - artifact_sha256s: [digest("1")], - evidence_ids: [evidence("5")], - }, - ], - boundaries: [ - { - boundary_id: "replacement.cli", - title: "CLI replacement", - required_surface_ids: ["cli.help"], - required_claim_ids: ["claim.cli.help"], - required_package_proof_kinds: [ - "clean-install", - "authority-independence", - ], - allowed_dispositions: [], - allowed_unknown_ids: [], - }, - ], - }); -}; - -describe("reconstruction coverage closure", () => { - it("returns ready only when ownership, verification, package, and authority closure pass", () => { - const workspace = completeWorkspace(); - - expect( - evaluateReconstructionClosure(workspace, "replacement.cli", now), - ).toMatchObject({ - status: "ready", - summary: { required_surfaces: 1, required_claims: 1, reasons: 0 }, - evidence_ids: [ - evidence("2"), - evidence("3"), - evidence("4"), - evidence("5"), - ].sort(), - }); - expect(parseReconstructionCoverageWorkspace(workspace)).toEqual(workspace); - }); - - it("keeps an incomplete inventory partial despite every registered verifier passing", () => { - const workspace = completeWorkspace(); - const { - revision_sha256: _revisionSha256, - workspace_id: _workspaceId, - schema_version: _schemaVersion, - ...semantic - } = workspace; - const boundary = workspace.boundaries[0]; - if (boundary === undefined) throw new Error("Expected fixture boundary"); - const incomplete = createReconstructionCoverageWorkspace({ - ...semantic, - revision: 2, - previous_revision_sha256: workspace.revision_sha256, - boundaries: [ - { - ...boundary, - required_surface_ids: ["cli.help", "cli.version"], - }, - ], - }); - - expect( - evaluateReconstructionClosure(incomplete, "replacement.cli", now), - ).toMatchObject({ - status: "partial", - reasons: [ - expect.objectContaining({ - code: "surface-missing", - subject_id: "cli.version", - }), - ], - recommended_probes: [ - { - operation: "update_authoritative_inventory", - subject_id: "cli.version", - rationale: - "Required surface is absent from the authoritative inventory.", - }, - ], - }); - }); - - it("invalidates stale verifier contracts and detected authority routing", () => { - const workspace = completeWorkspace(); - const owner = workspace.owners[0]; - if (owner === undefined || owner.ownership.disposition !== "implemented") - throw new Error("Expected implemented fixture owner"); - const { - revision_sha256: _revisionSha256, - workspace_id: _workspaceId, - schema_version: _schemaVersion, - ...semantic - } = workspace; - const changed = createReconstructionCoverageWorkspace({ - ...semantic, - revision: 2, - previous_revision_sha256: workspace.revision_sha256, - owners: [ - { - ...owner, - ownership: { - ...owner.ownership, - owner_sha256: digest("9"), - path_state: "present", - package_state: "distributed", - authority_route: "detected", - }, - }, - ], - }); - - const result = evaluateReconstructionClosure( - changed, - "replacement.cli", - now, - ); - expect(result.status).toBe("failed"); - expect(result.reasons).toEqual( - expect.arrayContaining([ - expect.objectContaining({ code: "authority-routing-detected" }), - expect.objectContaining({ code: "verifier-result-incompatible" }), - ]), - ); - }); - - it("never lets mock-strength or stale results satisfy stronger current claims", () => { - const workspace = completeWorkspace(); - const { - revision_sha256: _revisionSha256, - workspace_id: _workspaceId, - schema_version: _schemaVersion, - ...semantic - } = workspace; - const stale = createReconstructionCoverageWorkspace({ - ...semantic, - revision: 2, - previous_revision_sha256: workspace.revision_sha256, - verifier_results: workspace.verifier_results.map((result) => ({ - ...result, - observed_at: "2026-07-01T00:00:00.000Z", - })), - }); - - expect( - evaluateReconstructionClosure(stale, "replacement.cli", now), - ).toMatchObject({ - status: "unknown", - reasons: [expect.objectContaining({ code: "verifier-result-stale" })], - }); - }); -}); - -describe("reconstruction coverage verifier observations", () => { - it("orders offset-bearing verifier timestamps chronologically", () => { - const workspace = completeWorkspace(); - const result = workspace.verifier_results[0]; - if (result === undefined) - throw new Error("Expected fixture verifier result"); - const { - revision_sha256: _revisionSha256, - workspace_id: _workspaceId, - schema_version: _schemaVersion, - ...semantic - } = workspace; - const changed = createReconstructionCoverageWorkspace({ - ...semantic, - revision: 2, - previous_revision_sha256: workspace.revision_sha256, - verifier_results: [ - { ...result, observed_at: "2026-07-16T08:00:00.000Z" }, - { - ...result, - observed_at: "2026-07-16T04:00:00.000-05:00", - status: "fail", - }, - ], - }); - - expect( - evaluateReconstructionClosure(changed, "replacement.cli", now), - ).toMatchObject({ - status: "failed", - reasons: [expect.objectContaining({ code: "verifier-failed" })], - }); - }); - - it("rejects verifier observations from the future", () => { - const workspace = completeWorkspace(); - const result = workspace.verifier_results[0]; - if (result === undefined) - throw new Error("Expected fixture verifier result"); - const { - revision_sha256: _revisionSha256, - workspace_id: _workspaceId, - schema_version: _schemaVersion, - ...semantic - } = workspace; - const changed = createReconstructionCoverageWorkspace({ - ...semantic, - revision: 2, - previous_revision_sha256: workspace.revision_sha256, - verifier_results: [ - { ...result, observed_at: "2026-07-17T12:00:00.000Z" }, - ], - }); - - expect( - evaluateReconstructionClosure(changed, "replacement.cli", now), - ).toMatchObject({ - status: "unknown", - reasons: [expect.objectContaining({ code: "verifier-result-stale" })], - }); - }); - - it("rejects green results and package proofs that omit current commitments", () => { - const workspace = completeWorkspace(); - const { - revision_sha256: _revisionSha256, - workspace_id: _workspaceId, - schema_version: _schemaVersion, - ...semantic - } = workspace; - const incomplete = createReconstructionCoverageWorkspace({ - ...semantic, - revision: 2, - previous_revision_sha256: workspace.revision_sha256, - verifier_results: workspace.verifier_results.map((result) => ({ - ...result, - owner_sha256s: [], - })), - package_proofs: workspace.package_proofs.map((proof) => ({ - ...proof, - artifact_sha256s: [digest("8")], - })), - }); - - const result = evaluateReconstructionClosure( - incomplete, - "replacement.cli", - now, - ); - expect(result.status).toBe("unknown"); - expect(result.reasons).toEqual( - expect.arrayContaining([ - expect.objectContaining({ code: "verifier-result-incompatible" }), - expect.objectContaining({ code: "package-proof-unknown" }), - ]), - ); - }); -}); - -describe("reconstruction coverage persistence", () => { - it("persists owner-only revisions with CAS and digest-chain enforcement", async () => { - const root = await createTestTempDirectory("rea-coverage-workspace-"); - const path = join(root, "coverage.json"); - const first = completeWorkspace(); - const filePolicy: EvidenceFilePolicy = { - roots: [root], - maxBytes: 64 * 1024 * 1024, - maxDepth: 64, - maxStringLength: 1024 * 1024, - maxNodes: 1_000_000, - }; - try { - const written = await writeReconstructionCoverageWorkspace( - first, - path, - null, - filePolicy, - ); - expect(written.ok).toBe(true); - expect( - await readReconstructionCoverageWorkspace(path, filePolicy), - ).toEqual({ ok: true, value: first }); - - const stale = await writeReconstructionCoverageWorkspace( - first, - path, - null, - filePolicy, - ); - expect(stale).toMatchObject({ - ok: false, - error: { - _tag: "InvestigationWorkspaceError", - reason: "revision-conflict", - }, - }); - } finally { - await rm(root, { recursive: true, force: true }); - } - }); - - it("shares commit and fail-closed query behavior across adapters", async () => { - const root = await createTestTempDirectory("rea-coverage-service-"); - const path = join(root, "coverage.json"); - const workspace = completeWorkspace(); - const filePolicy: EvidenceFilePolicy = { - roots: [root], - maxBytes: 64 * 1024 * 1024, - maxDepth: 64, - maxStringLength: 1024 * 1024, - maxNodes: 1_000_000, - }; - try { - const committed = await commitReconstructionCoverage( - { - approved: true, - workspace_path: path, - expected_revision: null, - workspace, - }, - filePolicy, - ); - expect(committed.ok && committed.value).toMatchObject({ - revision: 1, - revision_sha256: workspace.revision_sha256, - evidence_records: 5, - }); - const queried = await queryReconstructionCoverage( - { workspace_path: path, boundary_id: "replacement.cli" }, - filePolicy, - now, - ); - expect(queried.ok && queried.value).toMatchObject({ status: "ready" }); - - const controller = new AbortController(); - controller.abort(); - const cancelled = await queryReconstructionCoverage( - { workspace_path: path, boundary_id: "replacement.cli" }, - filePolicy, - now, - { signal: controller.signal }, - ); - expect(cancelled).toMatchObject({ - ok: false, - error: { _tag: "AnalysisCancelledError" }, - }); - } finally { - await rm(root, { recursive: true, force: true }); - } - }); -}); diff --git a/tests/composition/javascript-applications/javascriptBundlerAdapters.test.ts b/tests/composition/javascript-applications/javascriptBundlerAdapters.test.ts index 124c70f01b..e9bd194dcd 100644 --- a/tests/composition/javascript-applications/javascriptBundlerAdapters.test.ts +++ b/tests/composition/javascript-applications/javascriptBundlerAdapters.test.ts @@ -1,4 +1,4 @@ -import { mkdir, rm, writeFile } from "node:fs/promises"; +import { mkdir, writeFile } from "node:fs/promises"; import { join } from "node:path"; import { describe, expect, it } from "vitest"; @@ -15,128 +15,118 @@ import type { describe("Webpack and Rspack runtime adapters", () => { it("recovers runtime entry modules, async chunks, and factory require aliases", async () => { const root = await bundlerFixture(); - try { - const result = await reconstructJavaScriptArtifact({ input_path: root }); - const graph = result.graph; + const result = await reconstructJavaScriptArtifact({ input_path: root }); + const graph = result.graph; - const webpackEntry = chunk(graph, "webpackChunkcustomPortal", "main"); - const webpackLazy = chunk(graph, "webpackChunkcustomPortal", "lazy"); - const webpackModule = moduleNode(graph, "10"); - const rspackEntry = chunk(graph, "rspackChunkcustomPortal", "editor"); - const rspackModel = chunk(graph, "rspackChunkcustomPortal", "model"); - const rspackModule = moduleNode(graph, "src/entry.ts"); + const webpackEntry = chunk(graph, "webpackChunkcustomPortal", "main"); + const webpackLazy = chunk(graph, "webpackChunkcustomPortal", "lazy"); + const webpackModule = moduleNode(graph, "10"); + const rspackEntry = chunk(graph, "rspackChunkcustomPortal", "editor"); + const rspackModel = chunk(graph, "rspackChunkcustomPortal", "model"); + const rspackModule = moduleNode(graph, "src/entry.ts"); - expect(webpackEntry?.observations[0]?.properties).toMatchObject({ - bundler: "webpack", - runtime_require_name: "__webpack_require__", - runtime_module_cache_status: "observed", - entry_module_keys: ["10"], - async_chunk_keys: ["lazy", "missing"], - unknown_async_chunk_keys: 1, - }); - expect(webpackModule?.observations[0]?.properties).toMatchObject({ - factory_require_name: "__webpack_require__", - runtime_entry: true, - chunk_keys: ["main"], - }); - expect(rspackEntry?.observations[0]?.properties).toMatchObject({ - bundler: "rspack", - runtime_require_name: "r", - entry_module_keys: ["src/entry.ts"], - async_chunk_keys: ["model"], - }); - expect(rspackModule?.observations[0]?.properties).toMatchObject({ - factory_require_name: "r", - runtime_entry: true, - }); + expect(webpackEntry?.observations[0]?.properties).toMatchObject({ + bundler: "webpack", + runtime_require_name: "__webpack_require__", + runtime_module_cache_status: "observed", + entry_module_keys: ["10"], + async_chunk_keys: ["lazy", "missing"], + unknown_async_chunk_keys: 1, + }); + expect(webpackModule?.observations[0]?.properties).toMatchObject({ + factory_require_name: "__webpack_require__", + runtime_entry: true, + chunk_keys: ["main"], + }); + expect(rspackEntry?.observations[0]?.properties).toMatchObject({ + bundler: "rspack", + runtime_require_name: "r", + entry_module_keys: ["src/entry.ts"], + async_chunk_keys: ["model"], + }); + expect(rspackModule?.observations[0]?.properties).toMatchObject({ + factory_require_name: "r", + runtime_entry: true, + }); - expect(edge(graph, webpackEntry, webpackModule, "loads")).toMatchObject({ - properties: expect.objectContaining({ - kind: "bundler-entry-module", - resolution_status: "resolved", - }), - }); - expect(edge(graph, webpackEntry, webpackLazy, "imports")).toMatchObject({ - properties: expect.objectContaining({ - kind: "bundler-async-chunk", - resolution_status: "resolved", - }), - }); - expect(edge(graph, webpackModule, webpackLazy, "imports")).toMatchObject({ - properties: expect.objectContaining({ - kind: "dynamic-import", - specifier: "chunk:lazy", - resolved_path: "renderer/chunks/runtime.js#chunk:lazy", - }), - }); - expect(edge(graph, rspackEntry, rspackModel, "imports")).toMatchObject({ - properties: expect.objectContaining({ - kind: "bundler-async-chunk", - resolution_status: "resolved", - }), - }); - expect(edge(graph, rspackModule, rspackModel, "imports")).toMatchObject({ - properties: expect.objectContaining({ - kind: "dynamic-import", - specifier: "chunk:model", - }), - }); + expect(edge(graph, webpackEntry, webpackModule, "loads")).toMatchObject({ + properties: expect.objectContaining({ + kind: "bundler-entry-module", + resolution_status: "resolved", + }), + }); + expect(edge(graph, webpackEntry, webpackLazy, "imports")).toMatchObject({ + properties: expect.objectContaining({ + kind: "bundler-async-chunk", + resolution_status: "resolved", + }), + }); + expect(edge(graph, webpackModule, webpackLazy, "imports")).toMatchObject({ + properties: expect.objectContaining({ + kind: "dynamic-import", + specifier: "chunk:lazy", + resolved_path: "renderer/chunks/runtime.js#chunk:lazy", + }), + }); + expect(edge(graph, rspackEntry, rspackModel, "imports")).toMatchObject({ + properties: expect.objectContaining({ + kind: "bundler-async-chunk", + resolution_status: "resolved", + }), + }); + expect(edge(graph, rspackModule, rspackModel, "imports")).toMatchObject({ + properties: expect.objectContaining({ + kind: "dynamic-import", + specifier: "chunk:model", + }), + }); - expect( - graph.nodes.find((node) => - node.observations.some( - ({ properties }) => - properties.semantic_role === "bundler-chunk-reference" && - properties.chunk_key === "missing" && - properties.resolution_status === "not-found", - ), + expect( + graph.nodes.find((node) => + node.observations.some( + ({ properties }) => + properties.semantic_role === "bundler-chunk-reference" && + properties.chunk_key === "missing" && + properties.resolution_status === "not-found", ), - ).toBeDefined(); - expect( - graph.edges.some( - ({ relation, properties }) => - relation === "imports" && - properties.kind === "require" && - properties.specifier === "lazy", - ), - ).toBe(false); - } finally { - await rm(root, { recursive: true, force: true }); - } + ), + ).toBeDefined(); + expect( + graph.edges.some( + ({ relation, properties }) => + relation === "imports" && + properties.kind === "require" && + properties.specifier === "lazy", + ), + ).toBe(false); }); it("recovers esbuild wrapper modules and Vite preload dependencies", async () => { const root = await esmRuntimeFixture(); - try { - const { graph } = await reconstructJavaScriptArtifact({ - input_path: root, - }); - const commonJsModule = moduleNode(graph, "src/dep.js"); - const esmModule = moduleNode(graph, "src/core.js"); + const { graph } = await reconstructJavaScriptArtifact({ + input_path: root, + }); + const commonJsModule = moduleNode(graph, "src/dep.js"); + const esmModule = moduleNode(graph, "src/core.js"); - expect(commonJsModule?.observations[0]?.properties).toMatchObject({ - bundler: "esbuild", - runtime: "esbuild-commonjs", - module_key: "src/dep.js", - }); - expect(esmModule?.observations[0]?.properties).toMatchObject({ - bundler: "esbuild", - runtime: "esbuild-esm", - module_key: "src/core.js", - }); - expect( - graph.edges.filter( - ({ relation, properties }) => - relation === "imports" && - properties.kind === "dynamic-import" && - ["./feature.js", "./main.css"].includes( - String(properties.specifier), - ), - ), - ).toHaveLength(2); - } finally { - await rm(root, { recursive: true, force: true }); - } + expect(commonJsModule?.observations[0]?.properties).toMatchObject({ + bundler: "esbuild", + runtime: "esbuild-commonjs", + module_key: "src/dep.js", + }); + expect(esmModule?.observations[0]?.properties).toMatchObject({ + bundler: "esbuild", + runtime: "esbuild-esm", + module_key: "src/core.js", + }); + expect( + graph.edges.filter( + ({ relation, properties }) => + relation === "imports" && + properties.kind === "dynamic-import" && + ["./feature.js", "./main.css"].includes(String(properties.specifier)), + ), + ).toHaveLength(2); }); }); diff --git a/tests/composition/javascript-applications/javascriptModuleRelationships.test.ts b/tests/composition/javascript-applications/javascriptModuleRelationships.test.ts index 434d90ffed..f7f481025a 100644 --- a/tests/composition/javascript-applications/javascriptModuleRelationships.test.ts +++ b/tests/composition/javascript-applications/javascriptModuleRelationships.test.ts @@ -1,4 +1,4 @@ -import { mkdir, rm, writeFile } from "node:fs/promises"; +import { mkdir, writeFile } from "node:fs/promises"; import { join } from "node:path"; import { describe, expect, it } from "vitest"; @@ -15,173 +15,164 @@ import type { describe("CommonJS and ESM module relationships", () => { it("composes bindings, re-exports, dynamic imports, and JSON modules", async () => { const root = await moduleFixture(); - try { - const first = await reconstructJavaScriptArtifact({ input_path: root }); - const second = await reconstructJavaScriptArtifact({ input_path: root }); - const graph = first.graph; + const first = await reconstructJavaScriptArtifact({ input_path: root }); + const second = await reconstructJavaScriptArtifact({ input_path: root }); + const graph = first.graph; - expect(second.graph).toEqual(graph); - expect(sourceModule(graph, "main.cjs")).toBeDefined(); - expect(sourceModule(graph, "consumer.mjs")).toBeDefined(); - expect(sourceModule(graph, "dependency.mjs")).toBeDefined(); + expect(second.graph).toEqual(graph); + expect(sourceModule(graph, "main.cjs")).toBeDefined(); + expect(sourceModule(graph, "consumer.mjs")).toBeDefined(); + expect(sourceModule(graph, "dependency.mjs")).toBeDefined(); - expect( - relationship(graph, { - kind: "require", - specifier: "./dependency.mjs", - resolvedPath: "dependency.mjs", - importedName: "value", - localName: "importedValue", + expect( + relationship(graph, { + kind: "require", + specifier: "./dependency.mjs", + resolvedPath: "dependency.mjs", + importedName: "value", + localName: "importedValue", + }), + ).toBeDefined(); + expect( + graph.edges.filter( + ({ relation, properties }) => + relation === "imports" && properties.specifier === "fixture-package", + ), + ).not.toEqual( + expect.arrayContaining([ + expect.objectContaining({ + properties: expect.objectContaining({ resolved_path: null }), }), - ).toBeDefined(); - expect( - graph.edges.filter( - ({ relation, properties }) => - relation === "imports" && - properties.specifier === "fixture-package", - ), - ).not.toEqual( - expect.arrayContaining([ - expect.objectContaining({ - properties: expect.objectContaining({ resolved_path: null }), - }), - ]), - ); - expect( - relationship(graph, { - kind: "require", - specifier: "fixture-package", - resolvedPath: "node_modules/fixture-package/cjs.cjs", - localName: "packageValue", - }), - ).toBeDefined(); - expect( - relationship(graph, { - kind: "import", - specifier: "fixture-package", - resolvedPath: "node_modules/fixture-package/esm.mjs", - importedName: "default", - localName: "packageDefault", - }), - ).toBeDefined(); - expect( - relationship(graph, { - kind: "import", - specifier: "./values.js", - resolvedPath: "values.js", - importedName: "value", - localName: "alias", - }), - ).toBeDefined(); - expect( - relationship(graph, { - kind: "re-export", - specifier: "./star.js", - resolvedPath: "star.js", - importedName: "*", - exportedName: "*", - }), - ).toBeDefined(); + ]), + ); + expect( + relationship(graph, { + kind: "require", + specifier: "fixture-package", + resolvedPath: "node_modules/fixture-package/cjs.cjs", + localName: "packageValue", + }), + ).toBeDefined(); + expect( + relationship(graph, { + kind: "import", + specifier: "fixture-package", + resolvedPath: "node_modules/fixture-package/esm.mjs", + importedName: "default", + localName: "packageDefault", + }), + ).toBeDefined(); + expect( + relationship(graph, { + kind: "import", + specifier: "./values.js", + resolvedPath: "values.js", + importedName: "value", + localName: "alias", + }), + ).toBeDefined(); + expect( + relationship(graph, { + kind: "re-export", + specifier: "./star.js", + resolvedPath: "star.js", + importedName: "*", + exportedName: "*", + }), + ).toBeDefined(); - const forwarded = exportNode(graph, "main.cjs", "forwarded"); - expect(forwarded).toBeDefined(); - expect( - graph.edges.some( - ({ source_node_id, relation, properties }) => - source_node_id === forwarded?.node_id && - relation === "imports" && - properties.resolved_path === "dependency.mjs" && - properties.imported_name === "value", - ), - ).toBe(true); + const forwarded = exportNode(graph, "main.cjs", "forwarded"); + expect(forwarded).toBeDefined(); + expect( + graph.edges.some( + ({ source_node_id, relation, properties }) => + source_node_id === forwarded?.node_id && + relation === "imports" && + properties.resolved_path === "dependency.mjs" && + properties.imported_name === "value", + ), + ).toBe(true); - expect( - graph.edges.find( - ({ relation, properties }) => - relation === "imports" && - properties.kind === "dynamic-import" && - properties.resolved_path === "lazy.js", - ), - ).toMatchObject({ - source_node_id: sourceModule(graph, "consumer.mjs")?.node_id, - }); + expect( + graph.edges.find( + ({ relation, properties }) => + relation === "imports" && + properties.kind === "dynamic-import" && + properties.resolved_path === "lazy.js", + ), + ).toMatchObject({ + source_node_id: sourceModule(graph, "consumer.mjs")?.node_id, + }); - expect( - relationship(graph, { - kind: "require", - specifier: "./data.json", - resolvedPath: "data.json", - })?.properties, - ).toMatchObject({ - target_file_kind: "json", - target_json_status: "included", - }); - expect( - relationship(graph, { - kind: "require", - specifier: "./broken.json", - resolvedPath: "broken.json", - })?.properties, - ).toMatchObject({ - target_file_kind: "json", - target_json_status: "invalid", - }); - expect( - relationship(graph, { - kind: "require", - specifier: "electron", - })?.properties, - ).toMatchObject({ resolution_status: "external", resolved_path: null }); - expect( - graph.edges.find( - ({ relation, properties }) => - relation === "imports" && - properties.kind === "require" && - properties.specifier === null, - )?.properties, - ).toMatchObject({ resolved_path: null }); + expect( + relationship(graph, { + kind: "require", + specifier: "./data.json", + resolvedPath: "data.json", + })?.properties, + ).toMatchObject({ + target_file_kind: "json", + target_json_status: "included", + }); + expect( + relationship(graph, { + kind: "require", + specifier: "./broken.json", + resolvedPath: "broken.json", + })?.properties, + ).toMatchObject({ + target_file_kind: "json", + target_json_status: "invalid", + }); + expect( + relationship(graph, { + kind: "require", + specifier: "electron", + })?.properties, + ).toMatchObject({ resolution_status: "external", resolved_path: null }); + expect( + graph.edges.find( + ({ relation, properties }) => + relation === "imports" && + properties.kind === "require" && + properties.specifier === null, + )?.properties, + ).toMatchObject({ resolved_path: null }); - expect(first.statistics.parse_failures).toBe(1); - expect(graph.coverage).toMatchObject({ - status: "partial", - truncated: false, - }); - expect(graph.limitations.join(" ")).toMatch(/incomplete/iu); - } finally { - await rm(root, { recursive: true, force: true }); - } + expect(first.statistics.parse_failures).toBe(1); + expect(graph.coverage).toMatchObject({ + status: "partial", + truncated: false, + }); + expect(graph.limitations.join(" ")).toMatch(/incomplete/iu); }); }); describe("CommonJS and ESM relationship limits", () => { it("retains exact semantic omissions when the relationship budget truncates", async () => { const root = await createTestTempDirectory("rea-module-limit-"); - try { - await writeFile( - join(root, "exports.mjs"), - "export const first = 1; export const second = 2; export const third = 3;", - ); - const result = await reconstructJavaScriptArtifact({ - input_path: root, - limits: { max_findings: 1 }, - }); + await writeFile( + join(root, "exports.mjs"), + "export const first = 1; export const second = 2; export const third = 3;", + ); + const result = await reconstructJavaScriptArtifact({ + input_path: root, + limits: { max_findings: 1 }, + }); - expect(result.statistics.truncated_scopes).toBeGreaterThan(0); - expect( - result.graph.nodes.filter((node) => - node.observations.some( - ({ properties }) => properties.semantic_role === "export-binding", - ), + expect(result.statistics.truncated_scopes).toBeGreaterThan(0); + expect( + result.graph.nodes.filter((node) => + node.observations.some( + ({ properties }) => properties.semantic_role === "export-binding", ), - ).toHaveLength(1); - expect(result.graph.coverage).toMatchObject({ - status: "partial", - truncated: true, - omitted_count: 2, - }); - } finally { - await rm(root, { recursive: true, force: true }); - } + ), + ).toHaveLength(1); + expect(result.graph.coverage).toMatchObject({ + status: "partial", + truncated: true, + omitted_count: 2, + }); }); }); diff --git a/tests/composition/runtime-observation/javascriptRuntimeReconciliation.test.ts b/tests/composition/runtime-observation/javascriptRuntimeReconciliation.test.ts index eaa5246c93..57e0f4ea5f 100644 --- a/tests/composition/runtime-observation/javascriptRuntimeReconciliation.test.ts +++ b/tests/composition/runtime-observation/javascriptRuntimeReconciliation.test.ts @@ -1,7 +1,7 @@ -import { mkdir, rm, writeFile } from "node:fs/promises"; +import { mkdir, writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { afterEach, expect, it } from "vitest"; +import { expect, it } from "vitest"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; @@ -18,19 +18,8 @@ import { createElectronActiveObservationFixtureResult } from "../../fixtures/ele const SOURCE = `const worker = new Worker("./worker.js");\nexport const observed = worker;\n`; -const temporary: string[] = []; - -afterEach(async () => { - await Promise.all( - temporary - .splice(0) - .map(async (path) => rm(path, { recursive: true, force: true })), - ); -}); - it("matches renderer, frame, script bytes, and worker without claiming execution", async () => { const fixture = await applicationFixture(); - temporary.push(fixture); const staticEvidence = await analyzeFixture(fixture); const runtimeEvidence = electronRuntimeEvidence(fixture, SOURCE); @@ -70,6 +59,17 @@ it("matches renderer, frame, script bytes, and worker without claiming execution }), ]), ); + const matched = result.reconciliations.find( + ({ status }) => status === "matched", + ); + if (matched === undefined) + throw new TypeError("Expected one matched runtime reconciliation"); + expect( + javascriptRuntimeReconciliationResultSchema.safeParse({ + ...result, + reconciliations: [{ ...matched, static_node_id: null }], + }).success, + ).toBe(false); expect(result.static_load_states).toEqual( expect.arrayContaining([ expect.objectContaining({ @@ -107,7 +107,6 @@ it("matches renderer, frame, script bytes, and worker without claiming execution it("reports a captured digest disagreement instead of accepting a path match", async () => { const fixture = await applicationFixture(); - temporary.push(fixture); const staticEvidence = await analyzeFixture(fixture); const runtimeEvidence = electronRuntimeEvidence( fixture, @@ -131,7 +130,6 @@ it("reports a captured digest disagreement instead of accepting a path match", a it("keeps source-map declarations outside primary matching authority", async () => { const fixture = await applicationFixture(); - temporary.push(fixture); const staticEvidence = await analyzeFixture(fixture); const runtimeEvidence = electronRuntimeEvidence(fixture, SOURCE); const result = reconcileJavaScriptRuntime({ @@ -148,7 +146,6 @@ it("keeps source-map declarations outside primary matching authority", async () it("reconciles active Electron as a partial target-only runtime capture", async () => { const fixture = await applicationFixture(); - temporary.push(fixture); const staticEvidence = await analyzeFixture(fixture); const applicationPath = join(fixture, "main.js"); const input = electronActiveObservationInputSchema.parse({ @@ -191,7 +188,6 @@ it("reconciles active Electron as a partial target-only runtime capture", async it("hashes the retained Electron scenario projection, not raw selectors or secrets", async () => { const fixture = await applicationFixture(); - temporary.push(fixture); const applicationPath = join(fixture, "main.js"); const makeInput = (secret: string, selector: string) => electronActiveObservationInputSchema.parse({ @@ -231,7 +227,6 @@ it("imports an operator-provided cache layer through an explicit file mapping", const application = await applicationFixture(); const cache = await createTestTempDirectory("rea-runtime-cache-static-"); const runtimeCache = await createTestTempDirectory("rea-runtime-cache-live-"); - temporary.push(application, cache, runtimeCache); const cacheSource = "export const cachedFeature = 'fixture';\n"; await mkdir(join(cache, "mapped")); await Promise.all([ diff --git a/tests/composition/setup-lifecycle/directAnalysisPermissions.test.ts b/tests/composition/setup-lifecycle/directAnalysisPermissions.test.ts index 691a700b0d..c16b0ff5e9 100644 --- a/tests/composition/setup-lifecycle/directAnalysisPermissions.test.ts +++ b/tests/composition/setup-lifecycle/directAnalysisPermissions.test.ts @@ -1,4 +1,4 @@ -import { chmod, rm, writeFile } from "node:fs/promises"; +import { chmod, writeFile } from "node:fs/promises"; import { join } from "node:path"; import { afterEach, describe, expect, it, vi } from "vitest"; @@ -23,18 +23,13 @@ import { import { HOPPER_PROVIDER_IDENTITY } from "../../../src/hopper/HopperProvider.js"; import { resolveHopperAnalysisProfile } from "../../../src/hopper/HopperAnalysisProfile.js"; -let directory: string | undefined; - afterEach(async () => { vi.unstubAllEnvs(); - if (directory !== undefined) - await rm(directory, { recursive: true, force: true }); - directory = undefined; }); describe("direct analysis snapshot permissions", () => { it("forwards the CLI provider selector ahead of the environment preference", async () => { - directory = await createTestTempDirectory("rea-direct-provider-"); + const directory = await createTestTempDirectory("rea-direct-provider-"); const targetPath = join(directory, "fixture.hop"); await writeFile(targetPath, "fixture"); vi.stubEnv("HOPPER_LAUNCHER_PATH", process.execPath); @@ -61,7 +56,7 @@ describe("direct analysis snapshot permissions", () => { }); it("replays a cache hit with snapshot read authority only", async () => { - directory = await createTestTempDirectory("rea-direct-snapshot-"); + const directory = await createTestTempDirectory("rea-direct-snapshot-"); const snapshotPath = join(directory, "analysis.json"); const launcherPath = join(directory, "hopper-launcher"); await writeFile(launcherPath, "fixture Hopper launcher"); diff --git a/tests/composition/setup-lifecycle/permissionAuthority.test.ts b/tests/composition/setup-lifecycle/permissionAuthority.test.ts index 3d19ddcdf0..5a8980bcc5 100644 --- a/tests/composition/setup-lifecycle/permissionAuthority.test.ts +++ b/tests/composition/setup-lifecycle/permissionAuthority.test.ts @@ -37,11 +37,11 @@ describe("permission authority", () => { operation_identity: "read:inside-ceiling", }, "read", - { elicitationSupported: true }, + { remediation: "elicit" }, ); expect(inside).toMatchObject({ ok: false, - error: { elicitationSupported: true, restartRequired: false }, + error: { remediation: "elicit" }, }); const outside = await authority.value.createConnectionAuthority().authorize( @@ -50,11 +50,11 @@ describe("permission authority", () => { operation_identity: "read:outside-ceiling", }, "read", - { elicitationSupported: true }, + { remediation: "elicit" }, ); expect(outside).toMatchObject({ ok: false, - error: { elicitationSupported: false, restartRequired: true }, + error: { remediation: "restart" }, }); }); diff --git a/tests/conformance/providers/conformancePackage.test.ts b/tests/conformance/providers/conformancePackage.test.ts index 208c8327b9..cb55490c96 100644 --- a/tests/conformance/providers/conformancePackage.test.ts +++ b/tests/conformance/providers/conformancePackage.test.ts @@ -2,17 +2,12 @@ import { describe, expect, it } from "vitest"; import { CONFORMANCE_PACKAGE_VERSION, - conformancePackageSchema, - computePackageId, createConformancePackage, - validateConformancePackage, - type ScenarioManifest, - type ReplayPlan, - type ShimPlan, - type ExpectedEvidence, + parseConformancePackage, + type ConformancePackageInput, } from "../../../src/domain/conformancePackage.js"; -const validPackage = createConformancePackage({ +const validPackageInput: ConformancePackageInput = { schema_version: CONFORMANCE_PACKAGE_VERSION, name: "test-fixture", description: "A test conformance fixture", @@ -63,119 +58,147 @@ const validPackage = createConformancePackage({ timing_tolerance_ms: 100, }, ], -}); +}; -describe("conformance package format", () => { - it("validates a well-formed package", () => { - const result = validateConformancePackage(validPackage); - expect(result.ok).toBe(true); +const validPackage = createConformancePackage(validPackageInput); + +describe("conformance package parsing", () => { + it("parses a well-formed content-addressed package", () => { + expect(parseConformancePackage(validPackage)).toEqual({ + ok: true, + value: validPackage, + }); }); - it("rejects invalid schema version", () => { - const result = validateConformancePackage({ - ...validPackage, - schema_version: 999, - }); - expect(result.ok).toBe(false); + it("rejects invalid package structure", () => { + expect( + parseConformancePackage({ ...validPackage, schema_version: 999 }), + ).toMatchObject({ ok: false, error: { kind: "invalid_package" } }); }); it("rejects duplicate scenario IDs", () => { - const result = validateConformancePackage({ - ...validPackage, - scenarios: [validPackage.scenarios[0], validPackage.scenarios[0]], + expect( + parseConformancePackage({ + ...validPackage, + scenarios: [validPackage.scenarios[0], validPackage.scenarios[0]], + }), + ).toMatchObject({ + ok: false, + error: { kind: "duplicate_scenario", scenario_id: "s1" }, }); - expect(result.ok).toBe(false); }); - it("rejects replay plan referencing non-existent scenario", () => { - const result = validateConformancePackage({ - ...validPackage, - replay_plans: [ - { - scenario_id: "nonexistent", - steps: [ - { - step_id: "step1", - action: "run", - arguments: [], - timeout_ms: 1000, - }, - ], - environment: {}, - }, - ], - }); - expect(result.ok).toBe(false); - }); - - it("rejects verifier contract referencing non-existent scenario", () => { - const result = validateConformancePackage({ - ...validPackage, - verifier_contracts: [ - { - scenario_id: "nonexistent", - dimensions: [ - { name: "exit_code", required: true, comparison: "exact" }, - ], - timing_tolerance_ms: 0, - }, - ], - }); - expect(result.ok).toBe(false); - }); - - it("rejects expected evidence referencing non-existent scenario", () => { - const result = validateConformancePackage({ - ...validPackage, - expected_evidence: [ - { - scenario_id: "nonexistent", - envelopes: [], - bundle: null, - required_dimensions: [], - }, - ], - }); - expect(result.ok).toBe(false); - }); - - it("computes a deterministic package ID", () => { - const id = computePackageId({ - ...validPackage, - }); - expect(id).toMatch(/^cp_[a-f0-9]{64}$/u); - // Same input yields same ID - const id2 = computePackageId({ - ...validPackage, - }); - expect(id).toBe(id2); - }); - - it("produces different IDs for different packages", () => { - const id1 = computePackageId({ ...validPackage, name: "packageA" }); - const id2 = computePackageId({ ...validPackage, name: "packageB" }); - expect(id1).not.toBe(id2); - }); - - it("uses all exported types", () => { - const scenario: ScenarioManifest = validPackage.scenarios[0]!; - expect(scenario.scenario_id).toBe("s1"); - - const replay: ReplayPlan = validPackage.replay_plans[0]!; - expect(replay.scenario_id).toBe("s1"); - - const shim: ShimPlan = validPackage.shim_plans[0] ?? { - scenario_id: "s1", + it.each([ + ["replay_plans", "replay_plans"], + ["shim_plans", "shim_plans"], + ["expected_evidence", "expected_evidence"], + ["verifier_contracts", "verifier_contracts"], + ] as const)("rejects an unknown scenario in %s", (field, section) => { + const existing = validPackage[field][0]; + const candidate = existing ?? { + scenario_id: "nonexistent", shims: [], }; - expect(shim.scenario_id).toBe("s1"); - - const evidence: ExpectedEvidence = validPackage.expected_evidence[0]!; - expect(evidence.scenario_id).toBe("s1"); + expect( + parseConformancePackage({ + ...validPackage, + [field]: [{ ...candidate, scenario_id: "nonexistent" }], + }), + ).toMatchObject({ + ok: false, + error: { + kind: "unknown_scenario_reference", + section, + scenario_id: "nonexistent", + }, + }); }); - it("parses via zod schema", () => { - const result = conformancePackageSchema.safeParse(validPackage); - expect(result.success).toBe(true); + it("requires one replay plan for every scenario", () => { + expect( + parseConformancePackage({ + ...validPackage, + scenarios: [ + ...validPackage.scenarios, + { + scenario_id: "s2", + name: "Second scenario", + description: "A second process scenario", + fixture_path: "tests/conformance/c/fixture2.c", + expected_exit_code: 0, + expected_patterns: [], + }, + ], + }), + ).toMatchObject({ + ok: false, + error: { + kind: "missing_scenario_reference", + section: "replay_plans", + scenario_id: "s2", + }, + }); + }); + + it("rejects duplicate per-scenario records", () => { + expect( + parseConformancePackage({ + ...validPackage, + verifier_contracts: [ + validPackage.verifier_contracts[0], + validPackage.verifier_contracts[0], + ], + }), + ).toMatchObject({ + ok: false, + error: { + kind: "duplicate_scenario_reference", + section: "verifier_contracts", + scenario_id: "s1", + }, + }); + }); + + it("rejects a stale package identifier", () => { + expect( + parseConformancePackage({ ...validPackage, name: "modified" }), + ).toMatchObject({ + ok: false, + error: { kind: "package_id_mismatch" }, + }); + }); +}); + +describe("conformance package construction", () => { + it("derives a deterministic identifier from parsed contents", () => { + const same = createConformancePackage(validPackageInput); + const changed = createConformancePackage({ + ...validPackageInput, + name: "another-package", + }); + + expect(same.package_id).toBe(validPackage.package_id); + expect(changed.package_id).not.toBe(validPackage.package_id); + }); + + it("applies schema defaults before committing the identifier", () => { + const { shim_plans: _shimPlans, ...withoutOptionalShimPlans } = + validPackageInput; + const created = createConformancePackage(withoutOptionalShimPlans); + + expect(created.shim_plans).toEqual([]); + expect(parseConformancePackage(created)).toEqual({ + ok: true, + value: created, + }); + }); + + it("cannot construct a package with contradictory scenario relations", () => { + expect(() => + createConformancePackage({ + ...validPackageInput, + scenarios: [...validPackage.scenarios, ...validPackage.scenarios], + }), + ).toThrow(/Duplicate scenario s1/u); }); }); diff --git a/tests/conformance/providers/conformanceReplay.test.ts b/tests/conformance/providers/conformanceReplay.test.ts index 30b6ee7a59..991f22c5a7 100644 --- a/tests/conformance/providers/conformanceReplay.test.ts +++ b/tests/conformance/providers/conformanceReplay.test.ts @@ -3,7 +3,7 @@ import { describe, expect, it } from "vitest"; import { CONFORMANCE_PACKAGE_VERSION, createConformancePackage, - type ConformancePackage, + type ConformancePackageInput, } from "../../../src/domain/conformancePackage.js"; import { createEvidence } from "../../../src/domain/evidence.js"; import { @@ -11,7 +11,7 @@ import { type ScenarioReplayResult, } from "../../../src/domain/conformanceReplay.js"; -const validPackage = createConformancePackage({ +const validPackageInput: ConformancePackageInput = { schema_version: CONFORMANCE_PACKAGE_VERSION, name: "test-fixture", description: "A test conformance fixture", @@ -56,7 +56,9 @@ const validPackage = createConformancePackage({ timing_tolerance_ms: 0, }, ], -}); +}; + +const validPackage = createConformancePackage(validPackageInput); async function passingRunner( scenarioId: string, @@ -123,7 +125,7 @@ describe("conformance CI replay", () => { { operation: "run", parameters: {}, result: { exit_code: 0 } }, ); const pkg = createConformancePackage({ - ...validPackage, + ...validPackageInput, expected_evidence: [ { scenario_id: "s1", @@ -158,11 +160,10 @@ describe("conformance CI replay", () => { }); it("counts all result types", async () => { - const base: ConformancePackage = validPackage; const multiPackage = createConformancePackage({ - ...base, + ...validPackageInput, scenarios: [ - base.scenarios[0]!, + ...validPackage.scenarios, { scenario_id: "s2", name: "Second scenario", @@ -173,7 +174,7 @@ describe("conformance CI replay", () => { }, ], replay_plans: [ - base.replay_plans[0]!, + ...validPackage.replay_plans, { scenario_id: "s2", steps: [ @@ -188,7 +189,7 @@ describe("conformance CI replay", () => { }, ], expected_evidence: [ - base.expected_evidence[0]!, + ...validPackage.expected_evidence, { scenario_id: "s2", envelopes: [], @@ -197,7 +198,7 @@ describe("conformance CI replay", () => { }, ], verifier_contracts: [ - base.verifier_contracts[0]!, + ...validPackage.verifier_contracts, { scenario_id: "s2", dimensions: [ @@ -224,3 +225,30 @@ describe("conformance CI replay", () => { expect(result.failed).toBe(1); }); }); + +describe("conformance replay package boundary", () => { + it("rejects shape-valid packages with broken scenario relations", async () => { + await expect( + replayConformancePackage( + { + ...validPackage, + replay_plans: [ + { + scenario_id: "missing", + steps: [ + { + step_id: "step1", + action: "run", + arguments: [], + timeout_ms: 1000, + }, + ], + environment: {}, + }, + ], + }, + {}, + ), + ).rejects.toThrow(/replay_plans references unknown scenario missing/u); + }); +}); diff --git a/tests/conformance/providers/managed/managedNativeVerification.test.ts b/tests/conformance/providers/managed/managedNativeVerification.test.ts index 3b64be66cd..7666bfc4f8 100644 --- a/tests/conformance/providers/managed/managedNativeVerification.test.ts +++ b/tests/conformance/providers/managed/managedNativeVerification.test.ts @@ -5,6 +5,7 @@ import { MANAGED_NATIVE_VERIFICATION_EXAMPLE } from "../../../../src/contracts/m import { createEvidence } from "../../../../src/domain/evidence.js"; import { managedNativeVerificationInputSchema, + managedNativeVerificationResultSchema, verifyManagedNativeBoundaries, } from "../../../../src/domain/managedNativeVerification.js"; import { inspectMachoSchema } from "../../../../src/domain/nativeInspection.js"; @@ -206,3 +207,48 @@ describe("managed/native boundary verification", () => { expect(evidence.value.evidence_links).toHaveLength(2); }); }); + +describe("managed/native verification result algebra", () => { + it("rejects states without their required native match", () => { + const result = verifyManagedNativeBoundaries(exampleInput()); + const verification = result.pinvoke_imports[0]; + expect(verification).toBeDefined(); + if (verification === undefined) return; + + expect( + managedNativeVerificationResultSchema.safeParse({ + ...result, + pinvoke_imports: [ + { + ...verification, + matched_native: null, + candidates: [], + }, + ], + }).success, + ).toBe(false); + expect( + managedNativeVerificationResultSchema.safeParse({ + ...result, + pinvoke_imports: [ + { + ...verification, + status: "unresolved", + basis: "no-native-candidate", + confidence: "unknown", + }, + ], + }).success, + ).toBe(false); + expect( + managedNativeVerificationResultSchema.safeParse({ + ...result, + coverage: { + status: "complete-within-inputs", + omitted_native_observations: 0, + omitted_candidates: 1, + }, + }).success, + ).toBe(false); + }); +}); diff --git a/tests/fixtures/binarySession.ts b/tests/fixtures/binarySession.ts new file mode 100644 index 0000000000..0af3fa68d6 --- /dev/null +++ b/tests/fixtures/binarySession.ts @@ -0,0 +1,34 @@ +import type { BinaryTarget } from "../../src/domain/binaryTarget.js"; +import type { AnalysisError } from "../../src/domain/errors.js"; +import type { Result } from "../../src/domain/result.js"; +import type { + AnalysisClientFactory, + AnalysisProfileResolution, + AnalysisProfileResolutionOptions, + AnalysisProvider, +} from "../../src/application/AnalysisProvider.js"; +import { BinarySession } from "../../src/application/BinarySession.js"; +import { SessionProviderRouter } from "../../src/application/SessionProviderRouter.js"; + +type TestBinarySessionOptions = { + readonly resolveAnalysisProfile?: ( + target: BinaryTarget, + options?: AnalysisProfileResolutionOptions, + ) => Promise>; +}; + +type TestBinarySessionOptionsOrResolver = + | TestBinarySessionOptions + | TestBinarySessionOptions["resolveAnalysisProfile"]; + +/** Create a focused session around a test-owned provider or client factory. */ +export const createTestBinarySession = ( + provider: AnalysisProvider | AnalysisClientFactory, + optionsOrResolver?: TestBinarySessionOptionsOrResolver, +): BinarySession => { + const options = + typeof optionsOrResolver === "function" + ? { resolveAnalysisProfile: optionsOrResolver } + : (optionsOrResolver ?? {}); + return new BinarySession(SessionProviderRouter.single(provider, options)); +}; diff --git a/tests/fixtures/processCapture.ts b/tests/fixtures/processCapture.ts new file mode 100644 index 0000000000..c034399766 --- /dev/null +++ b/tests/fixtures/processCapture.ts @@ -0,0 +1,36 @@ +import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "../../src/contracts/processCaptureExample.js"; +import { + compareProcessCaptures, + parseProcessCapture, + processCaptureSchema, + type UnverifiedProcessCapture, +} from "../../src/domain/processCapture.js"; + +export const emptyProcessCapture = () => + parseProcessCapture(EMPTY_PROCESS_CAPTURE_EXAMPLE); + +export const emptyUnverifiedProcessCapture = (): UnverifiedProcessCapture => + processCaptureSchema.parse(EMPTY_PROCESS_CAPTURE_EXAMPLE); + +export const processCaptureIssues = ( + capture: UnverifiedProcessCapture, +): readonly { readonly path: string; readonly message: string }[] => { + const parsed = processCaptureSchema.safeParse(capture); + return parsed.success + ? [] + : parsed.error.issues.map((issue) => ({ + path: issue.path.join("."), + message: issue.message, + })); +}; + +export const compareUnverifiedProcessCaptures = ( + left: UnverifiedProcessCapture, + right: UnverifiedProcessCapture, + options?: Parameters[2], +): ReturnType => + compareProcessCaptures( + parseProcessCapture(left), + parseProcessCapture(right), + options, + ); diff --git a/tests/process-global/vitestConfiguration.test.ts b/tests/process-global/vitestConfiguration.test.ts index 25f66306a2..cd95402590 100644 --- a/tests/process-global/vitestConfiguration.test.ts +++ b/tests/process-global/vitestConfiguration.test.ts @@ -53,6 +53,14 @@ describe("Vitest project configuration", () => { expect(TEST_PROJECTS.map(({ name }) => name).sort()).toEqual( EXPECTED_PROJECTS, ); + const sharedModuleProjects = new Set(["domain", "services"]); + expect( + TEST_PROJECTS.every(({ name, isolate }) => + sharedModuleProjects.has(name) + ? isolate === false + : isolate === undefined, + ), + ).toBe(true); }); it("classifies every deterministic test in exactly one project", async () => { diff --git a/tests/support/cli/workspaceCliFixture.ts b/tests/support/cli/workspaceCliFixture.ts new file mode 100644 index 0000000000..10184d812e --- /dev/null +++ b/tests/support/cli/workspaceCliFixture.ts @@ -0,0 +1,19 @@ +import { cliTest } from "./cliFixture.js"; +import { + createTestWorkspace, + removeTestWorkspace, + type TestWorkspace, +} from "../workspace/workspaceFixture.js"; + +/** CLI fixture with an optional test-scoped filesystem workspace. */ +export const workspaceCliTest = cliTest.extend<{ workspace: TestWorkspace }>({ + // oxlint-disable-next-line no-empty-pattern -- Vitest parses fixture dependencies from object destructuring. + workspace: async ({}, use) => { + const workspace = await createTestWorkspace(); + try { + await use(workspace); + } finally { + await removeTestWorkspace(workspace.root); + } + }, +}); diff --git a/tests/support/fixtures.ts b/tests/support/fixtures.ts deleted file mode 100644 index 672c6fdeef..0000000000 --- a/tests/support/fixtures.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { cliTest } from "./cli/cliFixture.js"; -import { - createTestLoopback, - type TestLoopback, -} from "./network/loopbackFixture.js"; -import { createTestMcp, type TestMcp } from "./mcp/mcpFixture.js"; -import { - createTestWorkspace, - removeTestWorkspace, - type TestWorkspace, -} from "./workspace/workspaceFixture.js"; - -const withWorkspace = cliTest.extend<{ workspace: TestWorkspace }>({ - // oxlint-disable-next-line no-empty-pattern -- Vitest parses fixture dependencies from object destructuring. - workspace: async ({}, use) => { - const workspace = await createTestWorkspace(); - try { - await use(workspace); - } finally { - await removeTestWorkspace(workspace.root); - } - }, -}); - -const withLoopback = withWorkspace.extend<{ loopback: TestLoopback }>({ - // oxlint-disable-next-line no-empty-pattern -- Vitest parses fixture dependencies from object destructuring. - loopback: async ({}, use) => { - const loopback = createTestLoopback(); - try { - await use(loopback); - } finally { - await loopback.close(); - } - }, -}); - -/** Vitest API with all reusable, test-scoped REA resource fixtures. */ -export const fixtureTest = withLoopback.extend<{ mcp: TestMcp }>({ - // oxlint-disable-next-line no-empty-pattern -- Vitest parses fixture dependencies from object destructuring. - mcp: async ({}, use) => { - const mcp = createTestMcp(); - try { - await use(mcp); - } finally { - await mcp.close(); - } - }, -}); - -export type { CliInvocation, CliResult, TestCli } from "./cli/cliFixture.js"; -export type { - LoopbackEndpoint, - TestLoopback, -} from "./network/loopbackFixture.js"; -export type { McpClientIdentity, TestMcp } from "./mcp/mcpFixture.js"; -export type { - ProcessResult, - ProcessRunOptions, - TestProcesses, -} from "./process/processFixture.js"; -export type { TestWorkspace } from "./workspace/workspaceFixture.js"; diff --git a/tests/support/network/loopbackFixture.ts b/tests/support/network/loopbackFixture.ts deleted file mode 100644 index 404222a7bb..0000000000 --- a/tests/support/network/loopbackFixture.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { createServer as createHttpServer } from "node:http"; -import type { RequestListener } from "node:http"; -import type { AddressInfo, Server, Socket } from "node:net"; - -/** A listening server bound to an ephemeral IPv4 loopback port. */ -export interface LoopbackEndpoint { - readonly host: "127.0.0.1"; - readonly port: number; - readonly origin: string; -} - -/** Registry for loopback servers and accepted sockets owned by one test. */ -export interface TestLoopback { - listen(server: Server): Promise; - http(listener: RequestListener): Promise; - close(): Promise; -} - -const closeServer = (server: Server): Promise => - new Promise((resolve, reject) => { - if (!server.listening) { - resolve(); - return; - } - server.close((error) => { - if (error === undefined) resolve(); - else reject(error); - }); - }); - -/** Create a loopback registry for a fixture composition root. */ -export const createTestLoopback = (): TestLoopback => { - const servers: Server[] = []; - const sockets = new Set(); - - const listen = async (server: Server): Promise => { - server.on("connection", (socket) => { - sockets.add(socket); - socket.once("close", () => sockets.delete(socket)); - }); - await new Promise((resolve, reject) => { - server.once("error", reject); - server.listen(0, "127.0.0.1", () => { - server.removeListener("error", reject); - resolve(); - }); - }); - servers.push(server); - const address = server.address() as AddressInfo; - return { - host: "127.0.0.1", - port: address.port, - origin: `http://127.0.0.1:${address.port}`, - }; - }; - - return { - listen, - http: (listener) => listen(createHttpServer(listener)), - close: async () => { - for (const socket of sockets) socket.destroy(); - const results = await Promise.allSettled( - [...servers].reverse().map(closeServer), - ); - const failure = results.find( - (result): result is PromiseRejectedResult => - result.status === "rejected", - ); - if (failure !== undefined) throw failure.reason; - }, - }; -}; diff --git a/tsconfig.build.json b/tsconfig.build.json index a07edf91b6..9ab8343929 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -7,5 +7,11 @@ "types": ["node"] }, "include": ["src/**/*.ts"], - "exclude": ["src/**/*.test.ts", "tests", "dist", "node_modules"] + "exclude": [ + "src/**/*.fixture.ts", + "src/**/*.test.ts", + "tests", + "dist", + "node_modules" + ] } diff --git a/vitest.config.ts b/vitest.config.ts index 42c847e4b0..d46c9591e4 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -22,19 +22,26 @@ export const MAX_TEST_WORKERS = LOCAL_ONLY export const TEST_PROJECTS = [ { name: "domain", - include: ["src/domain/**/*.test.ts"], + include: ["src/{contracts,domain}/**/*.test.ts"], pool: "threads" as const, maxWorkers: MAX_TEST_WORKERS, + // Domain and contract modules are pure and own no process-global state, so + // per-file module isolation adds startup cost without protecting a seam. + isolate: false, }, { name: "services", include: ["src/application/**/*.test.ts"], pool: "threads" as const, maxWorkers: MAX_TEST_WORKERS, + // Service tests use recording ports and own no process-global state. Share + // their module graph so file startup does not dominate the lane. + isolate: false, }, { name: "adapters", include: [ + "src/config*.test.ts", "src/{artifacts,browser,dotnet,ghidra,hopper,native,process,reference,replay}/**/*.test.ts", ], pool: "forks" as const,